Skip to content
SkyRosterBook a working session

Lifecycles · Month end

Everything the month produced arrives on one desk, and has to leave it correct

A payroll or HR officer does not see the roster month or the operational day as separate systems. She sees one month's worth of shifts, absences, swaps and extra hours, and has to turn it into a file her payroll system will accept without a dispute three weeks later. This page follows that month from the last clock event to the one action that closes it for good.

Stage 1 of 7 · Attendance reconciles

Nobody re-types a timesheet. The record accumulates on its own

Through the month, clocking entries arrive from three sources, a biometric device, a manual entry, or a one-tap remote clock from the mobile app. Only entries marked Approved count toward worked time or payroll; a Pending one stays visible for triage but has zero effect until someone acts on it. Device-sourced entries are auto-approved on ingestion, the device is treated as a trusted witness, but anyone entering their own time, including a global administrator, always lands Pending and is always reviewed by someone else.

Full mechanism, including what happens when a human correction meets the next device sync, at attendance →.

Stage 2 of 7 · The justification queue

Every gap between what was expected and what happened has a name

A mandatory period is SkyRoster's formal statement of "this employee is expected to be present from X to Y," sourced from the tactical roster's working slots or from an approved duty. No attendance inside one is an unjustified absence, and it lands in the Justifications queue, where HR and supervisors actually reconcile the record, rather than scanning a raw timesheet for red.

This is also where the operational day's own honesty rule pays off: rescheduling a mandatory period already in the past or already underway needed a supervisor's explicit sign-off, see the operational day, precisely so that a figure already used in this queue is never silently rewritten underneath it.

Stage 3 of 7 · Overtime classifies itself

Four sources of extra time, one automatic pipeline for each

A holiday shift, an approved overtime duty, a shift extension and a work request each run through their own calculation, resolving independently to a payroll code. Step through one illustrative day below to see the mechanics: a Bank of Working Hours carve-out computed before anything is priced as overtime, a day/night split at a boundary your organisation configures, and a first-hour premium marked on every period.

Payroll · one illustrative day

modelled

Four inputs, one export

Follow one employee's extra time through seven stages of SkyRoster's payroll engine: four sources of extra time, a Bank of Working Hours carve-out, a day/night split at a boundary you set, a first-hour premium, Compensatory Time Off mirrored automatically, and a numeric code for every line. The hours and codes below are illustrative; the pipeline is not.

Step 1 of 7

Four inputs, one day

Every source of extra time enters as its own labelled line, raw and uncoded.

SkyRoster runs four independent calculations for extra time worked outside the roster, each resolving its own payroll code: a shift worked on a public holiday, an approved overtime duty, a shift extension before or after a scheduled shift, and an ad hoc work request called in on a day off.

This illustrative employee has all four on the same day, so every pipeline is visible at once. Most real days carry one of these, if any.

The payroll pipeline's running figures after step 1 of 7.
LineTimeHoursDay / nightPayroll treatment
Holiday shift08:00–13:005h00, Raw, not yet coded
Shift extension13:00–14:301h30, Raw, not yet coded
Overtime duty20:00–23:303h30, Raw, not yet coded
Work request01:30–05:003h30, Raw, not yet coded
Lines so far4

Step 2 of 7

The Bank of Working Hours carve-out

Thirty minutes of the overtime duty move to the Bank of Working Hours line, before anything is priced as overtime.

Before any of this becomes overtime pay, SkyRoster checks the employee's Bank of Working Hours balance. A balance that covers the whole duty books all of it as banked hours; no balance books all of it as overtime; a partial balance, like this employee's, splits the duty.

The carved-out portion is drawn from the bank rather than priced as overtime, and it is carved out first, ahead of everything below: the day/night split and the first-hour premium only ever see what's left of the duty.

The payroll pipeline's running figures after step 2 of 7.
LineTimeHoursDay / nightPayroll treatment
Holiday shift08:00–13:005h00, Bank Holiday
Shift extension13:00–14:301h30, Overtime
Overtime duty, banked · Bank of Working Hours (new this step)20:00–20:300h30, Banked (Bank of Working Hours)
Overtime duty, remaining (new this step)20:30–23:303h00, Proceeds to overtime, not yet split by the night boundary
Work request01:30–05:003h30, Overtime
Lines so far5

Step 3 of 7

