Why this always takes longer than expected
Every staffing controller has had this experience: block out thirty minutes to reconcile margin on one client's invoice, and ninety minutes later still be tracing why one worker's overtime spread looks off. It's not that the task is conceptually hard — bill rate minus pay rate, times hours, summed across workers — it's that the three documents involved were built by three different systems for three different purposes, and none of them was designed to be checked against the other two.
This guide is a method, not a philosophy. It won't make rate cards simpler or overtime rules more consistent between states. What it will do is turn an open-ended "let me check the margin on this" into a fixed sequence of steps that produces the same reliable answer every time, whether you're doing it by hand on a Friday afternoon or handing the raw documents to something that reads them for you.
Two decisions before you start
Before working through the seven steps, two quick decisions make the rest of the process much smoother.
Scope: one client or the full book?
Reconciling one client at a time is faster to start and easier to debug when something doesn't match. Reconciling the full book at once catches cross-client patterns — like a payroll provider change affecting every client simultaneously — sooner.
Cadence: per invoice or on a fixed schedule?
Per-invoice reconciliation catches problems the moment they appear but means the process runs on however often clients happen to be billed. A fixed weekly schedule batches everything together, which is usually simpler once more than a couple of clients are involved.
The seven steps
Gather the invoice, timesheets and payroll register
The client's invoice for the period, the underlying timesheets, and the payroll register or pay stubs covering the same window.
Read every worker-week on the invoice
Hours, bill rate and extended amount per worker, kept linked to the source document.
Match each worker-week against the timesheet and payroll register
By worker, week and hours together, producing a confidence level per match.
Review flagged and unmatched lines
Confirm ambiguous matches and investigate anything the invoice, timesheet and payroll register don't agree on.
Calculate realized margin per worker-week
Bill rate minus pay rate, straight time and overtime compared separately.
Produce the reconciled summary
A clear breakdown of billed amount, paid amount, and the margin that resulted, by client and by worker.
Log the period and set the next date
Save the reconciled record and put the next billing period's reconciliation on the calendar before this one is forgotten.
A billing period, worked from start to finish
A weekly invoice for a client with three temp workers. Gather the invoice, three timesheets and the payroll register covering the same week — step one done. Reading every worker-week off the invoice produces three lines: hours, bill rate, extended total per worker — step two.
Matching each worker-week against the timesheets confirms hours agree; matching against the payroll register pulls in the corresponding pay rate for each worker — step three. One worker's overtime hours on the invoice don't match the timesheet exactly — a two-hour gap — flagged for review rather than assumed correct — step four.
Margin is calculated for the two workers with clean matches, and left pending for the flagged one until the two-hour gap is resolved — step five. The reconciled summary shows two confirmed margins and one pending line with a clear note about what's unresolved — step six. The next week's reconciliation date goes on the calendar — step seven.
Common mistakes
Reconciling the invoice total instead of each worker-week
A total that looks right can still hide one worker's margin going negative offset by another's going unusually high — the total tells you nothing about where either happened.
Assuming the payroll register and invoice cover the same period
Payroll periods and client billing periods frequently use different week-ending conventions — confirm this before comparing, not after the numbers don't match.
Treating a name mismatch as a data error rather than a real discrepancy
A worker listed differently between the invoice and payroll register is worth investigating on its own — sometimes it's a typo, sometimes it's two different people being conflated.
Letting several billing periods pile up before reconciling any of them
A margin problem that started three weeks ago is far easier to trace in week one than after it's compounded across a dozen invoices.
When a client short-pays the invoice
A client paying less than the invoice total — a disputed hour, an early-payment deduction they weren't entitled to, or simply a payment error — is common enough that it's worth building into the method rather than treating as an exception every time.
When the bank deposit doesn't match the invoice total, the difference gets logged against that specific invoice with a note on the likely cause, rather than absorbed silently into next month's aging report where it's easy to lose track of which invoice it actually belongs to.
Doing this across more than one client
The seven steps stay the same for each client — the only change is doing them once per client rather than once for the whole book. Keeping each client's reconciliation as its own record, rather than blending several clients into one combined summary, is what makes it possible to spot a single client whose margin has drifted without it being masked by healthier margin elsewhere.
For an agency with more than a handful of clients, batching this weekly rather than reacting to each invoice as it goes out tends to be the more sustainable rhythm — covered further in the cadence section below.
The very first reconciliation
The first time through this method takes noticeably longer than every time after, because you're simultaneously learning the shape of a client's invoice format, the quirks of your own payroll register's layout, and the actual method. Budget more time than feels necessary, and expect a longer list of flagged, unmatched lines than will show up in later cycles.
A useful first-time approach: pick one client with a moderate number of workers, not your largest or most complex, and work through all seven steps by hand before deciding whether any part of the process is worth automating.
Choosing a cadence that actually sticks
The best cadence is the one that survives a busy week, not the one that looks most rigorous on paper. Matching your reconciliation schedule to your billing schedule — weekly if you bill weekly, biweekly if you bill biweekly — tends to work because it piggybacks on a routine that already exists, rather than adding an entirely separate rhythm to remember.
A cadence that requires remembering to start it from scratch each time is the one that quietly stops happening after a few busy weeks. A cadence anchored to something that already happens on a fixed schedule — invoicing, payroll, month-end close — is the one that survives.
What to do with a genuine discrepancy
Most flagged lines resolve into something mundane: a late timesheet approval, a name spelled two different ways, a payroll period that started a day earlier than the invoice period. A small remainder turn out to be genuine — a rate card that was never updated on one side, an overtime multiplier applied incorrectly.
For a genuine discrepancy, the useful next step depends on which side it's on: a pay-side error usually means a payroll correction; a bill-side error usually means a corrected invoice to the client. Either way, documenting what was found and how it was resolved keeps the same mistake from recurring silently next billing period.
What you actually need
At minimum: the client invoice, the underlying timesheets, the payroll register or pay stubs, and a bank statement covering the payment date. A spreadsheet is enough to hold the reconciled summary. What's genuinely time-consuming is the line-by-line matching across three source documents — reading each one, lining up worker and week, and calculating the spread — which is exactly the part worth automating once the manual version becomes routine enough to trust the automated one against.
Handing this off to a controller or bookkeeper
When margin reconciliation moves from an owner's own desk to a controller or outside bookkeeper, the thing most likely to get lost isn't the mechanics — it's the accumulated knowledge of which clients have unusual rate card quirks, which workers' names are inconsistently spelled across systems, and which discrepancies from prior periods are still open.
Handing off the matched log alongside the raw documents, not just a final summary number, preserves that context and lets the new person pick up mid-stream rather than starting the learning curve over from scratch.
Three ways to do this, compared
| Method | Time per period | Best for |
|---|---|---|
| Fully manual, spreadsheet only | 1–3 hours | A handful of workers on one or two clients |
| Manual with a standing template | 30–60 minutes | A moderate client roster with stable rate cards |
| Automated matching, manual review of flagged lines | 10–20 minutes | Any agency past a handful of workers or clients |
The matched log, column by column
| Column | Purpose |
|---|---|
| Client, worker, week-ending date | Uniquely identifies each row |
| Hours, straight time and overtime | The basis for both bill and pay calculations |
| Bill rate, pay rate | The two numbers whose gap is the margin |
| Realized margin | Bill rate minus pay rate, times hours |
| Match confidence, notes | Flags anything needing a second look |
How to tell it's working
A working reconciliation process shows two signs over time: the number of flagged, unmatched lines per period trends down as data quality improves, and genuine discrepancies get caught within the same billing period they occur in, rather than surfacing weeks or months later during a broader review.
If flagged lines stay stubbornly high or genuine discrepancies keep surfacing only at quarter-end, that's usually a sign the underlying documents — timesheets, payroll exports — have a data quality issue worth fixing at the source, not a sign the reconciliation method itself is wrong.
Reconciling through a payroll provider switch
Switching payroll providers is one of the more disruptive events for margin reconciliation, because the new provider's register format, pay period conventions and field naming can all differ from the old one at once. The weeks immediately after a switch deserve extra scrutiny — this is when a pay rate mapping error is most likely to slip through unnoticed.
A practical safeguard: run the first two or three post-switch periods through the reconciliation process manually even if the rest of the workflow is automated, specifically to confirm the new provider's data maps correctly before trusting it at full volume.
A realistic month, laid out
| Week | Activity |
|---|---|
| Week 1 | Reconcile prior week's invoices across all clients, log any flagged lines |
| Week 2 | Same, plus follow up on any discrepancy still open from week 1 |
| Week 3 | Same, plus a quick review of margin trend across the month so far |
| Week 4 | Same, plus month-end summary rolled up by client for management review |
W-2 temps versus 1099 contractors
An agency placing W-2 temporary employees reconciles pay rate against a payroll register, which carries withholding, employer payroll taxes and benefits contributions alongside gross pay — all of which factor into the agency's true cost even though the worker's pay rate is the visible number. An agency placing 1099 independent contractors instead reconciles against a contractor invoice or summary, which typically shows only the gross amount paid, with no payroll tax or benefits burden on the agency's side.
The margin math itself — bill rate minus the agency's true cost per hour — differs meaningfully between the two, since a W-2 placement's true cost includes several percentage points of burden that a 1099 placement doesn't carry. Keeping the two worker types in separate reconciliation categories avoids blending two genuinely different cost structures into one misleading average margin figure.
For an agency running both worker types simultaneously, it's worth tagging each worker-week explicitly by classification in the matched log, rather than relying on memory or a separate list kept elsewhere, since the classification directly determines which cost components belong in that row's true cost calculation.
A pre-audit checklist
Every invoice for the audit period has a matched, reconciled summary on file.
Every flagged discrepancy from the period has a documented resolution.
Timesheets and payroll registers are retained alongside the reconciled summaries, not just the summaries alone.
Rate card changes during the period are documented with effective dates.
Short-paid invoices are traced to a specific cause, not left as unexplained variance.
A second example: a settlement with an overtime mismatch
A worker logs 46 hours in a week under a client contract that bills overtime at 1.5x for anything over 40. The invoice correctly bills 40 hours straight and 6 hours overtime at the higher rate. The payroll register, though, shows the worker was paid straight time for all 46 hours — the payroll system's overtime rule wasn't configured for this particular pay group.
Matching bill-side and pay-side overtime independently catches this immediately: the bill side shows overtime hours and rate correctly, the pay side shows none, and the mismatch is flagged rather than averaged into a combined hourly rate that would have hidden it. The fix here is a payroll correction to ensure the worker is paid correctly under wage law — a discovery that likely never would have surfaced from a total-invoice-level check alone.
Handling a contract renewal period
A client contract renewal typically brings a new bill rate effective on a specific date, sometimes mid-billing-period rather than cleanly aligned with an invoice boundary. Reconciling across a renewal date means splitting the affected period into two segments — pre-renewal rate and post-renewal rate — rather than applying one rate to the whole period and absorbing the difference as an unexplained variance.
Flagging renewal dates in advance, before the first post-renewal invoice arrives, makes this split straightforward rather than something discovered only after the numbers don't match.
What actually helps versus what's overkill
For most staffing agencies below a certain size, a full ERP or dedicated staffing software platform is more infrastructure than the actual reconciliation problem requires — the real bottleneck is reading and matching documents that already exist, not managing workflow across a large team. A tool that reads the invoice, timesheet and payroll register and produces a matched, categorized export solves the actual bottleneck without requiring a platform migration.
Dedicated staffing software starts to earn its cost once an agency's worker count and client count grow large enough that workflow coordination — not document reading — becomes the bigger time sink.
How long to keep reconciliation records
Keeping the matched log, the underlying invoices, timesheets and payroll registers for at least as long as your tax authority's audit window requires is the baseline — typically several years, though exact requirements vary by jurisdiction. Beyond the minimum, keeping records longer costs little once everything is already digitized, and a longer history is genuinely useful for spotting slow, multi-year margin trends with a particular client.
A well-organized digital archive also pays off well beyond tax time — it's the same record a lender, factoring company or potential buyer will eventually want to see, and building it as a byproduct of routine reconciliation is far less work than reconstructing it under pressure when one of those conversations comes up unexpectedly.
A simple, consistent naming and folder structure — by client, by year, by billing period — makes this archive genuinely usable years later, rather than a pile of files nobody can navigate quickly when it's actually needed. A five-minute investment at the end of each period, filing that period's documents in the right place, is far cheaper than an afternoon spent searching for them later, especially under the added pressure of a live audit or a time-sensitive lender request when nobody on the team has the spare hours to spend hunting for a missing file.
Tracking temp-to-perm conversion fees
A conversion fee, charged when a client hires a temp worker permanently before the contract's conversion window closes, is easy to lose track of because it appears on an invoice only once and doesn't follow the regular weekly billing pattern. Logging conversion fees in their own column, separate from regular weekly billing, keeps them visible for collections follow-up rather than blended into a weekly average where a missed one is hard to notice.
Adjusting the cadence around seasonal placement volume
Many staffing agencies see sharp seasonal swings — a retail client ramping up for a holiday season, a warehouse client scaling down after a peak. During a high-volume season, the same weekly cadence covers more worker-weeks per cycle, which can make the manual portions of reconciliation take noticeably longer even though the method itself hasn't changed.
Planning for extra reconciliation time during known seasonal peaks, rather than being surprised by it each year, keeps the process from falling behind exactly when volume — and the potential margin impact of any single error — is highest.
An agency with a predictable annual pattern can go one step further and pre-schedule extra reconciliation capacity — a temporary extra set of hands, or a heavier reliance on automated matching — for the specific weeks historical volume data shows are the busiest, rather than reacting to the surge once it's already underway.
