WaffleInvoice Blog

Practical invoicing tips for freelancers and service businesses.

Blog Post

How to Invoice for Milestone-Based Projects: The Right Way

Milestone invoicing lets you get paid as you go on big projects. Learn how to structure milestones, what to put on the invoice, and how to handle disputes. Start free.

June 9, 20269 min read

Milestone billing solves a problem that flat-fee and hourly invoicing both struggle with on bigger projects: you deliver real work over weeks or months, but you only get paid at the end. Milestone invoicing breaks the payment into chunks tied to specific deliverables, so you collect money throughout the project instead of waiting until the very last invoice. It also gives clients clear checkpoints where they can review progress and raise concerns before the whole project is finished.

Done well, milestone billing is one of the cleanest billing structures in freelancing. Done poorly, it leads to scope arguments, delayed approvals, and cash flow gaps you did not plan for. The structure matters a lot.

What a Milestone Is and What It Is Not

A milestone is a defined point in the project where something specific and tangible is complete. It has a clear deliverable, and both you and the client know without ambiguity whether it is done. Good milestones:

  • Delivery of initial wireframes for all five pages
  • Completion of the first functional draft of the API integration
  • Approved final copy for the homepage and product page
  • Beta version of the app, functional on iOS and Android

Bad milestones:

  • Project is "halfway done"
  • Work in progress on design phase
  • Consulting and strategy
  • 30 days into the engagement

The bad milestones fail because they are either vague or time-based rather than deliverable-based. If the milestone is "30 days in," the client can argue the project is not where it should be and delay approval. If the milestone is "approved wireframes for all five pages," there is an objective test: either the wireframes exist and the client has signed off, or they have not. Tie milestones to outputs, not to time or effort.

How Many Milestones Should a Project Have

Most projects work well with three to five milestones. Fewer than three means you are waiting a long time between payments and carrying a lot of risk on uncompensated work. More than five for most freelance projects creates administrative overhead and can frustrate clients who have to review and approve too many checkpoints.

A typical structure for a project in the 5,000 to 20,000 dollar range:

  1. Kickoff deposit, 25 to 30 percent: paid before work begins. This is not exactly a milestone payment, more like a retainer, but it belongs in the same billing structure.
  2. Discovery and architecture, 20 to 25 percent: paid when the strategy doc, wireframes, or technical architecture is delivered and approved.
  3. First functional build, 25 to 30 percent: paid when the working first draft or beta version is delivered for review.
  4. Final delivery, 20 to 25 percent: paid when the finished product is handed off and accepted.

The exact split depends on where the work is front-loaded. If most of the effort is in the early phases, weight the early milestone payments higher. If the project gets more complex toward the end, weight the back half more. The goal is that the payment you have received at any given point roughly matches the value of work you have delivered.

Defining Milestone Completion and Approval

The most common problem with milestone billing is a client who holds up payment by delaying approval. The milestone deliverable is sitting in their inbox, the work is complete, but the client is too busy to review it, has internal stakeholders who need to sign off, or keeps requesting small changes that technically keep the milestone open.

The fix is a defined approval window in your contract. Something like: "Client has five business days to review each milestone deliverable and provide either written approval or specific change requests. If no response is received within five business days, the milestone is considered approved and payment becomes due."

That clause does two things. It gives the client a real deadline to review your work, and it prevents the open-ended limbo where a milestone payment is technically not due because the client never formally approved the deliverable. Put this language in the contract before the project starts, not as an amendment after the first missed approval.

Also define what counts as a change request versus a new requirement. A client asking you to adjust a color on a wireframe is a change request, appropriate within the milestone review. A client asking you to add a full additional section that was not in the original scope is new work that belongs in a change order, not the existing milestone. Distinguishing these upfront saves a lot of arguments later. See the guide on the difference between an invoice and an estimate for more on how to handle scope changes cleanly.

How to Write a Milestone Invoice

