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.

guideUpdated 2026-09-14 Raw markdown

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

  1. Reports → Staff Hours in the sidebar.
  2. Pick center (or "All centers") and a date range.
Screenshot pendingThe Staff Hours report: per-staff totals, an hours-by-staff chart, and a detail table with overtime flags
Stat cards (staff with time entries, total hours, break time, overtime count), an Hours by Staff Member chart, and a detail table that flags anyone over 40 hours.

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:

  1. Filter to the pay period.
  2. Export CSV.
  3. Sanity-check totals against what you're about to approve.
  4. 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

  1. Export CSV.
  2. Add a Rate column (pull from Staff & Time → Staff → [person] → Pay Rate).
  3. Multiply Hours × Rate per staff.
  4. 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].

Related articles

Was this article helpful?