The day/night split, a boundary you configure

The remaining overtime duty splits into a day line and a night line at the boundary. Switch the boundary below and the split moves.

configured

Any overtime that crosses the configured night boundary splits into separate day and night lines, each on its own rate, including a duty that runs across midnight.

That boundary is a setting an administrator configures per site, not a clock time fixed in the code. Try the alternate boundary below: the overtime duty's night hours move; the work request, already deep in the night under either setting, does not.

Night boundary, a configuration screen in SkyRoster, not a constant
The payroll pipeline's running figures after step 3 of 7.
LineTimeHoursDay / nightPayroll treatment
Holiday shift08:00–13:005h00DayBank Holiday, day
Shift extension13:00–14:301h30DayOvertime, day
Overtime duty, banked · Bank of Working Hours20:00–20:300h30, Banked (Bank of Working Hours)
Overtime duty, day (new this step)20:30–22:001h30DayOvertime, day
Overtime duty, day (new this step)20:30–23:303h00DayOvertime, day
Overtime duty, night (new this step)22:00–23:301h30NightOvertime, night
Overtime duty, night (new this step), 0h00NightOvertime, night (none under this boundary)
Work request01:30–05:003h30NightOvertime, night
Lines so far6

Step 4 of 7

The first-hour premium

Every period's first hour is marked separately, independently of whichever split it just went through.

Many collective agreements pay a higher rate for the very first hour of a period of extra time than for the hours after it. SkyRoster marks that hour on every period independently: the holiday shift, the extension, the remaining overtime duty and the work request each get their own first hour marked.

The night split and the first-hour premium are two independent cuts through the same duty; here they land at different times, so one continuous overtime duty ends up divided into three differently-rated pieces.

The payroll pipeline's running figures after step 4 of 7.
LineTimeHoursDay / nightPayroll treatment
Holiday shift08:00–13:005h00 (incl. 1h00 premium)DayBank Holiday, day
Shift extension13:00–14:301h30 (incl. 1h00 premium)DayOvertime, day
Overtime duty, banked · Bank of Working Hours20:00–20:300h30, Banked (Bank of Working Hours)
Overtime duty, day20:30–22:001h30 (incl. 1h00 premium)DayOvertime, day
Overtime duty, day20:30–23:303h00 (incl. 1h00 premium)DayOvertime, day
Overtime duty, night22:00–23:301h30NightOvertime, night
Overtime duty, night, 0h00, none crosses into night under this boundaryNightOvertime, night (none under this boundary)
Work request01:30–05:003h30 (incl. 1h00 premium)NightOvertime, night
Lines so far6

Step 5 of 7

Compensatory Time Off, mirrored

Every paid line above is mirrored into a matching CTO line, at this employee's configured compensatory rate.

This employee's contract banks overtime as time off rather than paying it out, so every paid line above, the holiday shift, the extension, both overtime portions and the work request, is mirrored into a Compensatory Time Off (CTO) line at the contract's configured rate: one and a half hours banked per hour worked, in this illustration.

The Bank of Working Hours line is not mirrored. It was already banked, not paid, so there is nothing left to compensate a second time.

The payroll pipeline's running figures after step 5 of 7.
LineTimeHoursDay / nightPayroll treatment
Holiday shift08:00–13:005h00 (incl. 1h00 premium)DayBank Holiday, day
Shift extension13:00–14:301h30 (incl. 1h00 premium)DayOvertime, day
Overtime duty, banked · Bank of Working Hours20:00–20:300h30, Banked (Bank of Working Hours)
Overtime duty, day20:30–22:001h30 (incl. 1h00 premium)DayOvertime, day
Overtime duty, day20:30–23:303h00 (incl. 1h00 premium)DayOvertime, day
Overtime duty, night22:00–23:301h30NightOvertime, night
Overtime duty, night, 0h00, none crosses into night under this boundaryNightOvertime, night (none under this boundary)
Work request01:30–05:003h30 (incl. 1h00 premium)NightOvertime, night
Compensatory (CTO) · mirrors Holiday shift (new this step), 7h30DayCompensatory Time Off
Compensatory (CTO) · mirrors Extension (new this step), 2h15DayCompensatory Time Off
Compensatory (CTO) · mirrors Overtime, day (new this step), 2h15DayCompensatory Time Off
Compensatory (CTO) · mirrors Overtime, day (new this step), 4h30DayCompensatory Time Off
Compensatory (CTO) · mirrors Overtime, night (new this step), 2h15NightCompensatory Time Off
Compensatory (CTO) · mirrors Overtime, night (new this step), 0h00NightCompensatory Time Off
Compensatory (CTO) · mirrors Work request (new this step), 5h15NightCompensatory Time Off
Lines so far11

