One invoice, dozens of worker-weeks
Open a staffing agency invoice for a mid-size client and it usually runs several pages: a header with the client name and billing period, then a long table — one row per temp worker, per week, with regular hours, overtime hours, a bill rate, and an extended amount. The pay rate that determined what the agency actually paid that worker never appears on the invoice at all, because the client doesn't need to see it and the invoice was never built to show it. What the client sees is the top line; what the agency's margin actually was that week lives in a completely separate document — the payroll register or the timesheet system that calculated pay.
Answering the question every staffing controller eventually asks — did this invoice actually bill what the timesheets support, at the rate the contract specifies, with the margin the rate card promised — means reading the invoice and the timesheet side by side and checking one against the other. Neither document alone answers it; the invoice shows what was billed, the timesheet shows what was worked, and the payroll register shows what was paid, and none of the three volunteers how they compare to the other two.
Why a staffing invoice hides more than it shows
A staffing invoice carries a deceptively simple layout — client, worker, hours, rate, total — and that simplicity is exactly why the gaps underneath it are so easy to miss until a quarter closes and the realized margin doesn't match the forecast.
The pay rate never appears on the invoice
A client invoice shows bill rate and hours — the pay rate that determines margin lives in payroll, a separate system entirely, so the invoice alone can never confirm the spread it implies.
Overtime multipliers differ on each side
A client contract might specify 1.5x for hours over 40, while state law requires a different overtime calculation for the worker's actual pay — the two multipliers rarely match exactly, and the difference eats directly into margin.
Rate cards drift between contract renewals
A client negotiates a lower bill rate at renewal, or a cost-of-labor increase raises the pay rate without a matching bill rate adjustment, and the change can sit unnoticed for weeks inside a busy invoicing cycle.
Multiple clients means multiple invoice formats
An agency billing five clients through five different vendor management systems ends up with five structurally different invoice layouts for the same underlying concept — worker, hours, rate.
None of these four are a sign of anything being done wrong — they're the normal shape of how a staffing business operates across two rate structures at once, and they're exactly why comparing a bill rate against a rough sense of what margin should be rarely produces a confident answer, no matter how experienced the controller doing the comparing is. Reading the invoice and the timesheet together, rather than relying on that rough sense, is the only way to know for certain — and it gets faster every billing cycle, not slower.
What this doesn't do, stated up front
Doesn't set your bill rates or pay rates
Rate cards are negotiated with clients and set for workers by your own team. This confirms the rates the invoice and timesheet actually show — it doesn't decide what those rates should be.
Doesn't connect to a VMS, ATS or payroll system
There's no API, no login, no integration. You export or download the invoice, timesheet and payroll register yourself, the same way you already do, and upload them.
Doesn't run payroll or file taxes
Paying workers, withholding taxes and remitting payroll tax filings remain your payroll system's job — this reads what already happened, it doesn't process pay.
Doesn't dispute a short-paid invoice with the client
If a client's payment genuinely looks short against what was billed, raising it is a step you take — this surfaces the discrepancy clearly enough to make that conversation straightforward.
What's left is narrow, and it's exactly the part that quietly eats a controller's afternoon every billing cycle: turning an invoice and a timesheet into a clear answer about what the margin on each worker-week actually was.
What gets read
| Field | Source |
|---|---|
| Client, billing period, invoice total | Client invoice |
| Worker, hours worked, regular and overtime | Timesheet, invoice |
| Bill rate per worker | Client invoice |
| Pay rate per worker | Payroll register, pay stub |
| Client payment amount and date | Bank statement |
Five sources of truth, read as they actually exist — not summarized from memory, and not assumed to agree with each other until the matching step actually checks.
How a line gets matched to a worker and a week
Matching runs on worker name, week-ending date and hours together — not a single field, because a common name can appear across multiple clients, and a week-ending date alone doesn't distinguish between two workers on the same assignment.
| Match type | What confirms it |
|---|---|
| Straight time | Regular hours × bill rate equals the invoice line, hours match the timesheet |
| Overtime | Overtime hours flagged separately, multiplier confirmed against contract |
| Margin | Bill rate minus pay rate equals the per-hour spread the rate card specifies |
| Short pay | Client payment amount is less than the invoice total for that period |
A worker-week that fits cleanly into one of these lands with high confidence. One that doesn't — a name spelled differently between the invoice and the timesheet, or an hours figure that doesn't quite add up — is flagged for a quick manual confirm rather than guessed at silently.
One client invoice, reconciled
A weekly invoice covering four temp workers placed with a mid-size distribution client.
| Worker | Hours | Bill rate | Pay rate | Margin |
|---|---|---|---|---|
| J. Alvarez | 40 | $32.00 | $19.50 | $500.00 |
| T. Nguyen | 44 | $32.00 | $19.50 | $620.00 |
| M. Osei | 40 | $34.50 | $21.00 | $540.00 |
| R. Kowalski | 36 | $32.00 | $19.50 | $450.00 |
The invoice total, taken alone, tells the client what they owe and tells the agency almost nothing about whether the week was profitable. Read alongside the timesheets and the payroll register, T. Nguyen's overtime hours are confirmed to carry the correct 1.5x bill multiplier while the pay rate stayed flat — a common pattern, and one that's only visible once bill rate and pay rate sit in the same row.
How it works
Upload the invoice, timesheets and payroll register
Whatever the client billing system and payroll provider issue, plus the bank statement covering the payment date.
Every worker-week is read
Hours, bill rate and pay rate, kept linked to the worker and the invoice line they came from.
Matched and margin calculated
By worker, week and hours together, with a confidence level per line.
Export
Excel, CSV or JSON — client, worker, bill rate, pay rate and margin kept as separate, clearly labeled columns.
Overtime, where the spread actually breaks
Overtime is the single most common place a staffing agency's margin quietly erodes. A client contract might specify time-and-a-half billing for hours over 40 in a week, matching federal overtime rules exactly — but a worker in California or another state with daily overtime rules can be owed overtime pay for hours over 8 in a single day, regardless of the weekly total, creating a pay-side obligation the bill-side contract never anticipated.
Reading overtime hours as their own line, separate from straight time, and matching the bill-side multiplier against the pay-side multiplier independently is what surfaces this kind of mismatch before it accumulates across a full quarter. More detail on how the two rates get compared line by line is covered in bill rate pay rate margin matching.
Multiple clients, multiple rate cards
A staffing agency serving even a handful of clients typically has a different rate card for each — different bill rates, different markup percentages, sometimes different overtime terms entirely, negotiated individually and renewed on different schedules. An agency's own spreadsheet tracking all of this by hand tends to fall out of date the moment one client renegotiates, while the other four rate cards sit untouched.
Each client's invoices are read and kept as their own export rather than merged into one undifferentiated total, so a client whose margin has quietly drifted below target is visible on its own rather than hidden inside a company-wide average.
When a client short-pays the invoice
A client disputing a single worker's hours, applying an early-payment discount they weren't entitled to, or simply paying late and short due to their own cash-flow timing, is a routine part of running a staffing business — and it means the amount that actually lands in the bank frequently doesn't match the invoice total exactly.
Reading the bank deposit alongside the invoice surfaces a short payment immediately, with the difference attributed to a specific invoice rather than absorbed silently into a vague sense that collections are running a little behind this month.
Temp-to-perm conversion fees
When a client hires a temp worker permanently before the contract's conversion window closes, most staffing agreements specify a one-time conversion fee — often calculated as a percentage of the worker's projected annual salary. This fee is easy to miss because it appears on an invoice only once, doesn't follow the regular weekly bill-rate pattern, and is exactly the kind of one-off line that a busy accounts receivable process can let slip past uncollected.
Reading a conversion fee line as its own category, separate from regular hours billing, keeps it visible on the export rather than blended into an average weekly invoice amount where it's easy to overlook.
Who this is for
Staffing agency controllers and finance teams
Margin confirmed per worker-week instead of estimated from a rough monthly average.
Agency owners running a handful of clients
One consistent reconciliation process across every client, not a separate manual check per rate card.
Bookkeepers serving staffing clients
The same matching method applied regardless of which client's invoice format a book happens to use.
PEOs and employer-of-record providers
The same worker-level matching applied to a PEO invoice's bill rate and pay rate structure.
This isn't a VMS or applicant tracking system
Worth being precise about the boundary. This doesn't source candidates, manage placements, or connect to a vendor management system. There's no login to any client's VMS portal. What it reads is the financial side — the invoice, timesheet and payroll register, the same documents a staffing agency already produces every billing cycle, turned into clean, categorized numbers.
Moving from a spreadsheet built by hand
Most controllers who reach for this have been tracking margin the way the industry always has — a master spreadsheet with bill rates in one column and pay rates copied over from payroll in another, updated whenever someone remembers to reconcile it, usually right before month-end close forces the issue. It works, in the sense that the numbers eventually get assembled, but it's slow, and it catches nothing subtle: an overtime multiplier that was applied on one side but not the other, a rate card that was updated for billing but never for pay, a short-paid invoice absorbed quietly into next month's aging report.
The transition doesn't require reorganizing anything on day one. A reasonable first step is running one client's billing period through and comparing the categorized export against whatever master spreadsheet already exists, to see where the two agree and where the automatic matching catches something the manual process missed.
How often to reconcile
Matching your reconciliation cadence to your own invoicing schedule is the simplest rule that actually works — weekly for agencies that bill weekly, biweekly for those on a biweekly cycle. Reconciling less often than invoices go out means several billing periods pile up before margin drift on any one client becomes visible.
For an agency serving many clients on different billing cycles, it's often simpler to batch the reconciliation on a fixed weekly rhythm across all clients at once, rather than chasing each client's invoice individually as it goes out.
What accuracy actually looks like
A useful way to think about matching accuracy isn't a single percentage — it's the shape of the confidence distribution across worker-weeks. An agency with a stable client roster and clean timesheet data sees most lines land at high confidence, with only a small tail needing review. An agency onboarding several new clients mid-quarter, or dealing with a client's own inconsistent timesheet formats, sees a larger medium-confidence tail — more review time, not necessarily more errors.
In practice, most agencies with a stable client base see somewhere between 85% and 95% of worker-weeks land at high confidence on a given invoice, with the rest split between a quick medium-confidence confirm and a small number of genuine discrepancies worth investigating individually.
Privacy
Uploads go over TLS, encrypted end to end.
Processing runs on EU-hosted infrastructure.
Original documents are deleted immediately after extraction.
Worker pay and client billing data are never used to train AI models.
Full details are on the security page.
