How to Invoice Construction Progress Payments Step by Step
Most guides explain what progress billing is. This one shows you exactly how to build each invoice document — deposit, milestone, change order, and retention — without enterprise software.
Progress payments are the financial backbone of any construction project, but most independent contractors get the contract theory and none of the document detail. This guide walks you through building each invoice — deposit, milestone, change order, and final with retention release — so you get paid on schedule without chasing homeowners for weeks post-completion.
Why the invoice document itself is where things go wrong
You can have a perfectly written contract with clear milestone triggers and still end up with a slow-pay situation, because the invoice you sent was vague, lumped everything together, or arrived without a clear due date. Residential clients in particular will find any ambiguity and use it to delay.
Three document-level mistakes cause most payment disputes on construction jobs:
- Mixing change orders into the original milestone invoice. The client disputes the add-on, and the whole invoice sits unpaid while you argue about scope.
- No line-item split between materials and labour. This matters for your tax return (different treatment in many jurisdictions) and it gives the client a sense of fairness. A single "work completed" line on a $28,000 invoice looks like a guess.
- No retention line. If you are holding back 5–10% to completion and you do not show it on every progress invoice, the final balance invoice looks inflated and catches the client off guard.
Fix these three things in your invoice template and disputes shrink significantly.
Building the deposit invoice: set the tone early
The deposit invoice is not just a payment request. It is the first signal of how professional this project will feel for the next 12 weeks.
What to include:
- Project name and address at the top (not just the client's billing address)
- A clear line: "Deposit — 30% of contracted project value" with the dollar amount
- The total contracted value beneath it for transparency
- Payment terms: "Due on receipt" or "Net 7" — not Net 30. Residential clients will take every day you give them.
- Your bank or ACH details, or a QR code they can scan to initiate the transfer immediately
Do not start work without a cleared deposit. Put that in the payment terms field as a note.
Structuring milestone progress invoices: materials vs. labour as separate lines
Once work begins, each milestone invoice should reflect what was actually completed, broken out in a way that holds up to scrutiny.
The line-item structure that works
For a $95,000 kitchen and bathroom renovation split across four milestones, a mid-project invoice might look like this:
| Line item | Amount |
|---|---|
| Labour — framing and rough-in, weeks 3–5 | $8,400 |
| Materials — structural lumber, fasteners | $3,200 |
| Materials — plumbing rough-in components | $1,750 |
| Subtotal this milestone | $13,350 |
| Retention withheld (10%) | -$1,335 |
| This invoice total | $12,015 |
The retention line shows up every time. The client can see the running withheld balance building. When you send the final invoice to release it, there is no surprise.
Why splitting materials and labour matters for tax
In most US states and Canadian provinces, labour and materials attract different tax treatment. Materials are often subject to sales tax at point of purchase (which you have already paid), while labour may or may not be taxable depending on your jurisdiction and the job type. Keeping them as separate lines on every invoice makes your records clean when your accountant reconciles the year.
ZenPay lets you set a default tax rate at the account level and then override it per line, so the labour line can carry your applicable rate while the materials line sits at zero (or vice versa) on the exact same invoice. No manual adjustments after the fact.
Invoicing change orders: always a separate document
A change order is a new scope agreement. It should be a new invoice, not a line item quietly buried in the next milestone.
Here is why that matters practically: if the client disputes the change order charge, you want that dispute isolated. If it is on the same invoice as the milestone payment for work they already accepted, the whole payment freezes.
Change order invoice structure:
- Reference the original contract number and the change order number (CO-01, CO-02, etc.)
- Describe the additional scope in plain language: "CO-01: Relocate bathroom exhaust fan due to structural obstruction discovered during rough-in"
- List materials and labour separately, same as your milestone invoices
- Apply the same retention percentage you are holding on the base contract
- Set a short payment term: Net 7 or Net 14. Change orders should not sit open for 30 days.
Send the change order invoice the same day the client signs off on the scope change. Do not wait until the next milestone.
How most contractors handle progress invoices
- One PDF built manually in Word, mixing milestone work and change orders in a single line.
- Materials and labour lumped as "work completed" — no tax separation.
- Retention not shown per invoice; clients are surprised by the final holdback release.
- Chase calls made personally days after the due date, which feels awkward with residential clients.
- No record of partial payments or which invoices are still open.
How ZenPay handles it
- Each milestone, change order, and deposit is a separate invoice with per-line tax overrides for materials vs. labour.
- Retention withheld shows as its own line on every progress invoice so the client tracks it in real time.
- Auto-reminders fire before and after the due date in your name, with your editable message template.
- Shareable invoice links mean the client pays in two clicks without needing a portal account.
- Per-invoice payment tracking logs partial payments and write-offs so your open balance is always accurate.
The final invoice: releasing retention without surprises
By the time you send the final invoice, the client should have seen the retention line on every previous document. The final invoice just collects it.
Final invoice structure:
- List each prior milestone and its withheld retention amount (a summary table works well)
- Add a line: "Retention release — all milestones" with the total accumulated amount
- Include any final punch-list labour if applicable, again split from materials
- Reference any outstanding change orders and confirm they are settled before sending
- Payment terms: Due on receipt. The project is complete. Net 30 is not appropriate here.
If you used QR codes on your previous invoices, carry them through to the final. Residential clients who got used to scanning a code to pay will do it again. Friction at the final payment is money left on the table.
Auto-reminders for the residential client who goes quiet
The post-completion slow-pay is the most common pain point for contractors doing residential work. The job is done, the client has what they wanted, and your leverage is gone.
ZenPay's auto-reminders let you set a sequence: a reminder 3 days before the final invoice due date, another on the day, and a follow-up 5 days after if it is still unpaid. All three send in your name with your messaging. You are not writing three awkward emails by hand. You are also not the person who has to feel uncomfortable sending them.
A note on multi-currency jobs
If you are a US-based contractor billing a Canadian client (common in border regions and remote cabin builds), or a UK-based contractor working for a European property developer, do not issue a GBP invoice and let the client convert it themselves. That ambiguity causes disputes about the final amount.
ZenPay supports 11 currencies including USD, CAD, GBP, EUR, and AUD, with per-invoice currency selection. Issue the invoice in the client's currency, capture the exchange rate at payment time, and your reporting rolls up in your home currency automatically. No spreadsheet reconciliation.
The document is the job
A well-structured progress invoice does more than request payment. It tells the client exactly what they are paying for, what is being withheld and why, and what happens if they do not pay by the due date. Done right, it removes every excuse to delay.
The contractors who get paid fastest are not the ones with the most aggressive collection tactics. They are the ones whose invoices leave no room for confusion from day one.
Less admin.
More of what matters.
Your first invoice
within 2 minutes.
Keep reading
How to consolidate four currencies into one home currency as a nomad
No permanent bank account, four currencies hitting your inbox every month. Here's a practical system for consolidating USD, EUR, GBP, and SGD into one functional home currency without the chaos.
How to prove tax residency as a digital nomad
No fixed address doesn't mean no proof. Here's the document-by-document playbook non-US nomad consultants use to establish tax residency and keep clients — and authorities — satisfied.
How to Write a Partial Payment Invoice for a Travel Deposit
Collecting a GBP deposit while paying EUR suppliers creates real FX exposure. Here's how boutique travel agencies should structure deposit invoices — with wording that protects them legally and gets paid faster.