From Rostered Hours to an Actual Payslip: Award-Aware Payroll for Support Workers
Ask most NDIS providers how they pay support workers and you'll hear some version of the same answer: someone exports hours from the roster, opens a spreadsheet, and manually works out which shifts get a Saturday loading, which get a Sunday loading, which cross into the evening or overnight penalty window — then hopes nothing was missed before it goes to the accountant. That manual step is exactly where underpayment claims start, and it's the gap between 'we track hours' and 'we pay correctly.'
The core problem: hours worked and wages owed are not the same number. A support worker's pay isn't hourly rate times hours — it's hourly rate times hours, split by exactly when those hours fell: ordinary weekday time, Saturday, Sunday, public holiday, evening, overnight, each at its own multiplier under the Social, Community, Home Care and Disability Services Industry Award (SCHADS). Get the split wrong and you're either underpaying a worker — a real compliance risk — or overpaying without knowing it, which quietly erodes margin on every shift roster generates.
What we built prices every shift the way it would actually be paid. Every completed shift is broken down by day type and time of day — ordinary, Saturday, Sunday, public holiday, evening, night — each priced at its own configurable multiplier, plus casual loading where it applies. The rates aren't hard-coded: they live in Settings as tenant-editable numbers, because award rates change (typically each 1 July) and no software should quietly go stale on something this consequential. Public holidays sync automatically from the official government calendar for your state, so nobody has to remember to type in a date by hand.
Hours become a payslip through a real approval chain, not a spreadsheet export. A coordinator generates a draft timesheet per worker for a pay period, reviews the priced breakdown, and approves it — at which point it locks. Approved timesheets for a period roll up into a pay run: one line per worker, wages plus superannuation, with the pay run itself finalised (and locked) once it's right. Nothing about that chain is silent — every approval, rejection, and reopen is logged, because a payroll record that can be edited without a trace isn't a payroll record.
Superannuation is calculated, not left as a reminder. The Superannuation Guarantee percentage is a tenant setting applied automatically to every pay run's ordinary earnings — no separate manual calculation, and no risk of the percentage quietly falling out of date after the next legislated increase.
How to actually run it, step by step:
1. Set your Award rates. Go to Settings → Award Settings and check the Saturday, Sunday, public holiday, evening, night, casual loading and Superannuation Guarantee percentages against the current SCHADS Award and ATO rate — the defaults are a starting point, not a guarantee, and this is the one step worth doing carefully before anything else.
2. Sync your public holidays. Still on Award Settings, click "Sync from official calendar" to pull this year's and next year's national and state public holidays automatically. Review the list — add or remove a date if your state has something unusual — then save.
3. Set each worker's pay rate. On a worker's profile (Support Workers → Verification), make sure their hourly rate and employment type (full-time, part-time, or casual) are filled in. A shift with no rate set is deliberately excluded from pricing rather than guessed at, so this step is what makes the rest of the pipeline work.
4. Generate timesheets for a pay period. Go to Payroll → Timesheet Approvals, pick the period's start and end date, and click "Generate timesheets for this period." One draft timesheet is created per worker, built from their completed shifts in that range, already priced against the Award rates from step 1.
5. Review and approve. Open each worker's timesheet to see the shift-by-shift breakdown — date, time, hours, and the dollar amount for each. If it looks right, hit Submit, then Approve. An approved timesheet locks: editing a shift afterwards won't silently change what was already signed off. Found a mistake after approving? Reopen puts it back in draft — logged, not silent.
6. Generate the pay run. Go to Payroll → Pay Runs, enter the same period dates, and click "Generate pay run." It pulls in every approved timesheet for that exact period and produces one line per worker: hours, wages, superannuation, and total cost.
7. Finalise and export. Check the totals, then click Finalise to lock the pay run — from this point it's the payslip-of-record and won't recalculate if something upstream changes. Click "Export CSV" to download a file with every worker's wage, super and total, ready to hand to your bookkeeper or import into Xero, MYOB, or whichever accounting platform you use.
That's the whole loop: Award rates and public holidays are set up once and revisited yearly, worker rates are set once per worker, and steps 4 through 7 repeat every pay period.
Where it's honest about its limits. Weekly overtime isn't priced yet — it genuinely depends on a worker's total hours across the whole pay period, which is exactly the aggregation a pay run performs, so it's the natural next layer rather than a guess bolted onto a single shift. And there's no direct Xero, MYOB or Single Touch Payroll connection built in — that requires the provider's own credentials with that platform. What's there instead is a clean CSV export from every finalised pay run: worker, hours, wage, super, total — the universal format every accounting platform and every bookkeeper can take from here.
The bigger point isn't the individual numbers — it's that the whole chain, from a rostered shift to a dollar figure a worker is actually paid, now happens inside the same system that built the roster in the first place, instead of a manual handoff to a spreadsheet where the real risk always lived.
