Back to blog
guides

Milestone Billing: How to Structure Project Invoices in Phases

How milestone billing works, how to break a project into invoiceable phases, sample milestone schedules by project size, and how it compares to deposits and retainers.

By Ivan Obodianskyi··9 min read

Milestone billing is invoicing a project in pieces rather than as a single deposit + balance. Instead of "50% upfront, 50% on delivery," you break the project into three to five phases and invoice as each one is signed off.

For freelancers and small agencies, milestone billing is the right model when (a) the project is large enough that a single deposit isn't enough cash to start work, and (b) the project is long enough that one big balance invoice at the end is too much float to carry. It smooths cash flow on your side and de-risks the project for the client — they're only ever exposed to the value of the next milestone, not the whole engagement.

This guide covers how to design the milestones, what to put on each invoice, and how milestone billing relates to deposit invoices, retainers, and recurring invoices.

When milestone billing beats deposit + balance

Three triggers — any one is enough to use milestones instead of a simple two-invoice deposit + balance split:

  1. Project total above ~$10,000. A 50% deposit on $20k is $10k. That's a large enough cheque that the client's procurement team will scrutinize it harder than four smaller ones. Milestones lower the per-invoice friction.
  2. Project duration over ~6 weeks. Carrying 50% of a $20k project as receivable for 8 weeks is real cash-flow exposure. Milestones cut that float roughly in thirds or quarters.
  3. Scope has natural checkpoint moments. Design → development → launch. Discovery → spec → build → ship. If the work naturally divides into deliverables, billing should too.

If none of these apply — a $3k project delivered in 2 weeks — stick with a deposit invoice and a balance. Milestone billing adds invoicing overhead and isn't free.

How to design milestones

Three rules that hold across project types.

1. Each milestone is a deliverable, not a date

"Milestone 2 due May 15" is a calendar event, not a milestone. "Milestone 2: signed-off wireframes" is a deliverable. The invoice fires when the deliverable is accepted, not when the calendar says it should be.

This matters because projects slip. Tying invoices to dates means you're chasing payment for work the client doesn't yet have. Tying them to deliverables means the client always pays for something they've already received and approved.

2. The first milestone is upfront

The first milestone — kickoff, discovery, deposit — is invoiced before any work. It serves the same purpose as a deposit: filtering out clients who won't pay and covering the cash-flow cost of starting.

Common sizes for the first milestone:

  • 20–30% of total for projects with a clean kickoff phase (discovery, audit, planning)
  • A flat "kickoff fee" (e.g., $2,000) independent of total, then the remaining milestones split the balance

3. The last milestone is large enough to enforce delivery

The final milestone — the balance — should be big enough that the client cares whether you ship. If the final invoice is 5% of the project, the client has no incentive to give you the sign-off you need to close the engagement. Aim for the final milestone to be at least 15–25% of the total.

The corollary: don't pre-collect 95% of the project. If you've been paid almost everything, you have no leverage to push for the final review and sign-off.

Sample milestone schedules

Small/medium project ($5k–$15k) — 3 milestones

| # | Milestone | % | Trigger | |---|---|---|---| | 1 | Kickoff (project start) | 33% | Invoice on contract signing | | 2 | Mid-project deliverable (e.g., approved design) | 33% | Invoice on client sign-off | | 3 | Final delivery and handoff | 34% | Invoice on launch |

This is the workhorse pattern. Three equal-ish milestones, one clear deliverable per phase, predictable cash flow.

Larger project ($15k–$50k) — 4 milestones

| # | Milestone | % | Trigger | |---|---|---|---| | 1 | Kickoff and discovery | 25% | Invoice on contract signing | | 2 | Approved spec / wireframes | 25% | Invoice on spec sign-off | | 3 | Build complete (QA-ready) | 25% | Invoice on QA handoff | | 4 | Launch and handoff | 25% | Invoice on launch |

Four milestones spread the cash-flow exposure more evenly. Each invoice is small enough that the client's AP can process it without escalation.

Enterprise project ($50k+) — 5+ milestones with retainer tail

| # | Milestone | Amount/% | Trigger | |---|---|---|---| | 1 | Kickoff fee | $5,000 flat | Contract signing | | 2 | Discovery + signed spec | 25% of remaining | Spec sign-off | | 3 | Phase 1 build | 25% of remaining | Phase 1 acceptance | | 4 | Phase 2 build | 25% of remaining | Phase 2 acceptance | | 5 | Launch | 25% of remaining | Production launch | | 6+ | Post-launch retainer | $X/month | Retainer starts |

For projects with a known post-launch support need, transitioning the engagement into a retainer at launch is cleaner than open-ended hourly billing.

What to put on a milestone invoice

A milestone invoice has the same structure as any project invoice, plus three additions:

1. The milestone number and name in the line item

Milestone 2 of 4 — Approved design specifications        $5,000.00
  Per SOW dated April 1, 2026.
  Triggered by client sign-off on design spec, April 22, 2026.

The "of 4" matters. It tells the client's AP that there's a known sequence — not a surprise mid-project bill.

2. A running total

Milestone 1 — Kickoff and discovery               (paid)   $5,000.00
Milestone 2 — Approved design specifications      (this)   $5,000.00
Milestone 3 — Build complete                    (pending)  $5,000.00
Milestone 4 — Launch and handoff                (pending)  $5,000.00
                                                          ----------
