---
title: "Run a staff hours report"
description: "Get total hours, break time, and overtime flags for every staff member across a date range — for payroll reconciliation and labor forecasting."
type: guide
updated: 2026-09-14
canonical_url: https://help.nestlicare.com/owners/reports/run-a-staff-hours-report
roles: ["super_admin", "center_admin"]
platforms: [web]
---
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.

<ScreenshotWithPointers
  src="/screenshots/owners/reports/staff-hours-report.png"
  alt="The Staff Hours report: per-staff totals, an hours-by-staff chart, and a detail table with overtime flags"
  caption="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 support@nestlicare.com.
