Skip to main content
Book a Free Call

Field-service accounting

Progress Invoicing in QuickBooks Online: A Contractor's Guide

Any job that runs longer than a payday needs staged billing, mobilization, rough-in, trim, completion, and QuickBooks Online has a real progress-invoicing feature that ties every stage back to one estimate. Set up properly, it keeps billing, collections, and job costing aligned across months-long work. Improvised with ad-hoc invoices instead, it produces the classic contractor mess: nobody knows what's been billed against what. Here's the right setup.

  • Reviewed
  • Reading time3 min
  • TopicField-service accounting

Turn it on and build from the estimate

  • Settings → Sales → turn on Progress Invoicing (estimates must be enabled)
  • Build the job's estimate with real line items, the labor and materials structure you actually want to bill and track against, not one lump line. The estimate becomes the master record every progress invoice draws from
  • Create each invoice from the estimate: QuickBooks offers total %, per-line %, or custom amounts per line, and tracks remaining unbilled amounts automatically

Choosing how to stage

  • Percentage of total: simplest: 30/30/30/10 style schedules; fine for jobs billed by milestone convention
  • Per-line-item billing: bill the lines actually completed (all of rough-in, none of trim), stronger for jobs where stages map to scope, and it keeps revenue aligned with real work performed
  • Contract language should match the method, the payment schedule your customer signed is the schedule your invoices should visibly follow; disputes live in the gaps

The two things QBO won't do for you

Retainage

When a GC holds 5–10% of each invoice, QBO has no native retainage feature. The standard workaround: a 'Retainage Receivable' other-current-asset account and a retainage service item mapped to it, each progress invoice adds a negative retainage line (moving the held portion out of AR into retainage receivable), and a final retainage invoice bills it at release. Without this, held amounts age inside AR as fake delinquency, and collections calls get awkward.

Change orders

Scope changes belong on the estimate before they're billed: update the estimate (or add a linked estimate), then progress-invoice from it, keeping billed-vs-estimate reporting truthful. The alternative, side invoices for extras, orphans the change from the job record, which is how extras go unbilled. ( Electrical for why change-order discipline is margin discipline.)

Job costing across the stages

Progress invoicing handles revenue timing; costs land when they land, which means mid-job reports show stages billed against costs incurred, and that's exactly the estimate-vs-actual visibility you want, if the project tagging is disciplined ( Job Costing in QuickBooks Online: The Contractor Setup That Actually Works ). One caution for accrual thinking: staged invoices are still invoice-based revenue, not true percentage-of-completion accounting, on long jobs where billing schedules and actual completion drift far apart, WIP adjustments enter the picture: WIP for Contractors: Why Your P&L Swings, and How to Fix It .

Frequently asked questions

Deposit first, then progress billing, how do they combine?

Take the deposit via the liability method ( Customer Deposits in QuickBooks: Stop Booking Them as Income ), then apply it against the first (or final) progress invoice as its negative line. The estimate governs the job total; the deposit line just settles part of it.

Can customers see percent-complete on their invoice?

Yes, progress invoices can display estimate amounts, prior billings, and the current stage, which is exactly the transparency that makes draw approvals faster. Turn those columns on in the invoice customization.

Turn the guide into action

Staged billing + retainage set up properly, free discovery call

Book a Free Discovery Call