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.
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:
- 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.
- Discovery and architecture, 20 to 25 percent: paid when the strategy doc, wireframes, or technical architecture is delivered and approved.
- First functional build, 25 to 30 percent: paid when the working first draft or beta version is delivered for review.
- 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?
What should a milestone invoice include?
What if a client holds up milestone approval to delay payment?
How do I handle scope creep on a milestone project?
Can I pause work if a milestone payment is late?
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 FreeMore from the blog
How to Build a Freelance Emergency Fund (The Right Way)
Freelancers need a bigger emergency fund than employees. Here's how much to save, where to keep it, and how to build it when income is unpredictable. Start free.
How to Invoice Web Development Projects: Hourly, Fixed-Price & Milestone Billing
Learn how freelance web developers should structure invoices for hourly, fixed-price, and milestone-based projects.
How to Invoice for Long-Term Projects: Keeping Cash Flow Steady
Long projects mean slow cash flow if you bill at the end. Learn milestone billing, retainer schedules, and net terms that protect your income. Start free.
Compare WaffleInvoice head-to-head
Honest side-by-side comparisons against the tools most often mentioned alongside WaffleInvoice.
Comparison
WaffleInvoice vs FreshBooks
Side-by-side feature breakdown, pricing, and honest pros and cons.
Comparison
WaffleInvoice vs QuickBooks
Side-by-side feature breakdown, pricing, and honest pros and cons.
Comparison
WaffleInvoice vs Wave
Side-by-side feature breakdown, pricing, and honest pros and cons.
