Most firms do not lose money on cleanup work because the work is hard. They lose money because the quote was a guess.
And a growing number of firms have stopped quoting cleanups at all. The work comes in, nobody can price it with confidence, so it gets declined or handed off. That is revenue walking out the door, usually attached to a client who would have stayed for monthly work afterward.
The gap is almost always the same. Firms know how to scope a cleanup. Far fewer have a model that converts that scope into hours. Here is one.
The three variables that actually drive hours
Everything else is noise. Cleanup hours come down to three things:
- Transaction volume per month. Not total transactions. Monthly volume, because that is what sets the pace of the work.
- Months behind. The multiplier on the above.
- Condition. Whether the file is behind or actively wrong. A file nobody touched is faster than a file somebody touched badly.
Estimate the first two from the bank feed and the file. Estimate the third from the diagnostic review.
Base hours table
Hours per month of backlog, before any adjustments:
| Transactions per month | Hours per month of backlog |
| Under 50 | 0.75 to 1.25 |
| 50 to 150 | 1.5 to 2.5 |
| 150 to 400 | 3 to 5 |
| 400 to 800 | 6 to 9 |
| Over 800 | Scope by sample, do not extrapolate |
Use the midpoint for a file in average condition, then apply the multipliers below. For anything over 800 transactions a month, clean one month first and measure it. Extrapolating at that volume is how a 200 hour project becomes a 350 hour project.
Condition multipliers
Apply these to the base, and yes, they compound:
| Condition | Multiplier |
| No bank feed, PDF statements only | 1.3x |
| Prior bookkeeper left partial or duplicated work | 1.25x |
| Multiple entities with intercompany activity | 1.4x |
| Inventory tracked in the file | 1.5x |
| Foreign currency transactions | 1.3x |
| Conversion from cash to accrual required | 1.3x |
| Client historically slow to respond | 1.2x |
That last one is real and almost nobody prices it. A client who takes a week to answer a question about a $4,000 transfer will add hours to the project whether or not those hours were quoted.
The fixed costs firms forget
These do not scale with transaction volume, and leaving them out is the single most common reason a cleanup quote comes in low:
- File assessment and opening balance validation: 2 to 4 hours
- Chart of accounts rebuild and historical reclassification: 2 to 5 hours
- Prior-year tie-out to the filed return: 2 to 3 hours per year covered
- Merchant processor reconstruction (Stripe, Square, Shopify, delivery platforms): 1 to 2 hours per month of backlog
- Payroll reconstruction where a third-party provider was never recorded: 2 to 4 hours per quarter
- Final review and handback package: 2 to 4 hours
- Client communication and chasing open items: 10 to 15 percent of everything above
Rule of thumbIf the estimate has no line for communication, it is not an estimate. On a typical cleanup, chasing open items is the second largest time category after reconciliation.
A worked example
A restaurant client, 18 months behind. Around 300 transactions a month. Square plus two delivery platforms. Payroll runs through a third-party provider and was never recorded. No reconciliations have been done.
| Component | Calculation | Hours |
| Base | 4.0 hrs x 18 months | 72 |
| Merchant processors | 1.5 hrs x 18 months | 27 |
| Payroll reconstruction | 3 hrs x 6 quarters | 18 |
| File assessment | Fixed | 3 |
| Chart of accounts rebuild | Fixed | 4 |
| Prior-year tie-out | 2.5 hrs x 1.5 years | 4 |
| Review and handback | Fixed | 3 |
| Subtotal | | 131 |
| Communication | 12 percent | 16 |
| Total | | 147 |
At a blended rate of $75 an hour, that is a quote near $11,000. Quoted at "about $4,500 because it is only 18 months," it is a loss before anyone opens the file.
Turning hours into a price that holds
- Price the diagnostic separately and charge for it. A small fixed fee, credited against the cleanup if the client proceeds. It filters out tire kickers and pays for the two hours that make the rest of the quote accurate.
- Quote a fixed fee, not hourly. Clients dislike open-ended hourly cleanup. A fixed fee is only safe once the hours model above is behind it.
- Add 15 percent contingency. Not padding. Cleanups reveal things.
- State the change-order trigger in the quote itself. One sentence: if an account, entity, or payroll provider surfaces that was not visible at diagnostic, it will be scoped separately before work continues. Clients accept this when it is written up front and resent it when it arrives as an invoice.
- Phase the billing. Bill the diagnostic on acceptance, then bill by completed phase. Nobody should be carrying 147 hours of work in progress on a client who may go quiet in month two.
The capacity question underneath all of this
A firm that can price cleanups accurately can say yes to work it currently turns away. That is the actual constraint for most firms, and it is a capacity problem dressed up as a pricing problem.
This is where a back-office partner changes the math. BooksCaughtUp runs the diagnostic and returns an estimated hours breakdown in the format above, phase by phase, before your firm commits to anything. Your firm sets the rate, adds its margin, and sends the quote under its own name. You own the client relationship and the pricing decision. The hours behind it are already worked out.
Related reading: how to scope a cleanup before you quote it, and how to tell a cleanup from a catch-up.