Revenue Recognition for Project-Based Businesses

SPUDAR

Revenue Recognition for Project-Based Businesses

Who this is for

Owner-operators of project-based businesses (flooring, trades, agencies, installers, contractors) using QuickBooks Online (QBO) who:

  • take deposits
  • invoice before work is complete
  • do progress billing or change orders
  • want financial statements they can actually trust

Revenue recognition definition (plain English)

Revenue recognition is the rule for when you record revenue in your books.

Good rule of thumb:
You recognize revenue when you earn it (by delivering the work), not when you invoice it and not necessarily when you get paid.

A common mistake: invoicing the full job on day one

A typical workflow I see:

  1. Customer books a job
  2. You collect a deposit
  3. You create an invoice for the full job amount immediately, and mark it partially paid
  4. Later, the job total/tax changes (scope change, materials, measurements, etc.)
  5. You edit the invoice, and QBO warns: “tax return has already been filed”

The warning is annoying. The bigger problem is that invoicing the full job up front usually causes premature revenue recognition.

Why deposits are not revenue

A deposit is money you’ve collected for work you haven’t finished yet. From an accounting perspective, that deposit is usually a liability (often called Customer Deposits or Deferred Revenue) until the work is delivered.

If you treat deposits as revenue immediately, your financials aren’t reflecting reality.

What goes wrong when you recognize revenue too early

1) Your monthly results become unreliable

You’ll see revenue spikes in the month you invoice and dips in the months you actually do the work. This leads to bad decisions:

  • you think you’re “up” when you’re not
  • you think you’re “down” when you’re not
  • you react to noise instead of performance

2) Your margins get distorted

Costs show up as work happens (materials, labour, subs).
If revenue gets booked early, your margin report turns into fiction.

3) Sales tax periods get messy

When you invoice early, you often tie tax to a period you later try to edit. That’s why accounting software warns you after a return is filed: edits can change previously reported totals. You also end up remitting sales taxes before you’ve actually collected them from your customer.

This is especially painful if you edit invoices from:

  • a filed sales tax period
  • a closed month
  • a prior fiscal year

The practical fix: bill in stages that match delivery

If your jobs span time, bill in stages.

A clean pattern for most project businesses:

  1. Deposit invoice (deposit only) at booking
  2. Progress invoices at milestones (start, materials delivered, install day, etc.)
  3. Final invoice at completion (including change orders)

Result:

  • revenue is closer to when it’s earned
  • fewer edits to old invoices
  • better tax reporting hygiene
  • better matching of revenue to expenses
  • better performance reporting month to month

How to implement this in QuickBooks Online

You want three things to be true in QBO:

A) Deposits don’t inflate revenue

Deposits should land in a “customer deposits / deferred revenue” type account until you’ve delivered work.

B) Invoices represent what’s actually been delivered

Progress invoices should reflect work completed, not the entire contract value on day one.

C) Corrections don’t rewrite filed history

If a change happens after filing, you want a controlled approach to correcting it (not random edits to old transactions).

Quick checklist: what to change in your process

If you currently invoice the full job up front, start here:

  • Stop issuing “full job” invoices at booking
  • Invoice the deposit only
  • Use milestone/progress invoices
  • Track change orders separately and bill them when approved
  • Avoid editing invoices in filed periods whenever possible
  • Review monthly revenue/margins to confirm they align with work delivered

FAQ for owner-operators

“But I want the customer to see the full price upfront.”

Totally fair, but you can do that with:

  • a quote/estimate (QBO has this feature at the Plus & Advanced subscription levels)
  • a contract / statement of work
  • a schedule of values

Just don’t book it as revenue on day one.

“If deposits aren’t revenue, does that mean I’m worse off?”

No. You’re just being accurate. Cash in the bank is still cash in the bank. This is about your P&L telling the truth about your economics.

“What if my jobs are short?”

If your jobs typically start and finish in the same reporting period, this advice might not be practical for you. The longer the job spans, the more this matters.

Bottom line

If you invoice future work today, your books will claim you earned it today. That creates:

  • misleading performance trends
  • distorted margins
  • extra cleanup when tax periods are filed
  • Cash flow disruptions from remitting sales taxes before collecting them from your customer

Proper revenue recognition isn’t a technicality. It’s how you keep your financials useful for running the business.