The WIP Write-Off Trap: Why Unbilled Time Quietly Kills Margin
Aged WIP is where hard-won hours go to die. Here's how to spot the write-off trap early and turn work-in-progress into billed, collected revenue.
Every hour your team works but doesn't bill is a small loss hiding in plain sight. It sits in your work-in-progress (WIP) ledger looking like an asset — but the older it gets, the less likely it is to ever become cash. This is the write-off trap: work that's done, valuable and completely invisible to the client until the moment you either bill it (awkwardly, weeks late) or quietly write it off and pretend it never happened.
Most practices don't have a time-tracking problem. They have a WIP-conversion problem. Here's how to see it clearly and fix it.
What aged WIP actually costs you
WIP is time and disbursements recorded against a job but not yet invoiced. In a healthy practice it's a short-lived buffer — work gets done, gets reviewed, gets billed within days. In an unhealthy one, WIP becomes a graveyard.
The problem is that WIP ages badly for two reasons:
- Memory fades. Bill a client three days after finishing the work and everyone remembers the value delivered. Bill them six weeks later and you're both squinting at a job neither of you recalls clearly. Guess who blinks first in that negotiation.
- Scope drifts. The longer WIP sits, the more likely the original engagement has moved on. Extra queries, follow-up calls, a revised return — all recorded, none discussed, and suddenly the invoice looks like a surprise.
The result is a slow, invisible margin leak. You're not losing clients or losing arguments about fees. You're just failing to bill work you genuinely did, one small write-off at a time.
Why the trap is so easy to fall into
No one decides to write off good work. It happens because the systems around WIP make billing harder than it should be:
- Time is recorded in one place, jobs are managed in another, and invoices are raised in a third. By the time you reconcile them, the moment has passed.
- WIP is only reviewed at month-end (or worse, quarter-end), so problems are always found too late to fix cleanly.
- The person who did the work isn't the person who bills it, so context is lost in the handover.
- There's no clear owner for turning WIP into invoices, so it becomes everyone's job and therefore no one's.
Notice that none of these are about people being lazy with timesheets. They're structural. The fix has to be structural too.
Five habits that convert WIP before it ages
1. Set a WIP age limit and treat it as a deadline
Decide the maximum age WIP should reach before it's billed — for most compliance work, 14 to 30 days from completion is reasonable. Anything older than that isn't "in progress", it's overdue for billing. Once you name a limit, you can measure against it, and anything that breaches it becomes a visible exception rather than a quiet loss.
2. Bill on job completion, not on the calendar
Monthly billing runs feel efficient but they force every job to wait for an arbitrary date. A BAS finished on the 2nd shouldn't wait until the 30th to be invoiced. Tie invoicing to job status instead: when a work item hits "complete" or "ready to bill", the invoice should be triggered right then, while the work is fresh in everyone's mind.
3. Review WIP weekly, in the open
A 15-minute weekly WIP review changes everything. Look at every job with unbilled time, ask three questions — Is this ready to bill? Is it on track? Is anything about to breach our age limit? — and assign an action to each. Done weekly, no piece of WIP ever gets a chance to become a stale write-off.
4. Make the doer note the value, not just the hours
A timesheet entry that says "1.5 hrs — GST" tells the biller nothing. One that says "1.5 hrs — resolved GST coding error on 8 transactions, saved amendment" tells them exactly how to justify the fee. Encourage a one-line value note on time entries and your write-off rate drops because your invoices become defensible.
5. Separate write-offs you choose from write-offs that happen to you
Some write-offs are strategic — a goodwill gesture, a fixed-fee job that ran long because of your estimate. Those are decisions. The dangerous ones are accidental: WIP that aged out because nobody billed it in time. Track the two categories separately. If most of your write-offs are accidental, you have a process problem, not a pricing problem.
Where a single system changes the maths
The reason WIP ages is almost always that the information needed to bill it lives in too many places. When time tracking, the job board and invoicing are separate tools, converting WIP is a manual reconciliation exercise — and manual exercises get skipped when the practice is busy.
This is where having time, WIP and billing in one system earns its keep. In Finye, time is logged directly against the work item on the board, so unbilled time is visible right next to the job it belongs to — not buried in a separate timesheet. When a job is ready to bill, you can raise an invoice from that WIP in a few clicks, with the recorded time and disbursements already attached, and push it straight through Stripe or Square. Because the two-way Xero sync keeps your invoicing and payments aligned, there's no re-keying and no reconciliation lag.
The practical effect is that WIP stops being a place work disappears into. You can see the total unbilled value across the practice, sort it by age, and act on the oldest before it becomes a write-off. The review that used to take an hour of spreadsheet wrangling becomes a glance at a list.
Start with one number
If this all feels like a lot, start by measuring a single thing: average WIP age at the point of billing. How many days, on average, pass between finishing work and invoicing it? Most practices are shocked by the answer. Once you know it, you have a baseline — and every habit above is aimed at bringing that number down.
Lower WIP age means fresher context, cleaner conversations, faster cash and fewer write-offs. It's one of the rare levers in a practice that improves margin without raising a single fee. The work is already done. The only question is whether you bill it before the trap closes.