How to use the app to track your shifts, verify your pay, and stay on top of your balances.
Firefighter Pay Tracker keeps a record of your work so you can stay on top of your pay and leave balances. Log your shifts, and the app calculates your expected pay, tracks all your leave balances, flags your upcoming holidays, and gives you the tools to catch and resolve payroll errors.
The core workflow is: log shifts → calculate pay → compare to paystub → track discrepancies. But even between paychecks, the app keeps your leave balances current so you always know where you stand.
After creating an account, a three-step setup wizard gets you going. Have a recent paystub handy — you'll need it for your hourly rate and leave balances.
Everything can be updated later from the Profile page. Setup just gives the app a starting point.
There are two ways to add shifts, depending on how much detail you need.
Tap Add Shift from the dashboard or navigation bar. You'll see a list of templates — common shift configurations you can apply in two taps:
Quick Add is great for catching up on multiple days at once. Select all the dates for the same type of shift and create them in one batch.
Choose Full Shift Form from the template list, or edit any existing shift. The full form gives you access to every field:
Use the full form any time you used leave, earned a bonus, or banked time on a shift.
If you have a shift configuration you use often (e.g., SOD with rescue ambulance hours), fill out the full form once, then tap Save as Template. Give it a name, and it shows up in your Quick Add list going forward. Templates save you from re-entering the same details every time.
You can enter shifts for future dates. The app treats them as scheduled — they show up in your shift history with a Scheduled badge but don't affect your current balances or pay totals.
Vacation: 144 hrs (120 projected) means you have 144 now and will have 120 after your scheduled vacation in June.When a scheduled shift's date passes, its badge changes to Unconfirmed and a reminder card on your dashboard and shift history asks "Did they happen as planned?" Tap All good — confirm all in one shot, or open individual shifts and edit anything that changed. Editing and saving counts as a confirmation; the badge clears automatically.
Instead of entering every shift by hand, you can upload your NSS roster PDF and the app will pull your shifts out automatically. This works alongside manual entries — NSS becomes a second source of truth that confirms what you entered, surfaces disagreements, and creates drafts for shifts you didn't enter yet.
Your Roster Name is the way your name appears on the NSS roster (typically LASTNAME, FIRSTNAME in uppercase). It's auto-filled during profile setup based on your first and last name. You can edit it on the Profile page if NSS uses a different format for you. If your first upload finds no matches, the app will offer a "did you mean?" suggestion based on similar names in the roster.
On Android Chrome, the equivalent is Share → Print → Save as PDF. The Print view (multi-page) and the Markup view (single-page) both work — we parse them the same.
Each card shows a one-line summary of what NSS thinks the shift is (e.g., 24hr worked + rescue bonus + paramedic premium) so you can review without clicking in.
N is the open flag countNo badge means NSS hasn't seen that shift yet (or it's a manual-only entry like a banking adjustment).
The roster tells us about work events (apparatus, seat, hours, leave reasons). It does not tell us about your accounting decisions like banking, court time, paramedic maintenance bonus, or holiday-date bonuses — those stay manual-only. So a shift can have NSS ✓ even if it has banking attached; NSS confirms the work, you handle the banking.
If you leave the import page without approving, the imported drafts still live in your shift history with a Pending badge. You can clear them up two ways:
The filters panel has Discrepancies Only and Pending Approval Only toggles for fast triage.
Upload the same roster twice and nothing duplicates. The app matches existing shifts and updates their status rather than creating new rows. If a previously-imported draft hasn't been approved yet, re-uploading refreshes its fields to the latest NSS interpretation (no "you vs NSS" conflict against your earlier import). You can upload mid-pay-period and again at the end — each pass just refreshes what NSS knows.
NSS rosters often cover days that haven't happened yet. Those shifts still get imported, but they go in as Scheduled only — no green NSS ✓ badge, because NSS is acting as a schedule, not a historical record. After the date passes, re-import the same roster (or a fresh one) and the row picks up the NSS ✓ badge automatically.
When your manual entry differs from NSS for a future date, the badge is amber Schedule conflict (not red Discrepancy). Both sides are predictions; neither is verifiable yet. Once the date passes and you re-import, the situation resolves to either NSS ✓ (you agreed) or Discrepancy (you actually disagree now that the day is over).
Here's how to log different situations you'll encounter.
Quick Add → Regular template → select the date. That's it. If you worked all 24 hours with no leave or bonuses, the default template handles everything.
Use the Full Shift Form. Set the shift type to Regular, enter your hours worked, then expand the Leave section and enter the leave hours. Your worked hours plus leave hours should total 24. When you save, the app automatically updates your leave balances.
For sick leave, the app handles the tier allocation (100% → 75% → 50%) automatically based on your current balances.
Quick Add → SOD or Assign Hire template → select the date. If you worked a non-standard number of hours, edit the shift afterward to adjust.
Use the Full Shift Form. Set shift type to Late Relief and enter the extra hours worked (just the late relief portion, not the full 24).
Use the Full Shift Form. Set shift type to Recall and enter the hours. Log it on the date you were recalled.
If your holiday code is set in your profile, the app auto-detects your holiday code days and checks the box for you when you add a shift on that date. You can also check it manually in the full form.
On Thanksgiving, Christmas Eve, Christmas Day, or New Year's Eve, the major holiday bonus checkbox appears automatically in the full form when you have hours worked. Check it to include the bonus in your pay calculation.
Use the Full Shift Form. Set shift type to V-Hours and enter the payout hours. This is a pay-only entry — it doesn't affect your leave balances.
Use the Full Shift Form and set the shift type to Other Payments. This reveals fields for court time hours, court on-call, show-up pay, safety watch, CE payout, and banked payout. Enter the relevant amounts.
In the full form, enter the hours in the "Hours Banked" field. Your banked time balance updates automatically.
Open the Add Shift modal and tap Trade at the top, or pick Trade from the Shift Type dropdown on the Full Shift Form. Today the app handles shift trades (the common 360). Holiday and AH Code trades are coming soon.
Submitting creates two linked rows: one with Trade · Off on your original date (0 hours, no pay) and one with Trade · On on the partner's date (your full hours, full pay). The two rows are linked so deleting one prompts a modal to delete both (or just one) and shows both dates side by side.
NSS imports recognize 360 rows on both sides and populate partner info + paired date automatically when present in the roster.
This is the main reason the app exists. When your paystub arrives:
The pay calculator breaks down each shift in the period, showing base pay, overtime, and bonuses. It also shows your FLSA overtime calculation and how your leave balances changed.
If the numbers match, you're good. If they don't, use the "Doesn't match your paystub?" button. It walks you through common reasons for mismatches (missing shifts, wrong rate, etc.) before letting you file a discrepancy.
Your leave balances update automatically every time you log a shift that uses leave. You don't have to do anything extra — just keep logging shifts and the balances stay current.
Go to Balances from the navigation bar to see all your current balance totals. Tap any balance type to see its full transaction history (every shift that changed it, plus any manual adjustments).
Sometimes payroll makes a correction that doesn't come from a shift (e.g., an accrual adjustment or a clerical fix). Use Adjust Balance on the Balances page to record these one-off changes with a reason and date, so your tracked balance stays in sync with payroll.
The app tracks two types of discrepancies:
Your estimated gross pay doesn't match your actual paystub. File one from the Pay Calculator. Enter what you expected, what you got, and the type of issue (overtime, wrong rate, missing bonus, etc.). When payroll sends a retro payment, log it against the discrepancy to track what's been corrected and what's still outstanding.
Your paystub shows a different leave balance than what you're tracking. File one from Balances → Discrepancies. You can mark it as reported to payroll, and resolve it once corrected.
Open discrepancies show up as alerts on your dashboard so nothing falls through the cracks.
Your profile page lets you update anything from the initial setup, plus manage rate changes over time.
When your rate changes (new salary step, promotion, etc.), add a new rate history entry from your profile page. Enter the effective date and new rate. The app uses rate history to calculate pay correctly for each period — shifts before the change use the old rate, shifts after use the new one.
If your FLSA overtime type changes (e.g., moving from platoon to a 40-hour assignment), update it in your rate history entry. The change applies from the effective date forward.
Station, rank, platoon, paramedic status, holiday code, and salary step can all be updated directly on the profile page. Changes are tracked in your assignment history.