Download the checklist and sample
The two CSVs were produced by Zchedule's own attendance export from made-up records: three people, three days, ten rows. The names and times are illustrative.
The checklist
- Confirm the pay period dates and the day your workweek starts.
- Check everyone who worked is in the file, including anyone who joined or left during the period.
- Close every open punch. A shift with a clock-in and no clock-out can be counted up to the moment you export.
- Look at rows with no scheduled shift, and decide whether each one is real work, a duplicate or a mistake.
- Look at rows built from the schedule instead of punches, and confirm the person actually worked those times.
- Check breaks and unusually long shifts against what you know happened.
- Make sure every correction says who asked, who changed it, why, and what evidence you used.
- Compare paid hours in the export with the timesheet total, overall and per person.
- Send the final file, note when, and keep it with the correction log.
For the most common problem, a forgotten clock-out, the guide to fixing missed clock-outs walks through confirming the real end time and logging the change.
Three problems in a sample export
The first file was exported on a Thursday morning, after three days of shifts. Only one of its ten rows was marked as needing attention, yet three rows were wrong.
| Row | What the export said | What it really was | After the fix |
|---|---|---|---|
| Jordan, Tue Jan 12 | Clock-in 10:57 AM, no clock-out, Needs Attention, 46.05 worked hours | An open punch, counted up to the time of the export | Clock-out 7:05 PM confirmed with Jordan and the closing checklist: 8.13 worked, 7.63 paid |
| Maya, Wed Jan 13 | Source Schedule, Assumed Yes, punch columns blank, 8.00 paid hours | No punches at all. The row copied the schedule, with no break | Times confirmed with Maya and the opening log, 30-minute lunch: 7.50 paid |
| Priya, Wed Jan 13 | Clock-in 3:10 PM, clock-out 3:40 PM, no scheduled times, Completed | An accidental clock-in after her shift | Voided with a reason: 0.00 hours |
Two lessons from the sample:
- The status column isn't enough. Two of the three problems said “Completed”. Look at the Assumed column and at rows with blank scheduled times as well.
- The three problems put the period at 106.83 paid hours instead of 67.92, and almost all of the difference was the one open punch. Its status said Needs Attention and its clock-out was blank, but its Worked and Paid Hours were filled in with time up to the moment of export, and the timesheet totals included them. Close open punches before you export, not after.
Control totals
A control total is one number you check from two directions. Here, the scheduled hours were 72.00, and after the fixes the timesheet showed 72.42 worked and 67.92 paid. Worked hours above the schedule are normal when people clock in a few minutes early; paid hours are lower because of unpaid lunches.
| Person | Timesheet total | Sum of export rows |
|---|---|---|
| Maya | 22.58 | 22.58 |
| Jordan | 22.72 | 22.71 |
| Priya | 22.62 | 22.61 |
| Total | 67.92 | 67.90 |
The export rounds each row to two decimals; the timesheet adds minutes first. That is why the rows add to 67.90 and the total says 67.92. Know which number your payroll system uses. If you convert times by hand, the minutes to decimal hours converter shows the exact math.
Records and the law
Timesheets in Zchedule
- Every punch is matched to its shift. Open punches and clock-ins with no shift are flagged for a decision.
- Until an open punch is closed, its hours in the timesheet and CSV run up to the time you look, so resolve open punches before exporting.
- Rows built from the schedule are marked Assumed, and their punch columns stay blank, so they can't pass as real punches.
- The attendance CSV has scheduled times, punches, breaks, worked, paid and overtime hours, with the note for each correction.