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.