Staffing is a margin business. An agency can fill every requisition a client sends and still lose money if it cannot see the spread on each placement. So before anything else, it pays to understand exactly how the money moves: who pays whom, what the markup actually covers, and where the profit ends up.
Every dollar an agency earns flows through two numbers: the bill rate charged to the client and the pay ratepaid to the worker. The gap between them, once employer costs are taken out, is the agency's gross margin. Everything else in this article is a variation on that one idea.
The three ways agencies get paid
Most staffing revenue arrives in one of three shapes.
1. Contract and temporary placements (markup on pay)
This is the bread and butter. The agency pays the worker an hourly rate and bills the client a higher one. The difference is set by a markup applied on top of pay. It is billed every hour the contractor works, week after week, for the length of the assignment.
2. Direct-hire placements (one-time fee)
When the agency places someone permanently, it charges the client a one-time fee, typically 15% to 30% of the candidate's first-year salary and most often around 20%. There is no ongoing pay or bill rate; the agency is paid once for making the match.
3. Statement of Work and project engagements (fixed or milestone fee)
Increasingly, clients buy outcomes rather than hours. Under a Statement of Work, the agency is paid against fixed deliverables or milestones rather than a straight hourly markup, which changes how margin is tracked but not the underlying goal.
Bill rate vs pay rate: the spread that pays for everything
On contract work, the markup looks like pure profit until you remember everything it has to cover first. The bill rate funds the worker's pay, the employer burden on that pay (payroll taxes, insurance, and any benefits), the agency's overhead and recruiting cost, and only then the margin the agency keeps.
A representative $95/hr contract placement at a $70/hr pay rate.
- Worker pay$70/hr · 74%
- Employer burden$8/hr · 8%
- Gross margin$17/hr · 18%
Markup and margin, in numbers
Take the placement above: a $70.00/hr pay rate billed at $112.00/hr. Markupis what you add on top of pay, measured against pay. Here that is ($112.00 − $70.00) / $70.00, or 60%. Margin is what you keep, measured against the bill. Of the $42.00 spread, $14.00 covers employer burden, leaving $28.00 in gross margin: $28.00 / $112.00, or 25%. The same placement is a 60% markup and a 25% margin at the same time, because the two percentages are measured against different numbers.
Why the markup depends on worker type and location
The burden line is not fixed; it depends on how the worker is engaged and where they are placed. When you pay a worker as a T4 or W-2 employee, you are the employer of record, so payroll taxes, workers' compensation, statutory contributions, and any benefits all land on you. The markup has to be larger just to reach the same margin. When you pay an incorporated contractorthrough their own company, you carry little or no employer burden, so a smaller markup can leave the same margin. Those employer costs also vary by jurisdiction, since workers' compensation, unemployment, and payroll tax rates differ from one state or province to the next across the US and Canada. Two workers at an identical pay rate, or the same worker in two different locations, can need very different markups to land the same profit.
Try it: what is your gross margin?
Numbers make this concrete. Drag the sliders below with your own bill rate, pay rate, and burden to see the gross margin per hour, the margin percentage, and the annual gross profit across a book of contractors.
What a healthy markup and margin look like
Markups on contract placements commonly run from roughly 30% to 75% on top of pay, depending on role complexity, pay level, and how much employer cost the agency carries. High-volume light-industrial work sits at the low end, while specialized or high-burden roles such as healthcare can run to 100% or more. After burden, gross margins on contract staffing frequently land in the low-to-mid 20% range, with higher-skill and project-based work running higher.
The agencies that win are not the ones with the highest markup. They are the ones who can see their real margin on every placement, the moment it changes.
Where margin quietly leaks
A margin business dies by a thousand small cuts, and almost all of them come from disconnected, manual back-office work:
- Re-keyed hours. The same timesheet entered into a VMS, then payroll, then billing is three chances to pay or bill the wrong number.
- Delayed invoicing.Every day between work performed and invoice sent stretches your DSO and starves the cash that funds next week's pay.
- Rate drift and missed expenses. Outdated bill rates and uncaptured expenses are silent underbilling you never see.
- Month-end-only visibility. If you find out a placement was unprofitable when finance closes the month, it is already too late to fix it.
Work order created
The placement is recorded and the contractor is onboarded.
Time approved
One timesheet clears its approval chain.
Pay calculated
Gross-to-net pay is worked out from those exact hours.
Client invoiced
The client invoice is generated from the same hours.
The fix is structural: capture each timesheet once and let it drive billing and pay from a single source of truth. That is exactly what automated billing and payroll calculations do when they share the same approved hours, which is why margin can update live instead of at month end.
The takeaway
Getting paid in staffing is simple to state and hard to run: charge a bill rate, pay a pay rate, and protect the margin in between. The agencies that hold onto that margin are the ones that treat the back office as a system rather than a stack of spreadsheets, so every placement is visible, accurate, and profitable by design.