Run a staff hours report
Get total hours, break time, and overtime flags for every staff member across a date range — for payroll reconciliation and labor forecasting.
The staff hours report aggregates clock-ins and clock-outs into per-person totals. Use it for:
- Payroll reconciliation — verify hours match approved timesheets before running payroll
- Overtime spotting — flag anyone over 40 hours so you can plan (pay it, schedule less, hire more)
- Labor cost forecasting — multiply hours × rates to project monthly labor cost
Run it
- Reports → Staff Hours in the sidebar.
- Pick center (or "All centers") and a date range.

What the numbers mean
- Total Hours — sum of all clock-in/clock-out pairs in the range
- Break Time — minutes tracked as breaks within shifts
- Days Worked — distinct calendar days with at least one time entry
- Status — "Overtime" flag if Total Hours > 40, "Normal" otherwise
Overtime is flagged at 40 hours per the date range you filtered by, not per week. If you filter to two weeks, anyone over 40 total shows up — that's 20 hours/week average, not OT by US federal law. For weekly OT analysis, filter one week at a time.
Common use cases
Pre-payroll check
Before running payroll:
- Filter to the pay period.
- Export CSV.
- Sanity-check totals against what you're about to approve.
- If anyone's missing, go to their timesheet and see if there are unreviewed entries.
Identifying clock-out problems
Someone showing zero hours for a day they definitely worked means their clock-out is missing. Check the Data Health report — the "Open time entries" section lists every unclosed shift.
Labor cost model
- Export CSV.
- Add a Rate column (pull from Staff & Time → Staff → [person] → Pay Rate).
- Multiply Hours × Rate per staff.
- Sum for total labor cost for the period.
What the report doesn't include
- Pay rates — not in this report. Cross-reference to the staff detail page.
- PTO / leave — tracked separately; this report is worked hours only.
- Historical trends — shows a single date range at a time. For quarter-over-quarter, export multiple and combine.
Export and print
- Export CSV — Staff Member, Job Title, Total Hours, Break Minutes, Days Worked, Status. Filename:
staff-hours-{start}-{end}.csv. - Print — chart + table.
Annotations at the bottom: "3 staff on paid training Dec 14 — hours included but not billable."
Troubleshooting
Staff member's hours look way off. Probable causes:
- Missing clock-out — shows as low hours. Check Data Health → Open time entries.
- Clock-in to wrong center (multi-site orgs) — their hours went to the other center's report.
- Auto-closed entries — NestliCare auto-closes shifts that go 16+ hours without a clock-out. Those show with a flag; audit them.
Break time column shows 0 for everyone. Your timesheet config doesn't track breaks, or teachers aren't clocking out for breaks. Either is OK — just means break math isn't happening.
Overtime count looks inflated. Check your date range. If you filtered a 3-week period, lots of staff will exceed 40 even at normal hours.
Someone worked but doesn't appear in the report. They have zero approved time entries in the range — unlikely unless they forgot to clock in every day. Check their timesheet for drafts.
Export CSV is missing the status column. Check that you're running the current version; we added status in 2026. If it's still missing, email [email protected].
