Payroll detail#

For: Manager | Admin You’ll need: Permission to view reports (your manager will know).

The Payroll detail report is the shift-level detail behind Payroll summary — one row per shift, plus a row for each workday that owes extra pay for a missed break. Absences are not included. A shift with recorded hours stays in even after it’s cancelled or declined. Use it to audit a payroll number, answer “why is Maria’s gross pay this much?”, or hand a shift-by-shift file to your payroll vendor.

Open the report#

  1. In the sidebar, open Reports → Payroll detail.

Filter the data#

Same filter pattern as Payroll summary.

  1. Open the period dropdown in the toolbar and pick a range — the same list as the payroll summary, including ‘This bi-weekly’ and ‘Last bi-weekly’ right after ‘Last week’.

  2. (Optional) Click the filter icon in the toolbar, choose ‘Location’, tick one or more locations, and click ‘Apply’.

  3. (Optional) Open the filter menu again and do the same for ‘Person’, then for ‘Status’.

For free-form dates, choose ‘From’ and ‘To’ from that same menu — the dropdown switches to ‘Custom’. Each filter you add shows as a chip under the toolbar — click the chip to change it, × to remove it, or ‘Clear’ to drop them all.

Read the missed-break pay rows#

Where a break policy pays for missed breaks, each workday and kind of break that owes, waits or is excused gets its own row, dated by its workday. The ‘Position’ column names the kind — ‘Meal break’ or ‘Rest break’ — and ‘Missed-break pay (h)’ shows the hours with the person’s answer and a manager’s reason beneath. Its ‘Status’ reads ‘Payable’, ‘Pending’ or ‘Excused’; a pending row shows no hours yet. The shift columns read “—”: these hours stand outside worked time, overtime and the cost, and your payroll applies the rate. See How missed-break pay works.

Export#

See Export a report (CSV, XLSX, PDF) for CSV, XLSX, and PDF details.

The CSV is semicolon-delimited and includes ISO datetimes for the shift start and end, the applied multiplier, the multiplier breakdown, and the cost in decimal currency units alongside a currency_code column (CHF 123.45 arrives as 123.45 + CHF, not as cents). The multiplier_breakdown field is a string like overtime:1.25+sunday:1.50; on a base-rate-only row it’s empty — “regular” never appears there.

The last columns tell the two kinds of row apart: row_type is shift or premium, and a premium row fills break_kind, premium_hours, premium_status, break_answer and manager_reason. On a shift row they’re empty, and a pending row’s premium_hours is empty rather than zero.

Read the total row#

A bold ‘Total’ row closes the per-person chart with the cost summed across everyone currently on the list, after your filters.

Verify it worked#

Sum the per-shift cost rows for one person — the total should match that person’s gross pay in Payroll summary for the same period, minus absence pay, since this report covers shifts only. The missed-break pay rows of one person add up to their ‘Missed meal pay (h)’ and ‘Missed rest pay (h)’ in the summary.