Picture this: it's Friday. You run a staffing agency with 25 contractors on assignment, each working 40 hours a week at a $20/hour pay rate. Payroll, with employer-side taxes, is roughly $22,000 hitting your bank account on Monday. Your largest client signed a Net-60 master services agreement. The first invoice doesn't arrive in your account until late July.
You are, in effect, a short-term lender to your customers — financing their workforce out of your own pocket. Every staffing agency that scales runs into this math sooner or later, and the ones that survive aren't necessarily the ones with the best recruiters. They're the ones whose books actually tell them where the money is, where it isn't, and how thin the spread really is once the burden is properly loaded.
This guide walks through the accounting that holds a staffing agency together: how to price a bill rate above a fully burdened pay rate, how to read gross margin by placement type so you can see which lines of business are actually paying the bills, and how to account for invoice factoring without quietly losing the spread you worked so hard to win.
Why Staffing Agency Books Look Different From a Normal Service Business
Most service businesses sell labor they perform themselves. Staffing agencies sell labor someone else performs, while remaining legally on the hook as the employer of record. That subtle difference rearranges almost every line on the income statement.
A few consequences:
- Revenue is gross, not net. You bill the client for the worker's hourly rate plus your markup. The full invoice amount is your revenue. The worker's wages and employer taxes are cost of services, not a deduction from revenue.
- Cost of services is dominated by direct labor and burden. Salaries and wages of contract employees, plus employer payroll taxes, workers' compensation insurance, and any benefits, sit in cost of services — not in operating expenses.
- Working capital is enormous relative to revenue. You typically pay workers weekly or biweekly while clients pay on Net-30 to Net-60 terms. That gap is the structural cash flow problem of the entire industry.
- Gross margin is the only honest profitability metric. A staffing agency with a 30% gross margin and a staffing agency with an 18% gross margin look identical on the revenue line. They are not similar businesses.
If your chart of accounts hides any of these — for example, by netting wages against revenue or by lumping contractor wages with W-2 internal staff — you are flying blind. Fix the chart of accounts first; everything else flows from that.
The Core Identity: Bill Rate, Pay Rate, Burden, and Markup
Almost every conversation in staffing finance comes back to four numbers. Get them straight in your head and you will never be confused again.
- Pay rate: the hourly wage you pay the contract worker on assignment. The number that goes on their paycheck stub.
- Bill rate: the hourly amount you invoice the client for that worker's time. The number on your invoice.
- Burden: the employer-side costs you incur because you employ the worker — payroll taxes, workers' comp, unemployment insurance, benefits, and any per-state mandated costs.
- Markup: the percentage by which the bill rate exceeds the pay rate.
The identity to keep on a sticky note:
Gross profit per hour = Bill rate − Pay rate − Burden per hour
Gross margin % = Gross profit per hour ÷ Bill rate
Markup % = (Bill rate − Pay rate) ÷ Pay rateThe trap most new owners fall into is confusing markup with margin. A 50% markup is not a 50% margin. If pay rate is $20 and you mark it up 50%, the bill rate is $30. Gross profit before burden is $10. Gross margin before burden is $10/$30 = 33%. After burden of, say, $4 per hour, gross margin is $6/$30 = 20%.
Build your bill rate from a target gross margin, not from a markup that sounds nice. The math goes:
Bill rate = (Pay rate + Burden per hour) ÷ (1 − Target gross margin)If pay is $20, burden is $4, and you want a 25% gross margin, your bill rate has to be $32. A client comparison shop offering $28 may look like a $4-an-hour negotiation. It's actually the difference between hitting your target and running at single-digit margin.
What Goes Into the Burden, and Why It Changes Constantly
Burden is the leakiest number in a staffing agency. Owners frequently underestimate it because they price using only FICA, then discover at year-end that workers' comp audits and SUTA experience-rate jumps have eaten 200 basis points of margin.
A reasonable starting decomposition for a U.S. staffing agency:
- FICA — employer share: 7.65% of gross wages (6.2% Social Security up to the wage base, plus 1.45% Medicare on all wages).
- FUTA: Federal unemployment, effectively 0.6% on the first $7,000 of each employee's wages after the state credit. Sounds small, but in light-industrial staffing with high turnover, you hit the cap on almost every worker, so it can be a real line item.
- SUTA: State unemployment, highly variable. New employer rates often run 2–4%, and experience-rated agencies in high-turnover sectors can sit at 5–7% or higher on the state's taxable wage base.
- Workers' compensation insurance: This is the variable that breaks budgets. A clerical class code might run under $0.50 per $100 of payroll. A roofing or warehouse code can run $10+ per $100 of payroll, which is 10% of wages on its own. Job class code accuracy at the placement level is non-negotiable.
- Benefits and ACA requirements: Health insurance, retirement match, sick leave mandated by city or state, holiday pay, and any benefits required to keep a particular contract.
- Other state and local taxes: Disability insurance contributions, paid family leave, local payroll taxes, and reemployment funds vary widely.
A practical convention: maintain a burden rate by worker class — for example, "office," "light industrial," "skilled trades," "healthcare RN" — and update it at least annually. A single blended company-wide burden rate is the fastest way to lose money on your highest-cost class codes because the office workers subsidize the warehouse workers.
Mapping It Onto a Real Chart of Accounts
The income statement structure that gives staffing owners actionable margin signals looks roughly like this:
Revenue
4100 Temporary staffing — billable hours
4200 Direct hire / permanent placement fees
4300 Temp-to-hire conversion fees
4400 Statement-of-work / project revenue
4500 Per diem / travel reimbursement (pass-through)
Cost of services
5100 Contractor wages — temporary
5110 Contractor overtime premium
5200 Employer payroll taxes — contractors
5300 Workers' compensation insurance — contractors
5400 Contractor benefits (health, PTO, sick)
5500 Recruiter commissions on placements
5600 Background checks, drug screens, onboarding
5700 Per diem and reimbursable expenses paid
Gross profit = Revenue − Cost of services
Operating expenses
6100 Internal staff salaries (recruiters, account managers)
6200 Internal staff payroll taxes and benefits
6300 Office rent, utilities, software
6400 Marketing, job board subscriptions
6500 Factoring fees and bank charges
6600 Insurance (general liability, professional, EPLI)Two design choices matter enormously:
- Recruiter commissions sit in cost of services, not operating expenses. That commission is variable with placements. Putting it in OpEx makes gross margin look healthier than it really is and distorts your unit economics.
- Per diem and travel reimbursements are passed through. Both revenue and the corresponding expense should net to roughly zero. Burying these in regular revenue inflates the top line and tanks the apparent gross margin.
If you are running plain-text books, this chart of accounts maps cleanly to Beancount's hierarchical account names — Income:Revenue:Temp:Hours, Expenses:CostOfServices:Wages:Temp, Expenses:CostOfServices:Burden:WorkersComp. Hierarchies give you both the placement-type granularity and the rolled-up gross margin in one pass.
Reading Gross Margin by Placement Type
A single company-wide gross margin tells you almost nothing. The same headline number can hide a healthy temp business subsidizing a money-losing perm desk, or vice versa. Slice gross margin by line of business and rough industry benchmarks become useful:
- Temporary / contract staffing: Most healthy agencies land at 18–25% gross margin after burden. Light industrial and high-volume admin tend to sit at the lower end; skilled trades, IT, and healthcare typically run higher.
- Direct hire / permanent placement: This is a fee-based line and runs at extraordinarily high gross margin — often 90%+ — because there are no ongoing payroll costs. The catch is that you still owe a recruiter commission and you carry the full risk of a fall-off (the placement quitting or being terminated within a guarantee period, often 30–90 days).
- Temp-to-hire: Effective margin runs higher than pure temp because of the conversion fee on the back end. Be careful to allocate that conversion fee to the right period — if the worker converts in month four, the fee earned in month four shouldn't retroactively inflate prior months' margin.
- Statement-of-work / project work: Treated more like consulting. Margin depends on how well the project was scoped. Use percentage-of-completion or milestone-based revenue recognition rather than billable hours.
A useful management report shows gross margin per placement, sortable by line of business, account, and recruiter. The placements where margin is below threshold are almost always either (a) priced before the latest workers' comp renewal, (b) ramping up with promised volume that never materialized, or (c) running uncontrolled overtime that you're billing at straight time. All three are fixable once you can see them.
Accurate bookkeeping is the difference between profit and the feeling of profit
Staffing agencies routinely tell stories of years where revenue grew sharply and ending cash was lower than the year before. The cause is almost always a combination of two things: bill rates that quietly fell behind a rising burden, and a working capital draw that was treated as success because the top line was up.
Tracking these items separately — pay, burden, and bill rate at the placement level; pass-through reimbursements outside of revenue; recruiter commissions inside cost of services — lets the income statement do its job. It tells you whether the business actually made money this month, before the bank balance has to tell you the same thing in October.
The Payroll-to-Payment Gap: Where Cash Actually Lives
Here is the math that keeps staffing owners up at night. Say you have a stable book of business with $1,000,000 in weekly billings. Workers are paid weekly. Clients pay on Net-45.
Outstanding receivables at any given time, in steady state, are roughly:
Average DSO × Weekly billings
= 45 days × ($1,000,000 ÷ 7)
≈ $6.4 millionThat $6.4 million is permanently tied up. It funds the weekly payroll runs that have already left your account but haven't yet come back as client cash. The only ways to reduce the gap are: get paid faster (negotiate shorter terms or offer prompt-pay discounts), pay workers slower (biweekly is fairly standard; less frequent than that hurts recruiting), or finance the gap externally.
Most growing staffing agencies finance it externally. Which brings us to the line item that confuses everyone: factoring.
Invoice Factoring and Payroll Funding: How to Account for It Without Losing the Spread
Invoice factoring is the most common form of working capital financing in staffing. The agency sells, or assigns, its receivables to a factor in exchange for an immediate advance — typically 80–95% of the invoice face value — with the remainder, less the factor's fee, paid out when the client pays the invoice.
The two structures you need to know:
- Recourse factoring: If the client never pays, the agency has to buy the invoice back. The factor only takes credit risk on the agency, not on the underlying client. Fees are lower; risk stays with you.
- Non-recourse factoring: The factor absorbs credit losses if the client becomes insolvent. Fees are higher, and the protection is narrower than people think — it almost never covers disputes, dilution, or short-payments. You can still get burned on a billing argument.
Fees are typically quoted either as a flat percentage per invoice (often 1–5% depending on terms and volume) or as a base advance fee plus a tiered time-based charge that escalates if the invoice ages.
The accounting choice is more interesting than it looks. There are two reasonable treatments:
-
Treat the advance as a secured loan. Receivables stay on your balance sheet. The advance is recorded as a liability. When the client pays the factor, you derecognize the receivable, retire the loan, and book the fee as factoring expense. This is appropriate when the agency retains significant risks and rewards — typically true under recourse factoring.
-
Treat the receivables as sold. Receivables come off the balance sheet at the time of assignment. The difference between face value and net proceeds is recorded as a loss on sale (or factoring expense). This is appropriate when the agency truly transfers control — closer to a non-recourse arrangement that genuinely transfers credit risk.
Whichever treatment you choose, two things absolutely must be done:
- Book factoring fees as an operating expense — never as a reduction of revenue. Netting fees against revenue makes your gross margin look healthier than it is and hides the real cost of working capital. The fee is a financing cost. Show it.
- Reconcile the factor's reserve account monthly. The factor holds back a percentage of each invoice that gets released when the client pays. That holdback is an asset on your books and is one of the most-frequently mis-stated items in staffing agency financials. A simple monthly reconciliation between the factor's statement and your reserve receivable account catches errors before they compound.
Five Operating Habits That Separate Profitable Staffing Books From Stressful Ones
After all the structure, profitability in staffing comes down to a few habits the bookkeeper, controller, and owner share:
- Reprice when burden changes, not at contract renewal. Workers' comp renewals, SUTA rate notices, and minimum wage changes all change your burden mid-contract. Build a rate-update calendar. The hardest conversation is asking a client for a pass-through; the more expensive conversation is the one you have with yourself a year later about why margins compressed.
- Run a weekly gross margin report by placement. Not monthly. Weekly. Margin drift on a single high-volume account can wipe out a month of profit before you see it on a monthly P&L.
- Track DSO at the client level, not the company level. A 45-day company average can be a healthy 30-day book plus one 90-day client who is silently breaking your cash flow. Identify the outliers, work them, or stop staffing them.
- Maintain a separate "client trust" mindset for per diem and reimbursements. Many agencies have lost money treating travel pass-throughs as revenue, then quietly absorbing scope creep on the expenses. A clean pass-through account makes this impossible.
- Close the books inside ten business days. Staffing is a high-velocity business where decisions need fresh data. A 30-day close means you're managing on stale information that no longer reflects current bill rates, current burden, or current cash.
Keep Your Staffing Agency's Finances Transparent and Audit-Ready
Staffing agencies live or die by the spread between bill rate and the fully burdened cost of delivering an hour of labor — and that spread can only be defended if your bookkeeping is granular enough to see it. Plain-text accounting is a natural fit for the industry: every placement, every burden component, and every factoring fee can be modeled with hierarchical accounts that roll up into the gross-margin views above, while staying readable to you, your CPA, and your factor's auditor. Beancount.io gives you that transparency in version-controlled, AI-ready form — no black-box ledger, no vendor lock-in. Get started for free and run your staffing books on a foundation that actually tells you where the money is.