Step 6 of 7

Code resolution

Every line, including the meal allowance the holiday shift triggered, resolves to a numeric code from this employee's own configuration tables.

Six configuration tables, Bank Holidays, Bank of Working Hours, Compensatory Time Off, Meal, Overtime and Preventive, map roster and attendance events to the numeric codes the client's payroll system expects. Each table is assigned per employee, so a colleague on a different collective agreement can see different codes for the same hours.

The meal allowance is not one of the four inputs, and it skips the carve-out, the split and the mirroring: it is evaluated once, directly from the holiday shift overlapping the configured meal-time window, and resolved straight to a code here. The Preventive table is not triggered by this employee's day.

The payroll pipeline's running figures after step 6 of 7.
LineTimeHoursDay / nightPayroll treatment
Holiday shift08:00–13:005h00 (incl. 1h00 premium)DayBank Holiday, day · 4014
Shift extension13:00–14:301h30 (incl. 1h00 premium)DayOvertime, day · 4111
Overtime duty, banked · Bank of Working Hours20:00–20:300h30, Banked (Bank of Working Hours) · 4302
Overtime duty, day20:30–22:001h30 (incl. 1h00 premium)DayOvertime, day · 4120
Overtime duty, day20:30–23:303h00 (incl. 1h00 premium)DayOvertime, day · 4120
Overtime duty, night22:00–23:301h30NightOvertime, night · 4121
Overtime duty, night, 0h00, none crosses into night under this boundaryNightOvertime, night (none under this boundary) · 4121
Work request01:30–05:003h30 (incl. 1h00 premium)NightOvertime, night · 4131
Compensatory (CTO) · mirrors Holiday shift, 7h30DayCompensatory Time Off · 4214
Compensatory (CTO) · mirrors Extension, 2h15DayCompensatory Time Off · 4211
Compensatory (CTO) · mirrors Overtime, day, 2h15DayCompensatory Time Off · 4220
Compensatory (CTO) · mirrors Overtime, day, 4h30DayCompensatory Time Off · 4220
Compensatory (CTO) · mirrors Overtime, night, 2h15NightCompensatory Time Off · 4221
Compensatory (CTO) · mirrors Overtime, night, 0h00NightCompensatory Time Off · 4221
Compensatory (CTO) · mirrors Work request, 5h15NightCompensatory Time Off · 4231
Meal allowance · from Holiday shift (new this step)12:00–13:00 (window), (flat allowance), Meal · 4401
Lines so far12

Step 7 of 7

One export

These lines are what a Draft export previews, for one employee, on one day, inside one month.

verified

A payroll officer can run a Draft export for absences, overtime or prevention at any point in the month, for one unit or the whole organisation, as many times as needed. It recomputes fresh every time and never marks anything reported.

Close of month is the one deliberate, irreversible step: it stamps every contributing record as reported and archives the final file, with a cooldown against re-closing it by accident. Every export, draft or closed, stays archived and can be re-downloaded.

The payroll pipeline's running figures after step 7 of 7.
LineTimeHoursDay / nightPayroll treatment
Holiday shift08:00–13:005h00 (incl. 1h00 premium)DayBank Holiday, day · 4014
Shift extension13:00–14:301h30 (incl. 1h00 premium)DayOvertime, day · 4111
Overtime duty, banked · Bank of Working Hours20:00–20:300h30, Banked (Bank of Working Hours) · 4302
Overtime duty, day20:30–22:001h30 (incl. 1h00 premium)DayOvertime, day · 4120
Overtime duty, day20:30–23:303h00 (incl. 1h00 premium)DayOvertime, day · 4120
Overtime duty, night22:00–23:301h30NightOvertime, night · 4121
Overtime duty, night, 0h00, none crosses into night under this boundaryNightOvertime, night (none under this boundary) · 4121
Work request01:30–05:003h30 (incl. 1h00 premium)NightOvertime, night · 4131
Compensatory (CTO) · mirrors Holiday shift, 7h30DayCompensatory Time Off · 4214
Compensatory (CTO) · mirrors Extension, 2h15DayCompensatory Time Off · 4211
Compensatory (CTO) · mirrors Overtime, day, 2h15DayCompensatory Time Off · 4220
Compensatory (CTO) · mirrors Overtime, day, 4h30DayCompensatory Time Off · 4220
Compensatory (CTO) · mirrors Overtime, night, 2h15NightCompensatory Time Off · 4221
Compensatory (CTO) · mirrors Overtime, night, 0h00NightCompensatory Time Off · 4221
Compensatory (CTO) · mirrors Work request, 5h15NightCompensatory Time Off · 4231
Meal allowance · from Holiday shift12:00–13:00 (window), (flat allowance), Meal · 4401
Lines so far12

