Rostered vs Actual Hours
Note: Screenshots in this article use data from our internal demo organisation. Any organisation IDs or user IDs visible in the screenshots reference our demo dataset, not your or any other customer's data.
🎯 Overview
Compare what employees were scheduled to work against the hours they actually worked, in one view.
This report:
- Shows rostered hours (planned), actual hours (paid via payroll), and the variance between the two
- Breaks the comparison down by location, by employee, and shift-by-shift
- Covers shifts within the selected date window, with employees and locations attributed based on where the shift was worked
Use this dashboard to:
- Spot locations or employees consistently working more or fewer hours than planned
- Investigate individual shifts where the actual hours differ from the roster
- Support payroll and scheduling reviews with a single variance figure per employee or location
➕ Benefits
- Catch over- and under-runs against the roster before they become a payroll surprise
- Pinpoint where variance is concentrated — by location first, then drill into the employee or shift driving it
- Reconcile scheduling and payroll data side-by-side without exporting to a spreadsheet
🗂️ Dashboard Tabs
| Tab | What it shows | Best for |
|---|---|---|
| By Location | Rostered, actual, and variance hours summed per location | Spotting which sites are running over or under plan |
| By Employee | Rostered, actual, and variance hours summed per employee | Identifying individuals driving the variance |
| Detail | Shift-by-shift breakdown with start and end times | Investigating a specific shift or day |
By Location
Start here for the big picture. This tab aggregates hours per location so you can see at a glance which sites are over- or under-running against the roster, with a Latest Data Sync indicator at the top.
- Rostered vs Actual Hours by Location — one row per location showing rostered_hours (total planned shift hours, net of breaks), actual_hours (total paid hours from payroll), and Variance (rostered minus actual). A positive variance means rostered hours exceeded what was actually paid; a negative variance means employees worked more than planned.
By Employee
Use this tab to identify individual employees driving the variance you spotted at location level. A Latest Data Sync indicator sits at the top of the tab.
- Rostered vs Actual Hours by Employee — one row per employee with Employee Number, Employee Name, Job Title, rostered_hours, actual_hours, and variance. Sorted alphabetically by employee name.
Detail
Drill into the individual shifts behind the totals. Each row is a single shift, sorted by most recent first, with a Latest Data Sync indicator at the top.
- Rostered vs Actual Hours — one row per shift showing full_name, location, shift_type, start_date, shift_start_time, end_date, shift_end_time, shift_length_hrs (rostered length, net of breaks), actual (paid hours from payroll), and variant (rostered minus actual for that shift).
🎛️ Filters
Standard Filters
These filters appear across all Reporting Suite dashboards:
- Location / Parent Location / Grandparent Location — filter by organisational hierarchy
- Job Title — filter by employee role
- Full Name / Employee ID — find a specific employee
Report-Specific Filters
| Filter | Default | What it does |
|---|---|---|
| Shift Start Date | Previous 1 week | Limits the dashboard to shifts starting in the selected window |
| Shift Location | -- | Narrows results to shifts worked at a specific location (rather than the employee's base location) |
| All Locations Downstream From | -- | Includes every location nested beneath the selected parent in the org hierarchy |
📅 Date Filtering
The Shift Start Date filter drives every figure on the dashboard and is based on when each shift started. By default it shows the previous week's shifts; change it to widen or narrow the comparison window.
❗️ Important Definitions
- Rostered hours — the planned length of each shift on the roster, with any scheduled break time deducted. Summed across all shifts in the selected window.
- Variance — rostered hours minus actual hours. A positive number means more was rostered than paid (under-run); a negative number means more was paid than rostered (over-run).
❓ Common Questions
Why don't actual hours match the roster exactly?
Actual hours come from approved payroll data — what employees were paid for — while rostered hours come from the planned schedule. Differences arise from clock-in/out variations, shift swaps, cancelled or extended shifts, and unpaid breaks. The Detail tab lets you see exactly which shifts contributed to the variance.
Why is an employee's actual hours showing as zero?
Actual hours only appear once the shift has been processed through payroll as a paid entry. If a shift has been rostered but isn't yet approved or paid, it will show rostered hours with zero actual hours, producing a variance equal to the full rostered length.
🗓️ Data Coverage
-
Data freshness: Refreshes every 30 minutes via the automated data pipeline. Check the
Latest Data Syncindicator on the dashboard for the exact timestamp.
⬇️ Downloading Data
- To download the current view as a PDF, click the download button in the top-right corner of the dashboard.
- To download an individual chart or table as CSV or Excel, click the download button in the top-right corner of that chart.