Running Payroll Reports in Command Established
Paying firefighters is rarely as simple as hours × rate. A 24/48 rotation means shifts that cross midnight. Kelly days pull members off the schedule. Vacation, sick, FMLA, and school time all need to be counted separately. Command Established's payroll report rolls it all up for any pay period you pick, then hands you a CSV you can drop straight into your payroll processor.
When to Use Payroll Reports
The payroll page handles any pay period you run:
- Bi-weekly — the default cadence for most combination and career departments. Use the "Last pay period" preset for the two-week block ending last Sunday, or "This pay period" for the current one.
- Monthly — common for stipend-based volunteer departments. "Last month" gives you the full previous calendar month in one click.
- Custom ranges — pull any arbitrary date range with the date-range picker. Useful for grant reporting, overtime reviews, or reconciling a single incident's staffing.
The report understands how your schedule is built. 24/48 rotations, Kelly-day patterns, trades, and callbacks all roll up correctly. Overtime is broken out on its own so you can see exactly where it came from, and every time-off category — Vacation, Sick Leave, Personal, Bereavement, FMLA, Military, Comp Time, Injury, Administrative, Kelly Day, School Time, Jury Duty — has its own column.
Generating a Report

From Schedule > Payroll, the page starts with no period selected — no implied monthly or bi-weekly bias. Click a preset (Last pay period, This pay period, Last month, This month) or use the date-range picker to pick custom dates. As soon as the range is valid, the report generates. No "run" button.
The Ad-hoc mode is for focused reports on a single category — say, you need a quick list of everyone who took FMLA last quarter. Switch modes, pick the categories you want, and you get a simplified Name / Category / Hours table instead of the full breakdown.
Reading the Report
Each row in the main table is one member, with their hours broken out by type:
- Work Hours — time actually worked (regular shift time, callbacks, details).
- Time-off columns — one per active category. Only categories with hours in the period show up, so the table stays compact. Kelly days and FMLA land in their own columns, not lumped into a generic "leave" bucket.
- Overtime — appears as its own column whenever any member has overtime in the period.
- Total — the sum. This is what payroll cares about.
Members with zero hours across the board are filtered out, so you don't have to scan past people who didn't work the period.
Per-Person Detail

Click any row and a detail pane slides in from the side. It shows the full daily breakdown for that member: every day in the period, with scheduled hours, worked hours, exception notes, and a status label (Worked, Scheduled, a specific time-off category, or blank for off days).
Use it when a member questions their total, when an officer is spot-checking numbers, or when you're reconciling against a sign-in sheet. The breakdown is also the fastest way to catch a missing exception — if a sick day wasn't entered, the day will show as "Scheduled" with zero worked hours, and the total comes up short.
Exporting to CSV
The Export CSV button (top-right) downloads the current report in a format that drops straight into most payroll processors and ISO audit templates:
- UTF-8 with a byte-order mark — opens cleanly in Excel, Google Sheets, and every payroll importer we've tested.
- One row per person — with columns for work hours, each active time-off category, overtime, and total.
- Filename includes the date range —
payroll_2026-04-01_2026-04-14.csv, so multiple exports don't overwrite each other in your downloads folder.
Hand the file to whoever runs payroll — your bookkeeper, your treasurer, or your service (ADP, Paychex, Gusto, your municipal finance office). The column layout is stable across runs, so a saved import mapping keeps working from one pay period to the next.
The pattern most departments settle into: pick "Last pay period" on Monday morning, glance at the totals, click any row whose number looks off to review the daily breakdown, and hit Export CSV. Ninety seconds from page load to a file headed out the door.