The Timesheets page is where you go after employees have punched in for the week. It's the bridge between "what actually happened" and payroll.
Find it at Dashboard → Timesheets in the sidebar. The nav entry only appears for paid plans (Starter+) — see plans & limits.
What's on the page
A pay-period list of every clock-in your team has submitted, with three tabs:
- Needs review (default) — entries that need a manager to look at them. Off-site punches, manual entries the manager created, and shifts where someone never clocked out.
- Approved — entries already signed off on. Ready for payroll.
- All — combined.
The badge next to "Needs review" counts the entries waiting on you — drops as you approve.
The status chips
Every row carries a status chip so you can scan the list and see what's going on:
| Chip | Meaning |
|---|---|
| Approved | Manager has signed off. Counts toward payroll. |
| 1.2 km off-site | Punch came in but the GPS coords were outside the configured radius. Look at the entry to decide if it's legit (e.g. they parked across the street). |
| Manual | A manager created this entry by hand, e.g. for someone who forgot to clock in. |
| No clock-out | They punched in but never punched out. Edit the entry to add a clock-out, or message them to do it from their original SMS link. |
| Pending | Punch was inside the radius but no manager has explicitly approved it yet. |
Editing an entry
Click any row to open the edit drawer.
- Clock-in and clock-out are full date+time pickers. You can move them by minutes.
- Notes is a free-text field for context that'll show up in the export.
- Reason for change is required any time you change a time or notes. The reason is logged in the audit trail alongside your identity and a timestamp — every edit you make is visible to anyone else with timesheet access. This matters for payroll disputes and (in healthcare/DSP contexts) for EVV submission.
The drawer also shows the entry's full edit history at the bottom — who's touched it before you, what they changed, and why.
Approving
Three ways:
- Per-entry — open the drawer, hit Approve. Saves immediately.
- Bulk — check the boxes next to rows on the list, then click "Approve N entries" in the sticky bar that appears at the bottom. Lets you sign off a whole shift's worth of clean punches in one click.
- Auto-approval — punches that landed inside the geofence are auto-approved at the moment of clock-in. They land in the Approved tab without you doing anything. The Needs Review tab is, by design, where the exceptions surface.
Approving is a lifecycle action, not an edit — there's no reason field, no audit row. If you need to un-approve (revoke approval, e.g. because you spot an error after-the-fact), the edit drawer has an unapprove button that takes the row back to Pending.
Filters
Above the table:
- Week navigator —
‹ Jun 1 – Jun 7 ›. Click the date range to jump to "this week." - Location — only shows up if you have access to more than one. Managers scoped to a specific location only see that one's entries; this filter narrows further if you have several.
- Search employees — client-side filter over the loaded set.
Exporting
The Export CSV button in the header downloads the current filtered view as a payroll-friendly CSV:
Employee, Location, Date, Clock In, Clock Out, Duration (hours), Method, Status, Notes
Filename includes the date range (timesheets-2026-06-01-to-2026-06-07.csv) so payroll teams can save them in a sensible folder structure.
For now we ship CSV only. PDF export (for printed pay stubs) and direct payroll-provider integrations are on the roadmap.
Backfilling a missed punch
Sometimes someone shows up, works the shift, and never touches the punch link. Add the entry manually:
This isn't currently surfaced on the UI in Phase 1 — for now, an employee who missed clock-in can re-tap the link in their original shift-alert SMS during the grace window (default 4h after shift end). If they're outside the grace window, an admin needs to file the entry from the API or wait for the upcoming "Add manual entry" button (Phase 1.5).
Plan availability
Timesheets is gated to Starter and higher. The nav entry doesn't appear at all for Free orgs — there'd be nothing in it because Free doesn't have clock-in.
Job coding (Pro+)
On Pro plans and up, timesheets gains a "what was the work" layer alongside the "when" — see Job coding & subjects for the full setup. In short:
- Punch fields — custom metadata per entry. Service codes, cost codes, billable matters, completion notes — whatever your business tracks.
- Subjects — the universal "for whom" axis. Configured per-org as Customers / Projects / Members / Matters / Clients — same table, different vocabulary.
- Auto-attach — subjects attached to a planned shift flow into every clock-in automatically. The DSP working at Maple House supporting John + Mary doesn't have to re-enter that on every punch.
On the Timesheets list, subject chips render next to the employee name. The edit drawer adds inputs for every configured field plus a multi-subject picker.
What's coming next (Phase 2.2 — custom exports)
Adapter library for vertical-specific export formats:
- EVV aggregators — Sandata, HHAeXchange, Tellus, CareBridge formats for Medicaid-funded services. Service codes and recipient IDs flow straight into the state's pipeline.
- Certified payroll — WH-347 + Davis-Bacon reports for construction GCs on government projects.
- Customer-invoice CSV — trades, cleaning, legal billable hours sliced by customer/matter.
- Direct integrations — push to QuickBooks Online, ADP, ServiceTitan without a CSV middleman.
We build adapters as paying customers ask. Tell us what format you need and which downstream system; that's how we prioritize.