Skip to content

Scheduled vs actual vs arbitrated times

A shift carries three sets of times — what the rota scheduled, what book-on and book-off recorded, and what an Admin or Manager arbitrated for pay. Screens that answer what time the shift actually ran read the first of those that exists, taking arbitrated before actual before scheduled, which is how a correction made for payroll reaches the employee's own schedule.

Which times does a screen show?

Four values, checked in this order. The first one that has been recorded wins.

Times Where they come from
Arbitrated An Admin or Manager set them on Arbitration
Actual Book-on and book-off
Expected The scheduled times, copied onto the pay record the moment arbitration first ran for that shift
Scheduled The shift as it stands on the roster

So a shift nobody has arbitrated shows its actual times; a shift nobody booked on to shows its scheduled times.

Expected and Scheduled are the same value in the ordinary case, and separate only because expected is a snapshot. It is copied from the shift when the pay record is written and is not rewritten if the roster is edited afterwards.

Where do actual times come from?

From the person on shift pressing Book On and Book Off on their Check Calls screen. The time recorded is the moment the button is pressed, not the time the shift was due to start.

Two side effects follow. Booking on moves the shift to In Progress and booking off moves it to Completed. And if somebody makes a check call without having booked on first, the platform books them on at that moment and notes it as Auto booked on via check call.

Actual hours are book-off minus book-on, minus any break recorded between them.

One pair of times is thrown away rather than trusted: a book-on and book-off less than 60 seconds apart is treated as a shift closed off from the roster rather than worked, and the shift is read as having no actual times at all.

What does running arbitration do?

Arbitration sits under Scheduling and is open to Admin and Manager. Run Arbitration offers Use Actual Times or Use Expected Times, and writes one pay record per shift across the date range on screen. What it writes depends on the state of the shift:

The shift What arbitration writes
Booked on and booked off, both within 15 minutes of the scheduled times Auto Arbitrated
Booked on and booked off, either one more than 15 minutes out Manual Advised, flagged with the variance in minutes
Never booked on, its end time passed, and the employee declined it Dropped
Never booked on and its end time passed, with no decline Auto Arbitrated on the expected times, flagged No actual times recorded
Not finished — booked on but not booked off, or still to come Nothing. It is skipped and picked up on a later run

A shift that has been cancelled, or marked as a no-show, is not considered at all: those two are filtered out before any of the above is decided, so no pay record is written for them.

Fifteen minutes is the tolerance for the whole shift, applied to the start and the end separately; the larger of the two is what is recorded as the variance.

Running arbitration again does not overwrite a record that already exists. The one exception is a record whose pay rate, total pay or arbitrated hours never computed — that one is recalculated from the current rates.

What can be changed after the fact?

The edit dialog shows four rows of times: Expected (fixed), Actual, Payroll and Charge. The payroll times are the arbitrated times — the ones that become pay and the ones every other screen then reads. The charge times are held separately, so correcting what someone is paid does not silently move what a client is billed; they follow the payroll row only when Use Payroll Length For Charging is switched on.

The row menu offers Use Expected Times, Use Actual Times, Drop Shift, Confirm Drop, Mark Paid and Mark Invoiced, showing only the ones the record's current status allows, and the tick beside it accepts the record as it stands. Accepting, using expected times and using actual times all leave the record at Manual Complete and clear its flag.

Two people editing the same record cannot both win. Every save carries the version it was read at, and a save against a stale version is refused with Record was modified by another user.

What happens once a record is marked paid or invoiced?

It locks. Paid, Invoiced and Paid & Invoiced all refuse further edits, accepts, time changes and drops. An override is possible, but only with a written reason of at least five characters, which is kept in the audit trail.

Marking a record paid and then invoiced (or the reverse) leaves it at Paid & Invoiced rather than replacing one with the other.

Each of those three events — marked paid, marked invoiced, and any override of a locked record — also writes an immutable snapshot of the whole record: the times, the hours, the rates, the totals, and the employee and site names as they read at that moment. Snapshots are never updated, so a later correction cannot rewrite what a closed pay run said.

What does the employee see?

Their own My Schedule. A shift they booked on to reads Booked on: 07:02 – Off: 19:05. A shift they never booked on to, but which an administrator has since given times, reads Adjusted to instead. Either way, if the times on display came from arbitration rather than from their own book-on, the line ends with · adjusted.

Does any of this cover agency officers?

Only where a deployment has switched it on. Generating pay records for agency officers is behind the ENABLE_OFFICER_ARBITRATION setting and is off by default. With it off, a run reads no agency roster shifts and writes no officer records, so a pay run — and any invoice built from those records — covers employee work only.

Last updated 2026-08-13