A disputed invoice is expensive in ways that do not appear on the invoice. The finance team spends hours pulling timesheets. The operations manager calls the supervisor, who calls the officer, who remembers the shift differently. The client's accounts payable team holds the whole invoice, not just the disputed line, and cash that should have arrived in 30 days arrives in 75. Meanwhile the relationship absorbs a small amount of damage each time.
Most disputes trace back to a single cause: the hours on the invoice were reported by the person who worked them, and the client has no independent way to check. This article is about removing that cause.
Why hours get disputed
Four patterns account for most disputed lines.
Rounded or estimated times. An officer writes 22:00 to 06:00 on a sign-in sheet for a shift that started at 22:14. The client's CCTV shows the gap. The dispute is about 14 minutes, but the credibility damage covers the whole invoice.
Shifts that ran long without agreement. An officer stays an extra hour because the relief was late. The extra hour is real, it is billed, and the client did not approve it. Whether the client pays depends on whether anyone told them at the time.
Differentials applied inconsistently. Night, weekend, and holiday rates are applied by hand at month end. A public holiday on a Tuesday gets missed, or a Saturday rate is applied to a Friday night shift that crossed midnight.
Hours for posts the client does not recognise. The invoice lists a post by your internal name. The client calls it something else. The line gets questioned simply because it cannot be matched to the contract.
Each of these is a data problem, not a people problem.
Build hours from verified arrivals, not timesheets
The single most effective change is to stop deriving billable hours from self-reported timesheets. Instead, derive them from the arrival and departure records created when an officer checks in and out of a geofenced post.
A geofenced check-in records the time the officer actually arrived inside the boundary of the post. It is created by the system, not written by the officer. When the client asks about Tuesday, the answer is a timestamp with a location attached, and the conversation ends there.
HoursLedger builds shift hours from these records. A shift becomes a pair of verified events, and the hours between them are computed rather than reported. When a check-in is missing, the shift goes into exception review rather than quietly onto the invoice.
Handle exceptions before the invoice, not after
Every month some shifts will not have clean records. The officer's phone died. The relief was two hours late. Someone forgot to check out.
The difference between a company that gets disputes and one that does not is when these exceptions are handled. If they are discovered by the client, you have a dispute. If they are discovered by a supervisor in an exception queue three days after the shift, you have a correction with a note attached.
An exception review process should cover:
- Missed check-ins or check-outs, with a manual entry and a reason recorded against the shift
- Shifts that ran more than a set tolerance over or under the scheduled hours
- Unplanned overtime, approved or rejected by a supervisor
- Early departures, with a note on whether the client agreed
Every manual adjustment should be permanently flagged in the audit trail. When a client questions a line, the operations manager can show not only the hours but the reason they were adjusted and who approved it.
Apply rates by rule, not by memory
Differentials should be configured once per contract and applied automatically. Night rate starts at a defined time, weekend rate applies to defined days, and public holidays come from a calendar for the region. A shift that crosses midnight from Friday into Saturday is split at the boundary and each portion is rated correctly.
This removes the month-end spreadsheet where most differential errors are introduced. It also means an officer can see their own expected pay for a shift in the app before they accept it, which reduces payroll queries as a side effect.
Name posts the way the client names them
A small change with a large effect: label each post with the name used in the client's contract, and include that name on the invoice line. Attach the contract reference and the scheduled hours. The accounts payable clerk can then match each line to the contract without calling anyone.
Tell the client about overruns the same day
When a shift runs long because of something at the site, tell the client that day. A short note released to the client portal, "Officer held at post until 07:05 because relief was delayed, 65 minutes additional time," turns a surprise on the invoice into a known fact. ClientView is designed for exactly this kind of same-day note. Clients rarely dispute hours they were told about at the time.
Link every line to its evidence
The final step is to make each invoice line traceable. An invoice generated from verified hours can carry a reference for each shift that links back to the arrival record, the departure record, the patrol evidence, and any exception notes. The client does not need to use those links often. The fact that they exist changes the tone of the conversation from "prove it" to "I can see it."
What to expect after the change
Companies that move to verified hours typically see three changes in the first quarter. Disputed lines fall sharply, because the common causes have been removed. Days sales outstanding shortens, because invoices are no longer held while a single line is argued. And month-end closes faster, because the finance team is exporting rather than reconstructing.
The officers notice too. Verified hours mean their pay matches what they worked, with differentials applied correctly, and they can see it before payday. For a wider view of how clients consume this evidence, read how to prove security coverage to clients without weekly phone calls.