Back to blog
GuidesSeptember 23, 20266 min read

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.

By ZenPay Team

Share
How to Invoice Construction Progress Payments Step by Step
Photo by Kelly Sikkema on Unsplash

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 itemAmount
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.