Duplicate pay in staffing isn't a payroll bug — it's a three-way mismatch between the worker's timecard, the VMS entry, and the client's badge log. Here's how to reconcile all three before payroll runs.
Related demo
See scheduling workflows in Teambridge
Try our workforce AI agents, then book time to map the workflow to your operation.
Duplicate pay events in staffing rarely start in payroll. They start three days earlier, when the same 12-hour shift gets recorded three different ways — once by the worker on a mobile timecard, once by the client manager approving a rounded entry in the VMS, and once by the badge system logging first-in and last-out of the facility. By the time payroll pulls the register, all three numbers are already circulating, and someone has to pick one.
Most agencies pick wrong at least a few times a week. The overpayment is bad. The unbillable hour is worse. And the credibility hit with the client — the one who watches you pay a nurse for time she wasn't on the floor — is the one that actually costs contracts.
This piece is about how to stop guessing and start reconciling. The fix is a system of record that holds the timecard, the VMS submission, and the badge export in the same view and refuses to release a shift to payroll until the three agree within tolerance.
Why the same shift shows up three different ways
Start with a real 12-hour ICU shift. A travel RN clocks in on her agency's mobile timecard at 6:58 a.m. and out at 7:11 p.m. — twelve hours and thirteen minutes, minus a 30-minute unpaid meal break she keyed in herself. That's 11:43 of paid time on the agency's record.
The VMS tells a different story. The nurse manager approves the entry on Monday morning, and the VMS applies a configurable rounding rule to the nearest 15 minutes to keep the timecard consistent with client policies. The 6:58 becomes 7:00, the 7:11 becomes 7:15, and the entry lands at 11:45.
The hospital's badge system logs a third number entirely. It shows the nurse entered the parking garage at 6:41 a.m. and badged out of the ICU wing at 7:24 p.m. That's 12:43 — because badge readers track physical access to the facility, not the moment she took handoff or gave report.
Three numbers. One shift. Payroll only runs one of them.
Note
The three sources aren't wrong. They're measuring different things: the worker's account of paid work, the client's approved billable time, and the facility's record of physical presence. They will almost never agree exactly, and that's the problem.
This divergence isn't a rare edge case. It's how the industry runs. These errors typically emerge due to manual timesheet processes including Excel-based consolidation and validation, manual timecard uploads, and disconnected systems across payroll and billing workflows — and while each mistake may seem minor, they compound rapidly across hundreds of contingent workers to create payroll inaccuracies, billing disputes, and compliance exposure that erodes profitability every cycle.
The true cost of a duplicate pay event
The wage overpayment is the smallest line item. A duplicate 12-hour shift at a $65 bill rate is $780. That's recoverable if you catch it in the same week. What isn't recoverable is everything downstream.
A duplicate pay event triggers a cascade:
- Payroll correction in the next cycle, which requires an off-cycle adjustment or a clawback conversation with the worker
- Invoice reissue to the client, which pushes DSO out by at least seven days on the affected shift
- Client credibility damage — the AP contact who catches a duplicate hour on your invoice will scrutinize every future invoice at line-item level
- Coordinator hours spent reconciling instead of filling next week's open shifts
External benchmarks confirm how common the underlying problem is. According to a survey of AP professionals, when the same work hours are entered twice — whether by accident, a system fault, or employees submitting through multiple channels — the result is double payment or duplicate billing, and for staffing firms pulling timesheets from VMS portals, time clocks, and manual submissions simultaneously, duplicate time entries are a recurring risk. Without automated error detection, these duplicates may not surface until a later audit, by which point the financial damage is already incurred.
The scenario cited most often in the field is the one every operations lead has lived through: an employee's timecard records overtime hours pulled from the VMS portal, but the same OT hours are also submitted through a separate ticket on the HRMS platform, and the paycheck goes out with the inflated overtime count — with the overpayment only identified during end-of-month reconciliation.
By that point you're not correcting an error. You're recovering money from a worker who has already spent it.
Where the three numbers diverge
Each source has a mechanical reason for disagreeing with the other two. Understanding those reasons is what separates a functional reconciliation process from a manual review that misses the same errors every week.
VMS rounding rules
Almost every enterprise VMS applies rounding at the point of client approval. The 15-minute rule rounds punches to the nearest quarter hour — :00, :15, :30, or :45, and a punch rounds back or forward depending on where it falls in the 15-minute window, with the midpoint determining direction: minutes zero through seven round back and minute eight and later rounds forward.
That sounds neutral. It isn't, in aggregate. If a staffing firm rounds time to the nearest quarter hour and fifty warehouse workers each gain an average of 15 extra minutes per day from favorable rounding, over a year that adds up to over 1,000 hours of paid but unworked time — a direct margin reduction for the staffing firm.
Badge system lag
Badge systems measure physical access, not paid work. A worker who badges into the building at 6:41 for a 7:00 shift didn't earn 19 extra minutes — she got coffee. A worker who badges out at 7:24 after a 7:00 punch-out didn't earn 24 extra minutes — she used the restroom on the way out. If you treat badge data as authoritative on the high side, you overpay. If you treat it as authoritative on the low side (some facilities only log unit-level access, not building entry), you underpay and get a complaint.
Manual break policies
Unpaid meal breaks are captured differently in every system. The worker keys them into her timecard. The client manager may or may not deduct them in the VMS depending on the facility rule. The badge system doesn't see them at all unless the worker badges out to the cafeteria — which most don't.
Here is what a real three-source mismatch looks like on that ICU shift:
| Source | Clock-in | Clock-out | Break | Paid hours |
|---|---|---|---|---|
| Worker timecard (agency app) | 6:58 a.m. | 7:11 p.m. | 30 min | 11:43 |
| VMS (client-approved, rounded) | 7:00 a.m. | 7:15 p.m. | 30 min | 11:45 |
| Badge (facility access log) | 6:41 a.m. | 7:24 p.m. | — | 12:43 |
Pay the badge number and you overpay by an hour. Pay the VMS number without evidence and you can't defend the invoice when AP challenges it. Pay the timecard number without VMS approval and the client refuses the invoice line.
Making the timecard the anchor
The agency's own time capture has to be the source of truth. Not the VMS, not the badge. But only if the timecard carries evidence — GPS coordinates, geofence entry and exit timestamps, break attestation, and a worker signature. Without evidence, the timecard is just a claim, and a claim loses to a client's approved VMS entry every time.
A time clock system should automatically handle time conversion from hours and minutes to decimal, and let payroll administrators specify how to round decimal hours in the calculator settings — but the raw punches have to stay intact underneath. Rounding is a display layer, not a data layer.
What evidence looks like in practice:
- GPS-stamped punches tied to the specific address of the client site
- Geofence enforcement that prevents a punch from being submitted outside a defined radius
- Break attestation requiring the worker to affirm meal periods were taken and uninterrupted
- Exception flags raised at punch time — late clock-in, missed break, out-of-geofence punch
This is the foundation Teambridge's Time Tracking product is built on: GPS-verified clock-in, timecard exception handling, and automatic overtime calculation, all tied to a shift record that carries through to pay and bill. If the anchor isn't defensible, the reconciliation collapses at the first client challenge.

