Skip to content
SkyRosterBook a working session

Platform · Payroll export

SkyRoster does not run payroll. It works out, to the minute, what payroll owes.

From the roster and the attendance record, the engine computes exactly which minutes of an employee's month are overtime, holiday work, absence or allowance, resolves each into your own payroll codes, and exports a file your payroll system can ingest directly. This is a rules engine, not a spreadsheet export.

Overtime

Four pipelines, because extra time has four different sources

Holiday shifts

A shift worked on a public holiday.

Overtime duties

Approved duty requests coded as overtime.

Shift extensions

Time added before or after a scheduled shift.

Work requests

Ad hoc extra shifts picked up on a day off.

Each pipeline independently resolves the correct payroll code for the hours it covers. A shift that touches two or three of these at once, a holiday shift picked up as a work request that also runs past its scheduled end, is not a special case someone has to catch by hand; each pipeline contributes its own line.

The pipeline

One day's work, followed to the export

Step through what happens to a single day between the roster and the payroll file.

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.

Splitting the hours

Day and night, split at a boundary you set

Day/night split

Any overtime period that crosses the configured night-shift boundary is automatically split into separate day and night line items, each carrying its own rate, including shifts that cross midnight, where the split still lands correctly on either side.configured

First-hour premium

Many labour agreements pay a higher rate for the first hour of overtime than for the hours after it. The engine detects and marks that first hour separately, per period, without anyone flagging it by hand.

Where the hours can go instead of cash

Compensatory time off and Bank of Working Hours

Compensatory Time Off (CTO)

For employees whose contract lets them bank time off instead of being paid for overtime, every overtime line is automatically duplicated as a CTO-coded entry at the configured compensatory rate, nobody has to remember which employees are on which arrangement.

Bank of Working Hours offsetting

When an employee spends hours from their own Bank of Working Hours to cover a duty instead of it counting as overtime, the engine carves out exactly the BWH-covered portion before calculating what remains as paid overtime. See how the pools work.

Allowances

Meal allowances and replacement allowance, both configuration-driven

Meal allowances

The engine evaluates whether a work period overlaps a configured meal-time window for long enough to trigger the allowance, with different rules for holidays versus normal days and for different request types.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. Each row sets either a percentage uplift or an absolute value, and its own validity window up to 364 days. The same table drives both the granted-allowance balance an employee sees and the payroll value used when that time is cashed out instead.configured

Absences and cost

Leave as a payroll line, and cost centres as the accounting key

A separate pipeline tracks every approved leave and duty as a payroll "absence" line, correctly excluding public holidays and weekends per that leave type's own rules. If a past month's approved leave is edited or cancelled after the month has closed, the engine produces month-over-month correction lines, added or removed, so a correction discovered late is never simply lost.

Every unit carries a cost centre, a short accounting code the export uses to classify an employee's hours and allowances for the payroll system, so a multi-site organisation's figures land in the right bucket without manual reclassification.

Configuration

Six code tables, assignable per employee

Bank Holidays, Bank of Working Hours, Compensatory Time Off, Meal, Overtime, and Preventive, six configuration tables map roster and attendance events to your own numeric payroll codes. Each is independently assignable per employee, so one collective-bargaining group can run on a different overtime code table than another in the same organisation.configuredRecorded changes identify who changed which value, from what, to what, and when, which matters the day a payroll figure is disputed months later. Customer-facing history views are part of Audit & History, included in SkyHeavy or available as an add-on.

The monthly close

Draft as many times as you need. Close exactly once.

Draft export

Preview an Absences, Overtime or Prevention file at any point in the month, for one unit or the whole organisation, as many times as needed. It recomputes fresh from current data every time and never marks anything reported, so it is safe to run repeatedly. Configuration problems, an employee with no overtime table assigned, for instance, surface as warnings on the export rather than silently dropping that employee or failing the whole run.

Close of month

An explicit, deliberately irreversible action. It 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.

Every export, draft or closed, is permanently archived and can be re-downloaded later, nothing is delivered only once. The output itself is a fixed-width text file, one line per payroll item, carrying the employee's job number, the payroll concept code, the date, hours or days, start and end time, cost centre, and a flag distinguishing a fresh line from a correction, built to be read directly by your payroll system with no manual reformatting.

Bring your payroll code tables.

A working session is where we map your actual overtime, meal and replacement-allowance codes onto this engine and show you the export it produces from a real month.