Timesheets

Approving and exporting timesheets

Approve hours to lock the pay rate, unapprove to correct, and export the week as a CSV.

Updated 19 July 2026 · 4 min read

Approving locks a timesheet entry and freezes its pay rate. Exporting hands the week to payroll as a CSV. They are separate steps — and exporting does not require approval first.

Approving

Approve at two granularities:

  • A whole staff row — the row's approve icon approves all that person's draft entries for the week.
  • A single entry — open the entry sheet and use its Approve button.

Either way, only entries currently in draft are affected.

Approving snapshots the staff member's hourly rate onto the entry and locks it. From then on that entry uses the rate as it was at approval, even if you later change the person's rate. An unapproved (draft) entry uses the person's current rate.

This is why you approve before payroll: it pins the pay at the rate that applied to that week's work.

Approving needs the timesheets-approve permission. A locked entry cannot be edited — you get "Approved entries are locked. Unapprove it first."

Unapproving

Made a mistake in an approved entry? Open it and click Unapprove. It reverts to draft and clears the rate snapshot, so it goes back to using the live rate. Then correct it and re-approve.

This is the intended way to fix an approved entry — not a hidden or dangerous action.

Exporting

The Export button in the page header downloads the current week as a CSV.

Export does not filter by approval — it includes drafts. The button exports every entry in the week you are viewing, across all staff, drafts and approved alike. Approval status is a column in the CSV, not a filter on it. So it is entirely possible to export unapproved hours.

If payroll should only see final numbers, approve the week first, then export — otherwise draft entries (at the live, un-snapshotted rate) go out too.

The CSV columns are: Staff, Date, Start, Finish, Break (min), Hours, Hourly Rate, Pay, Status, Customer, Route, Notes — plus a TOTAL row at the end. It is UTF-8 with a byte-order mark, so Excel opens it cleanly. The file is named timesheets-<weekStart>-to-<weekEnd>.csv.

There is no server-side export or scheduled export — it is generated in your browser, for the week on screen.

Tutorial: run payroll for last week

Turn last week's crew hours into a clean payroll file.

Go to the week and check the colours

Open Timesheets, step back to last week, and scan for amber. Every amber cell is an unapproved entry — a number that is not final and would export at the live rate.

Verify before you approve, not after

Approving locks the entry. So check the hours against reality first — open any cell that looks off and confirm the Start, Finish, and Break. Once approved, you have to unapprove to change it.

Approve each person's week

Use the approve icon on each staff row to approve all their drafts at once. The row turns green. This snapshots each entry at the person's current rate — which is exactly the rate you want to pay for that week.

Fix a mistake by unapproving, not fighting the lock

If you spot an error after approving, open the entry and click Unapprove. It goes back to draft, the rate snapshot clears, you correct it, and you re-approve. Do not try to edit a locked entry — it will refuse.

Only export once it's all green

This is the step that matters. Export includes drafts. If you export with amber still on the grid, unapproved hours at the live rate go to payroll. Get the whole week green first, then click Export.

Open the CSV and sanity-check the TOTAL

The file has a TOTAL row — total hours and total pay. A quick glance at it catches a gross error before it reaches payroll. Then hand the CSV over.

Can't find what you need?

Our support team is here to help.

Contact support