Illustrative preview · 3 of 12 lines · payroll export field order

Sample export lines in the payroll export's fixed-width field order.
CompanyEmployee no.CodeLineHoursStart–endCost centreMealCorrection
0011048224014Holiday shift5.0008:00–13:0010042NN
0011048224120Overtime duty, day1.5020:30–22:0010042NN
0011048224401Meal allowance, 12:00–13:0010042YN

12 lines from this one illustrative day feed straight into this month's Draft export, alongside every other employee's. Close of month is the step that locks them.

  • Bank of Working Hours (BWH)A per-employee credit balance accumulated by working extra hours and consumed by approved Work Requests.
  • Compensatory Time Off (CTO)Substitute time-off granted in lieu of payroll for working overtime, on holidays, or on weekly off days.
  • Bank Holiday (BH)Payroll category for a calendar holiday day worked.
  • Meal allowancePer-day meal-allowance amount included in payroll.
  • Close-of-monthThe monthly payroll finalisation event that locks in reported hours and produces the export bundle for your payroll system.

Stage 4 of 7 · Allowances

Compensation for working outside the normal schedule, tracked as its own ledger

Meal allowance

Evaluated automatically when a work period overlaps a configured meal-time window for long enough to trigger it, with different rules for holidays than for normal days. configured

Replacement allowance

One table, eight rows, covering every combination of working or non-working shift, normal or holiday day, and the type of day being covered, driving both the balance an employee sees and the payroll value used if that time is cashed out instead. See the four allowance pools.

For employees whose contract banks overtime instead of paying it, every paid line above is mirrored automatically into a Compensatory Time Off entry at their configured rate, nobody has to remember which employees are on which arrangement.

Stage 5 of 7 · Draft, as many times as needed

A preview that never marks anything reported, so running it again costs nothing

A payroll officer can export a draft Absences, Overtime or Prevention file at any point in the month, for one unit or the whole organisation, recomputed fresh from current data every time. Configuration problems, an employee with no overtime table assigned, for instance, surface as warnings on the export itself rather than silently dropping that person or failing the whole run.

Stage 6 of 7 · Close, exactly once

The one deliberately irreversible action in the whole sequence

Closing the month stamps every contributing record as reported, so nothing can accidentally export twice, and archives the final file. The Close button stays disabled for 20 days after a month has just been closed, as a safety net against closing it again by accident. verified

Every export, draft or closed, stays permanently archived and can be re-downloaded later, nothing is delivered only once. If a past, already-closed month's approved leave is later edited or cancelled, the engine produces month-over-month correction lines instead, so a correction discovered late is never simply lost.

Stage 7 of 7 · What a payroll officer checks before signing off

A short list, run every month, not a leap of faith

Before the draft looks clean

Every configuration warning from stage 5 resolved, every employee assigned to the right code table, the justification queue from stage 2 either empty or explained, not silently skipped.

Before pressing Close

Correction lines from any reopened past month accounted for, cost centres landing in the right bucket for a multi-site organisation, and the knowledge that this action cannot be undone for 20 days if it turns out to be wrong.

Every payroll-settings and replacement-allowance change carries a full audit trail, who changed which value, from what, to what, and when, and a payroll debug export can show the exact calculation steps behind any single figure a dispute later questions.

Bring a month-end that took four days.

A working session runs your own overtime rules, your own code tables and a real month's worth of exceptions through this sequence, so you see exactly which parts stop being manual.