Total project value:                                       $20,000.00
Paid to date (incl. this invoice):                         $10,000.00
Remaining:                                                 $10,000.00

This is optional but powerful. The client's bookkeeper can see at a glance where the project stands without cross-referencing four separate invoices.

3. The trigger event

Always state what triggered the milestone. "Triggered by client sign-off on design spec, April 22, 2026." This converts "you owe me money" into "you owe me money because you approved this thing on this date." Much harder to dispute.

Sample milestone invoice

INVOICE #2026-0422                          Issue date: April 22, 2026
                                              Due date: May 6, 2026 (Net 14)

Bill to: Acme Co.
         123 Market St, San Francisco, CA 94103

From:    Jane Smith Design (sole proprietor)
         EIN: 12-3456789

Description                                              Amount
----------------------------------------------------------------
Milestone 2 of 4 — Approved design specifications     $5,000.00
  Per SOW dated April 1, 2026.
  Triggered by client sign-off on design spec, April 22, 2026.

                                              Total: $5,000.00

Project status:
  M1 Kickoff (paid Apr 3, Invoice #2026-0401)       $5,000.00
  M2 Design spec (this invoice)                     $5,000.00
  M3 Build complete (pending)                       $5,000.00
  M4 Launch (pending)                               $5,000.00
  ─────────────────────────────────────────────────────────
  Total project value:                             $20,000.00
  Paid through this invoice:                       $10,000.00

Payment terms: Net 14.
ACH preferred: routing 000000000 / account 0000000000

Net 14 — not Net 30 — because milestones are time-sensitive: you can't start Milestone 3 work until Milestone 2 is paid. Long terms on milestones defeat the cash-flow point.

Common mistakes

1. Milestones tied to dates, not deliverables. Already covered above. The single most common failure mode.

2. Starting the next milestone before the current one is paid. Same logic as starting a project before the deposit clears. The milestone payment is the trigger for the next phase, not a polite formality after you've already started.

3. Too many milestones. Five is the practical maximum for most projects. Beyond that, the invoicing overhead eats the project margin and the client's AP team starts to push back on "another invoice already?"

4. Milestone percentages that don't enforce delivery. Loading the early milestones ("50% upfront, 25% mid-project, 25% on launch") sounds friendly but means the client has only 25% of leverage to demand quality on launch. 25/25/25/25 or 30/20/20/30 keeps both sides honest.

5. No written acceptance criteria per milestone. "Approved design" is fuzzy. "Approved design = client confirms via email that the design meets the brief and is ready to enter development" is concrete. Without acceptance criteria, the client can stall a milestone by withholding approval for weeks.

Milestone billing vs deposit, retainer, recurring

| Model | When to use | Key trait | |---|---|---| | Deposit + balance | Small/medium one-off project (<$10k, <6 weeks) | Two invoices total | | Milestone billing | Large project ($10k+, 6+ weeks) | 3–5 invoices tied to deliverables | | Retainer | Ongoing relationship with stable scope | Same invoice each month | | Recurring | Subscription-style ongoing service | Auto-generated each period |

These aren't mutually exclusive — a common pattern is milestone billing for the build phase, then a retainer for ongoing maintenance. The transition usually happens at project launch.

FAQ

How many milestones should I use?

Three to five for most projects. Three for projects under $15k, four for $15k–$50k, five for projects above that or with distinct multi-phase work. More than five adds invoicing overhead without much extra cash-flow benefit.

What payment terms should milestone invoices have?

Net 14, not Net 30. Each milestone payment unlocks the next phase of work, so long payment terms create a pipeline gap where you can't proceed. The exception is the final milestone, which can be Net 30 since there's no follow-on work waiting.

Should I start the next milestone if the current one isn't paid?

No. Same logic as starting work before a deposit clears. If you continue work, you've signaled that payment is optional. Pause politely and resume when payment lands.

How do I handle scope changes during a milestone-billed project?

A change order — a written amendment that adjusts scope, milestones, or fee. The amended schedule should add a milestone or adjust the size of existing ones. Don't absorb scope creep without an invoice line item; that's how a $20k project becomes a $30k project paid as $20k.

What if the client wants to skip the kickoff invoice?

Decline. The kickoff invoice serves the same function as a deposit — filtering for serious clients and covering the cash-flow cost of starting. A client who won't pay a 20–25% kickoff is a client who won't pay the balance either.

Can I combine milestone billing with a retainer?

Yes — common pattern. Milestone billing for a defined build phase, transitioning to a retainer at launch for ongoing maintenance or support. The retainer invoice starts on the month after launch, separate from the final milestone invoice.

How do I show the milestone schedule on the contract?

A table in the SOW with milestone name, deliverable, % of total, and trigger event. The invoice references the SOW; the SOW is the authoritative source. If the milestones change mid-project, update the SOW with a change order rather than ad-hoc adjustments on the invoice.

Are milestone invoices the same as progress billing?

Effectively yes — "progress billing" is the accounting term used in construction and large enterprise contracts; "milestone billing" is the freelance/agency term. The mechanics are the same: invoice in phases tied to project progress.

Ready to send your first invoice?

Free account: 3 invoices forever. No card required.

By

Ivan Obodianskyi

Ivan is the founder of InvoicePeak. He built the product after years of patching invoicing in Word and Excel for himself and his freelance clients.

Related articles