Ready to move?
Ready to see Teambridge in action?
The three-way match: how to reconcile before payroll runs
The operational core of the fix is a pre-payday reconciliation flow that treats the three sources as inputs to a single validated shift record, not as competing systems of truth. It borrows the logic of a purchase-order-to-invoice three-way match from AP — same principle, different data.
Here's the sequence:
- Ingest the timecard from the agency's own time capture, with GPS and geofence evidence attached to each punch.
- Ingest the VMS-approved hours via integration — most enterprise VMS platforms expose an API or scheduled export for approved timecards.
- Ingest the client badge export on the same cadence as the VMS pull. For healthcare, this usually means a nightly SFTP drop from the facility's access-control vendor.
- Auto-match on worker + shift date + site. Every shift record now has three time values.
- Apply tolerance rules. Any shift where the three sources agree within a defined variance (typically ±7 minutes at start and end, and matching break policy) passes automatically.
- Flag exceptions. Any shift outside tolerance is held from payroll and routed to a coordinator queue with all three sources visible side-by-side.
- Resolve or escalate. The coordinator either accepts one source (with documented reason) or escalates to the on-site supervisor. Payroll runs only against reconciled shifts.
A VMS in a mature environment supports timekeeping, badge systems, and payroll/AP for clean time-to-invoice handoffs, with AP/ERP/HRIS integrations that reduce duplicate entry and speed reconciliations. The point is not to eliminate the three systems — you can't; they exist for good reasons — it's to enforce a single reconciled number downstream of them.
Important
The reconciliation has to run before payroll cutoff, not after. A discrepancy caught on Wednesday is a coordinator conversation. The same discrepancy caught on Friday is a payroll correction, an invoice reissue, and a client escalation.
Exception handling: who owns a mismatch
A reconciliation flow is only as good as the exception queue behind it. If flagged shifts sit in a coordinator's inbox for three days, you've built a slower version of the same problem.
Build the playbook around three rules:
Rule 1: Ownership by shift, not by worker
Each flagged shift gets assigned to one coordinator — the one who filled the requisition. That person owns resolution end-to-end. No handoffs, no queue rotation. The coordinator who placed the RN on the ICU shift is the coordinator who reconciles the ICU timecard.
Rule 2: Variance thresholds trigger escalation
Small variances (under 7 minutes) resolve to the timecard by default, provided GPS and geofence evidence check out. Medium variances (7–30 minutes) require a coordinator note and a documented decision. Large variances (30+ minutes) require a supervisor sign-off from the client side before the shift is released.
Rule 3: No shift moves to payroll with an open variance
This is the rule that stops duplicate pay events cold. If the exception isn't resolved by payroll cutoff, the shift holds. It doesn't get paid on the highest number, the lowest number, or the average. It gets paid the following cycle with full documentation attached.
Seamless timesheet management keeps track of work hours, leaves, and payroll with customizable features that ensure payroll is processed efficiently and accurately, and centralized compliance management with automated recordkeeping meets labor regulations and mitigates risks.
The outcome: coordinators spend fifteen minutes per week per client resolving flagged shifts, instead of two hours per week chasing overpayment recoveries.
Pay and bill from the same reconciled number
The rule that finally eliminates duplicate pay: the number that hits payroll must be identical to the number that hits the client invoice. No exceptions, no reconciling adjustments, no "we'll fix it next cycle."
This breaks the industry-standard pattern where pay runs off the agency timecard and bill runs off the VMS-approved entry, creating a permanent gap between wage cost and invoice revenue. When the two numbers come from separate sources, margin can only be calculated on estimate — and every shift with a discrepancy is a silent margin leak.
When pay and bill run off one reconciled record, three things happen:
- Margin becomes actual, not estimated, at the shift level
- Client disputes over invoice hours can be resolved by showing the reconciled shift record with timecard, VMS, and badge evidence attached
- The FLSA audit trail is complete — whichever rounding method you choose must be neutral or favorable to the employee overall, and you can't set up a system where employees regularly lose paid time
Teambridge's Invoicing product is built specifically for this — client billing tied to timecards, with bill rates, burden, spread, and export to QuickBooks or NetSuite from the same reconciled shift record that feeds payroll. Combined with the Integrations layer for VMS ingestion and badge exports, the three-way match becomes an operational reality instead of a spreadsheet exercise.
What to look for in a workforce system that can actually do this
Most workforce platforms handle one of the three sources well. Very few handle all three, and fewer still enforce a hold on payroll until the exception queue is clear. When evaluating a system to solve this specifically, the checklist is short but strict:
- Native VMS integrations — not just SFTP flat-file ingestion, but real API connections to the VMS platforms your clients actually use (Fieldglass, Beeline, VectorVMS, IQNavigator, Bullhorn)
- Badge/access-system ingestion — the platform has to accept nightly exports from Kronos, Genetec, HID, or facility-specific systems and match them to shift records
- Tolerance-based exception rules — configurable per client, per site, per shift type
- A single pay-and-bill record — one number feeds both, or the system doesn't solve the problem
- Audit trails per shift — every source, every variance, every resolution decision, timestamped and attributable
The Teambridge platform was built for exactly this three-source problem — scheduling, time tracking, compliance, pay, and communication in one system, with the exception queue and reconciliation logic sitting between shift capture and payroll release. For agencies running staffing operations at any real volume — high-volume hiring, client-facing margins, credential management, instant pay — the three-way match isn't a nice-to-have. It's the difference between defensible invoices and the slow erosion of every contract you've won.
Duplicate pay events don't disappear because you hired a more careful payroll clerk. They disappear because you built a system that refuses to release a shift until the timecard, the VMS, and the badge log agree on what happened.









