Time Off Tracking and PTO Management for Manufacturing Shops
Time off belongs in the same app your crew clocks in on — not in a payroll portal they log into twice a year. FabWise accrues it from hours already captured, takes the request on the device already in their hands, and exports it with the same hours.
One app for the floor
The thing shops tell us they value most is not a feature. It's that a worker who is not a computer person has exactly one thing to learn.
They walk in, tap their name, tag a job, take a break, tap out. When they need a day off, it is the same device, the same three taps, no password to remember. That is the whole bar, and most software aimed at this industry clears it for the office and fails it on the floor.
Which is why time off lives here and not in your payroll system. Payroll providers have PTO modules, and on paper that looks like the natural home — the balance ends up on a paycheck, so put it where the paychecks are. In practice it means a second system the worker has to be enrolled in, a second login they use twice a year and forget, and an app that has no idea they are standing in your shop right now.
So it doesn't get used. The request happens in the parking lot instead, or by text, or on a sticky note — and the balance goes back to living in a spreadsheet one person maintains and everyone else guesses at.
The balance and the time record belong to the same system because they are made of the same hours.
Accrual that follows the hours you already capture
FabWise accrues time off from the time your crew is already clocking. A policy defines the rule, and the ledger follows from it — no separate entry, no monthly reconciliation.
Per hours worked. The most common shape in a shop: an hour of PTO for every forty hours on the clock. Because FabWise already has accurate captured hours per person, this needs no maintenance at all — the balance moves as the work happens.
Per pay period. A fixed amount each period, for shops that treat PTO as an allowance rather than something earned by the hour.
Manual. No automated accrual — the balance moves only through grants, adjustments, or an opening balance. This is the shape holiday policies usually take, and it's also how you bring existing balances in on day one.
Every movement is a ledger entry. A balance in FabWise is not a number someone typed; it's the sum of what accrued, what was granted, what was taken, and what was adjusted — each with its own row and its own reason.
Two kinds of policy
Per-person policies draw down an individual balance. Vacation, sick, personal — anything where what you have depends on what you've earned and taken.
Company-wide policies carry no balance at all. "Shop closed — Thanksgiving" isn't drawn from anyone's vacation; it's a fixed grant applied to everyone. FabWise treats these as a genuinely different shape rather than a per-person policy with a large starting number, because a closure is not something a worker spends.
Company-wide policies can also apply themselves. A recurring closure can generate its entries on a weekly cadence or an annual date with no admin action per occurrence, so the Friday the shop always closes stops being an eleven-times-a-year task someone has to remember.
Some shops give a paid birthday off. FabWise can apply that automatically too, on each person's actual date.
Requests from the floor, on the device they already use
A worker requests time off from the Workstation they clock in on. No separate app, no login they don't have, no paper form that lives in a truck.
They see their own balance beside the request, which quietly removes most of the back-and-forth — the question "do I even have this time" gets answered before anyone asks a supervisor.
Supervisors approve or decline. An approval moves the ledger and lands on the schedule; a cancellation puts the time back. Balance, request, and schedule stay in agreement because they are the same records.
It reaches payroll with everything else
Approved time off carries into the same per-pay-period payroll CSV as worked hours, so the export your provider imports already reflects it. There is no second file, and no step where somebody remembers to add vacation hours before sending payroll out.
The boundary is the same one that holds across FabWise: it captures and reports the hours. Your payroll provider classifies and pays them.
Built under Golden Values
Time off is one of four domains in FabWise governed by a Golden Values constitution — a YAML specification that defines the correct answer for every scenario, from which the tests are generated and against which the implementation is verified.
That covers the ledger's shape and balance math, accrual and grant behaviour, year-boundary handling, approval and cancellation, the invariants each policy type must hold, and the rules that decide when a policy applies itself.
It exists because balance math is the kind of thing that looks right and is quietly wrong for a year. A worker who finds out in November that their balance has been off since March has lost trust in more than the number.
Where this fits
Time off sits directly on top of time tracking — accrual per hours worked is only as good as the hours underneath it. Approved time appears on the schedule, and travels out through payroll export with the rest of the period.