A milestone invoice is cleaner than a detailed hourly invoice because the deliverable is the line item, not a list of hours. Here is an example for the second milestone on a web development project:

  • Project: E-commerce website redesign, total contract value 12,000.00
  • Milestone 2 of 4: UX wireframes and information architecture, all 8 pages (approved June 8): 3,000.00
  • Previously invoiced - Kickoff deposit (invoice #2026-018, paid May 1): 3,000.00
  • This invoice: 3,000.00
  • Remaining after this payment: 6,000.00
  • Due: June 22

That structure tells the client everything they need to know: what the full project is worth, exactly what this payment covers, what they have already paid, and what is still to come. The line that shows the remaining balance is especially useful because it removes any surprise from future invoices. The client can see the billing schedule clearly and plan for it.

Reference the milestone description exactly as it appears in the contract. If the contract calls it "Milestone 2: UX Wireframes," the invoice should say the same thing. Matching language prevents confusion and keeps your project documentation consistent.

Use the free invoice generator to build milestone invoices cleanly. You can add a line showing the total contract value, the current milestone amount, and credit for previous payments so the remaining balance is clear.

Handling Scope Creep on Milestone Projects

Scope creep, where the project grows beyond the original agreement, is more common on milestone projects than any other billing structure because both sides are invested in a long-term engagement and small additions feel low-stakes in the moment. "Can you just also add X while you are in there?" is the most expensive question in freelancing.

Every out-of-scope request needs a change order before you do the work. A change order is a short document that defines what is being added, the additional cost, and any effect on the project timeline. It does not need to be elaborate. A brief email works: "Happy to add the customer review widget. That is outside the original scope, so I would bill it as a change order at 400 dollars, with delivery in the next sprint. Want me to proceed?"

When the client approves, save that email. Then bill the change order as a separate line item on the next milestone invoice or as its own invoice if it is large enough. Never absorb scope additions into the existing milestone payment. You trained yourself out of the deposit, and the client learned that asking for more is free. Do it once and they will do it every time.

What Happens If a Client Refuses a Milestone Payment

Sometimes a client withholds a milestone payment because they are unhappy with the deliverable and want revisions before they pay. This is where the contractual language about approval windows and revision scope matters most.

First, establish whether the issue is a legitimate deficiency in your work or a request for something beyond the original scope. If you missed something that was clearly specified, fix it. That is fair, and your contract should define what constitutes completion of the milestone so there is an objective reference.

If the client is asking for something new or different from what was agreed, that is a scope issue, not a deficiency, and you should not absorb the cost. Reference the original specification, explain the difference between what was specified and what they are now requesting, and issue a change order for the additional work.

If a client withholds payment without providing specific, documented reasons for disapproval within the review window you established, you can invoke the deemed-approval clause in your contract. This is why the clause exists. Most clients, when reminded that the approval window has passed, will either pay promptly or get specific about their actual objections.

Milestone disputes rarely escalate to collections or legal action when the contract is specific and both sides have been communicating throughout the project. The projects that go sideways are the ones where the contract was vague, the milestones were poorly defined, and the client is surprised by the outcome. Front-load the clarity and the disputes mostly disappear.

Late Fees on Milestone Invoices

Milestone invoices should include the same late fee provisions as any other invoice. A standard clause of 1.5 percent per month on overdue balances is common and reasonable. Include the due date prominently on every milestone invoice and reference your late fee terms in the payment section.

One addition that works well for milestone projects: a clause that lets you pause work if a milestone payment is more than a certain number of days late. Something like: "WIP on the next milestone will be paused if payment for the current milestone is more than 7 days overdue." This gives you real leverage without threatening to abandon the project entirely, and it motivates clients to pay on time because they can see the project stalling. For a full breakdown of late fee language and how to charge it correctly, see the guide on how to charge a late fee.

Milestone billing is one of the best structures for protecting yourself on larger projects. Define deliverables clearly, set approval windows in writing, issue change orders for scope additions, and send clean invoices that show the full project context. WaffleInvoice is free for unlimited invoices and handles milestone billing with proper line items and payment tracking. Check out the Pro plan if you want automated reminders and recurring invoice schedules for ongoing engagements.

Frequently Asked Questions

Quick answers to the questions readers ask most about this topic.

How do I structure milestone payments on a project?
Most projects work well with three to five milestones. A common structure is a kickoff deposit of 25 to 30 percent before work begins, then two or three payments tied to specific deliverables during the project, and a final payment on delivery. The exact split should roughly match where the work is concentrated. If the heavy lifting is early, front-load the payments. If it is back-loaded, weight the later milestones higher.
What should a milestone invoice include?
Include the total contract value, the milestone number and description matching your contract language, the amount due for this milestone, any previous payments already made, the remaining balance after this payment, and the due date. Showing the full project context helps clients understand where they are in the billing schedule and prevents confusion about what future invoices will look like.
What if a client holds up milestone approval to delay payment?
This is why your contract needs a defined approval window, typically five to ten business days. Include a clause stating that if no written approval or specific change requests are received within that window, the milestone is considered approved and payment becomes due. That clause gives you a contractual basis to invoice even if the client is slow to respond, and most clients pay promptly once they know the deemed-approval provision exists.
How do I handle scope creep on a milestone project?
Every addition beyond the original scope needs a change order before you do the work. A brief email describing the addition, the cost, and any timeline impact is sufficient. Get the client's written approval, then bill it as a separate line item on the next invoice. Never absorb scope additions into existing milestone payments. Once a client learns that out-of-scope requests are free, they will keep making them.
Can I pause work if a milestone payment is late?
Yes, and you should include a clause in your contract that explicitly allows it. A provision like 'work on subsequent milestones will pause if a milestone payment is more than 7 days overdue' gives you clear leverage without threatening to abandon the project entirely. It also motivates on-time payment because clients can directly see the project slowing down when they miss a payment.

Ready to improve your invoicing?

WaffleInvoice makes it easy to invoice faster, get paid on time, and manage your cash flow. Start free today.

Sign Up Free