← Back to Blog
Pricing & ProposalsApril 26, 20268 min read

How to Estimate Hours for a QBO Cleanup (Without Underquoting)

The hardest question in cleanup pricing is not "what should I charge per hour." It's "how many hours will this take." Get the hours wrong and even a great hourly rate or a beautifully structured fixed fee turns into a money-losing project. This piece is about how to actually arrive at the hour number, not the rate.

Most cleanup-pricing advice skips this step. You read a guide that says "fixed-fee pricing is better" and "don't underquote," but nobody walks you through how to look at a QBO file and say with confidence: this is 18 hours, not 30, not 12. That's the missing skill, and it's the one that makes fixed-fee pricing actually work.

Why hourly intuition is wrong

Three patterns ruin hour estimates:

Anchoring on the worst thing you see. You spot 200 uncategorized transactions and quote 20 hours. But the uncategorized list is the easy part. The hard parts (forced reconciliations, phantom Undeposited Funds balances, mis-tracked owner draws) hide in places you didn't look.

Underweighting communication time. A cleanup is not a solo coding task. Every category has client questions: "Are these personal or business?" "Do you have receipts for these?" "Which of these is the real bank account?" Those minutes add up to hours.

Ignoring the second-order work. You fix duplicate deposits and now reconciliations don't tie. You fix Chart of Accounts and now reports look different and the client wants an explanation. Each fix creates downstream work.

The way out is to estimate by category, with realistic time bands, and then apply multipliers that catch the second-order effects.

The category framework

LedgerClean's diagnostic groups findings into eight categories, which map cleanly to the actual time blocks of a cleanup. You can use this same structure even if you're not running the diagnostic — just walk through each category by hand on the file.

For each category below, I give a realistic time band per finding at junior, mid, and senior speeds. These are working numbers from a small sample of cleanups across different industries. Use them as a starting point and tune from your own data after you've done five or ten projects with this framework.

1. Reconciliations

What you're looking at: Bank, credit card, and loan accounts that were never reconciled, or were force-reconciled with rounding plugs.

The trap: a "reconciliation" of an account that's already mostly clean takes 15 minutes. A reconciliation of an account with 18 months of unmatched transactions and a $4,200 plug takes 3 hours. Look at the actual ending difference and the size of the unmatched list before you band the time.

2. Chart of Accounts

What you're looking at: Duplicate accounts, parent-child structure that doesn't make sense, accounts named like “Misc Expense 2” or “Loan from Friend.”

The trap: COA work feels fast, but every change ripples into reports and prior-period comparatives. Always add a buffer for the “why does last year look different now” client call.

3. Categorization

What you're looking at: Uncategorized transactions, miscoded transactions, transactions in the wrong period.

The trap: a 200-transaction uncategorized list isn't 200 unique decisions. It's often 20 unique payees with 10 instances each. Build bank rules early, batch the rest, and the time per transaction collapses.

4. Duplicates

What you're looking at: Duplicate income, duplicate expenses, duplicate journal entries, the same transaction recorded twice through bank feeds and manual entry.

The trap: removing duplicates can change income and expenses in periods the client thinks are settled. Always check whether anything has been filed before you delete.

5. Reconciliation discrepancies

What you're looking at: Reconciliations that “balance” with adjustments, opening-balance plugs, journal entries to Undeposited Funds, suspense accounts.

The trap: this category is the single biggest source of underquoted cleanups. Always assume the discrepancy is older and deeper than it looks.

6. A/R and A/P

What you're looking at: Old open invoices, duplicate invoices, payments not applied, vendor credits floating, A/P aging older than the business.

The trap: A/R aging is often a client-side problem. The bookkeeper can't close items without the client's decision on each one. Build that decision time into the estimate.

7. Sales tax and payroll

What you're looking at: Sales tax liability mismatches, payroll posting errors, ER taxes booked to wrong accounts.

The trap: payroll work that touches a third-party provider (Gusto, ADP, QBO Payroll) is rarely a fix-the-books task — it's often a fix-the-source-system task. Quote separately or scope it out explicitly.

8. Owner-related transactions

What you're looking at: Owner draws coded as expenses, personal transactions on a business card, distributions or contributions in the wrong place, “Loan from Owner” with no real loan.

The trap: this category is small in transaction count but high in client-conversation time. The bookkeeper can't guess on personal-vs-business. Allow real time for the back-and-forth.

Multipliers that actually change the number

After you've added up the per-category bands, apply these multipliers. They're what separates a 22-hour estimate from a 35-hour reality.

File age multiplier

Older work has more cross-period dependencies. A duplicate from 2024 that flows through 2024 and 2025 reconciliations costs more than a duplicate from last month.

Industry complexity multiplier

Industries with built-in complexity in how revenue is recognized or how expenses are tracked add hours regardless of how clean the file looks.

Communication multiplier

Re-ramp time after a delayed response is real and easily eats 2 to 4 hours per project.

Tools and access multiplier

The cleanups where you don't have direct access until kickoff usually run over because the discovery happens after the quote.

A worked example

A prospect sends a Trial Balance, P&L, Balance Sheet, A/R aging, A/P aging, and a banking detail report. You run a diagnostic. The findings (using the eight-category lens):

Subtotal: 26.5 hours.

Now multipliers. The file is 14 months behind (x 1.4). It's an e-commerce business (x 1.3). Client responds within 24 hours (x 1.0). You don't have QBO access until project start (x 1.15).

Compound multiplier: 1.4 x 1.3 x 1.0 x 1.15 = 2.09.

Adjusted estimate: 26.5 x 2.09 = ~55 hours.

If you had quoted the subtotal (26.5 hours at $85/hour = $2,253), you'd have lost money on the project. The multiplier-adjusted number (~55 hours, around $4,675 at the same rate) reflects the real work. That's the gap between a profitable cleanup and an unprofitable one.

Letting the diagnostic do the math

Estimating by hand from raw exports takes 30 to 60 minutes per prospect, and you'll forget categories under time pressure. The reason LedgerClean exists is that the same eight-category framework, applied programmatically, returns the subtotal and a recommended hour band in about a minute. You still apply your own multipliers (file age, industry, client style) because those are judgment calls, but the per-category math stops being the bottleneck.

Whichever way you arrive at the number, write it down. Save your estimate, then track actual hours on the project. After five or ten projects, compare the two columns. Your bands will tighten and your multipliers will get sharper. That's the loop that makes cleanup pricing reliable.

What to do next

If you don't have a system yet, start with the categories. Walk a prospect's file through the eight blocks above and force yourself to put a band on each one. Then apply the multipliers. The estimate will feel high. It usually is, by historical standards. It's also usually right.

If you'd rather not spend 30 to 60 minutes per prospect doing it manually, that's what I built LedgerClean for. Upload the prospect's QBO exports, the same eight-category framework runs against the file in about a minute, and you get the per-category bands and subtotal. You still layer your own file-age, industry, and access multipliers on top — those are judgment calls — but the math stops being the bottleneck. Try a free diagnostic on a sample file and compare it to what you'd estimate by hand.

Stop quoting by gut. The hour number is the whole game.

LC

Written by the Founder

IRS Enrolled Agent and former Intuit QBO Live Lead Bookkeeper with 7+ years managing cleanup engagements. Built LedgerClean from real cleanup methodology, not theoretical best practices.

Try LedgerClean free — 14-day Solo trial, no credit card required to start.

Start Free Trial

Get cleanup tips in your inbox

Practical guides for bookkeepers. No spam, unsubscribe anytime.

Subscribe on Substack

Related posts