A milestone payment is a part of a project fee that a client releases when an agreed deliverable is finished and approved, instead of paying by the hour or by calendar date.
Each stage has its own deliverable and amount, and is paid only once it is signed off. You get paid as the work lands.
Most projects run on three to five stages. A common pattern is a deposit to begin, one or two payments at the midpoint, and a final payment on handover, all written into the contract before any work starts.
The split is yours to agree with the client, so you can shape it around the way the project naturally breaks up.
Indian freelancers and agencies working with overseas clients hit the same questions, whether on Upwork, on Freelancer.com or with a direct client: what the term means, how to split a project, how platform escrow releases each stage, and how each payment reaches a bank account in India.
That last part decides when you are actually paid.
How a milestone payment works from agreement to release
A milestone payment runs through the same five steps whether you use a platform or bill a client directly.
Each step is tied to a deliverable and defined in the contract, so both sides know what triggers the money before any work begins.
- Agree the deliverables and amounts - you and the client break the project into stages, write down what each stage must deliver, and set the amount and the currency for each one.
- Fund or invoice the first stage - on a platform the client deposits the first stage into escrow; with a direct client you raise an invoice for it, often as a deposit.
- Deliver the work - you complete the stage and submit it for review, with whatever proof the contract asks for, such as files, a demo link or a staging site.
- Client reviews and approves - the client checks the work against the agreed acceptance criteria and either signs it off or asks for changes within the review window.
- Release and repeat - once the stage is approved the money is released to you, and the next stage is funded or invoiced, until the final handover closes the project.
Because each stage is paid on its own, a stalled or disputed stage never puts the whole fee at risk.
You carry only the exposure of the work done since the last release, which is the core reason both sides prefer this over one lump sum at the end.
Milestone schedule example with a 20/30/30/20 split
A milestone payment schedule simply lists each stage, what triggers it, and the share of the total fee it carries.
A common pattern is a 20/30/30/20 split, which keeps a healthy deposit up front and a meaningful amount held back until handover.
| Stage | Triggered when | Share of fee |
|---|---|---|
| Kickoff | Contract signed and project begins | 20% |
| Midpoint | First working draft or core build approved | 30% |
| Testing | Near-complete work passes review | 30% |
| Handover | Final approval and all files delivered | 20% |
On a USD 4,000 website project, that works out in this example to USD 800 to start, USD 1,200 at the midpoint, USD 1,200 at testing, and USD 800 on final handover.
Smaller or shorter jobs often use a 30/40/30 pattern or a larger deposit instead, so treat the percentages as a starting point you adjust to the work.
Milestone payment meaning compared with advance, progress payment and retainer
The milestone payment meaning is easiest to pin down next to the models it gets confused with. All four stage out money differently, and the difference decides who carries the risk while the work is in progress.
| Model | How you get paid | What triggers it |
|---|---|---|
| Milestone payment | In parts, per approved stage | An agreed deliverable is signed off |
| Advance | A sum before work starts | The contract is signed |
| Progress payment | A share of work completed so far | A date or percentage of effort, not a deliverable |
| Retainer | A fixed sum each month | The calendar, for ongoing availability |
A progress payment is the closest cousin, and in everyday use the two terms are often swapped.
The practical line is that a milestone is released against a finished, approved deliverable, while a progress payment is tied to how much of the work is done on a cadence.
For advances and net terms on top of this, see our guide to freelancer payment terms.
Why clients and freelancers use milestone-based payment, and where it goes wrong
Milestone-based payment works because it gives both sides something a single final invoice cannot. Payment by milestone lets the client control spend against visible progress, while you are never carrying the full project unpaid.
- For the client - they fund one stage at a time, confirm the work before releasing, and can stop cleanly after any completed stage if priorities change.
- For you - cash arrives through the project rather than all at the end, and an approved stage is money you keep, which steadies your income on a long build.
- For both - the scope is written down stage by stage, so there is far less room for a vague "that is not what I wanted" argument at the finish line.
The failure mode is nearly always the same: a stage that the client will not approve, or simply sits on.
What if a client rejects or delays a milestone
Most rejected or delayed stages come down to how the stage was defined.
If the contract spells out clear acceptance criteria for each deliverable, a rejection has to point to a specific unmet criterion, which turns an argument into a fixable list. Build three things into the contract to protect yourself.
- Acceptance criteria - write down exactly what "done" means for each stage, so sign-off is a check against a list rather than a matter of taste.
- A review window - give the client a set number of days to approve or request changes, with a clause that treats silence past that window as acceptance.
- A revision limit - state how many rounds of changes a stage includes, so an open-ended "one more tweak" does not stall the release indefinitely.
A deemed-acceptance clause, where no response within the window counts as approval, only applies if you and the client agree it, so get it in writing before work starts.
Collect every approved milestone from overseas clients in one place.
Milestone payments on Upwork and Freelancer.com escrow
On both platforms the money sits in escrow, which simply means the platform holds a funded stage until it is approved, so neither side can walk off with it mid-project.
Both work the same way at the start: the client funds a stage, you deliver, and the platform releases it on approval.
The release rules differ in the detail that matters most to you, namely when the cash actually becomes yours and what happens when a stage is disputed.
How Upwork funds and releases each milestone
With Upwork escrow on a fixed-price contract, the client funds one milestone at a time, a minimum of USD 5 per stage, and must release the current stage before funding the next.
When you submit work, the client has 14 days to approve or request changes; if they do neither, the funds auto-release to you. After approval, the money is available once a security period of about 5 days passes.
If a stage is disputed, you have 7 calendar days to file it, and the client has 5 days to respond; no response releases the funds to you.
A declined dispute goes to non-binding mediation by Upwork, and withdrawal to an Indian bank carries a small flat fee. These rules are current as of October 2026.
How Freelancer.com milestones are funded and released
The employer creates and funds a milestone before you start, and you can propose up to 10 milestones that add up to your bid.
Only the employer can release a milestone, in full or in part, and once released, the funds cannot be clawed back.
An employer cannot cancel a milestone they have funded, while you can cancel an incoming one you have not yet earned.
If a release is refused and you cannot resolve it directly, the case goes to the platform's Dispute Resolution Service, where both sides pay an arbitration fee and the arbitrator's decision is final.
Milestone payments with a direct client: contract clause and invoices
With a direct client there is no platform holding the money, so your contract does the job escrow would otherwise do. A clear milestone clause and one invoice per stage keep the project enforceable and your paperwork clean.
Cover these points in the clause for each stage.
- The deliverable - the specific output that stage produces, named plainly enough to be testable.
- Acceptance and window - the criteria for sign-off and the number of days the client has to respond.
- Amount and currency - the sum for the stage and the currency it is billed and paid in.
- Due date - when payment is due after approval, for example within seven days of sign-off.
- Late payment and changes - what happens if payment is late, and how extra change requests are priced.
Raise a separate invoice for each stage as it is approved, rather than one invoice for the whole project.
This invoice-per-stage approach, sometimes called milestone billing, gives you a clean match between each deliverable, each payment and each piece of remittance paperwork later on. For how clients actually send the money, see our guide to freelancer payment methods.
How Indian freelancers and agencies receive each milestone from abroad
Here is where a milestone project gets specific for you in India: each approved stage is usually paid on its own.
That means each payment you receive carries its own transfer cost, its own settlement time and its own paperwork, and the receiving route you pick repeats on every stage.
Platform withdrawal, a bank wire and a cross-border collection account each cost and clear differently, so the route is worth choosing before the first stage is billed.
How each milestone lands in India
Each stage can reach your Indian bank account by one of three routes, and the route sets both the cost and the speed.
- Platform withdrawal - you pull an approved stage from Upwork or Freelancer.com to your bank or to a wallet like Payoneer, which is simple but carries a per-transfer fee.
- A bank SWIFT wire - a direct client wires each stage to your account, which works almost everywhere but can take longer and may lose money to intermediary bank charges on the way.
- A cross-border collection account - you receive each stage into a dedicated account and have it settled to your Indian bank in rupees.
One such route is Xflow, a cross-border payments platform. Xflow Payments India Pvt.
Ltd. holds final Payment Aggregator - Cross Border (PA-CB) authorisation from the Reserve Bank of India (RBI), as of February 2026, and each inward payment is settled through AD-1 banks on the next business day.
Indian freelancers and agencies can receive in 25+ currencies from 140+ countries through Xflow receiving accounts.
Local collection accounts cover clients paying in USD, EUR, GBP and CAD, while Australian dollars and other currencies arrive by SWIFT. The platform carries ISO 27001 and SOC 2 certification.
What each milestone costs, with a USD 1,000 and USD 4,000 example
The cost of receiving a stage is mostly the gap between the mid-market exchange rate and the rate you are actually given, plus any fixed transfer fee.
As an illustration, if one route takes about 3% all-in and another takes about 1%, the difference shows up on every single stage.
Take a USD 1,000 stage. At roughly 3% all-in you keep about USD 970 worth of rupees; at roughly 1% you keep about USD 990.
On a USD 4,000 project split 20/30/30/20, that same gap applies to the USD 800, USD 1,200, USD 1,200 and USD 800 stages separately, so a wider spread adds up across the project.
The same arithmetic holds for clients paying in GBP, EUR, CAD or AUD; only the starting exchange rate changes.
Receive every milestone from overseas clients into your Indian account.
Paperwork for each milestone payment
Each payment credited to your account comes with its own proof of remittance, a FIRA or FIRC. If a client pays each stage separately, that means one document per stage; a platform withdrawal can bundle several stages into one.
That document is what lets you show the money came in as an export receipt. For how the two differ, see our explainer on firc vs fira.
These rules apply to each stage. They are correct as of October 2026, so confirm them with your bank or CA.
- Export of services is zero-rated - under GST your service exports are zero-rated, and if you are GST-registered, a Letter of Undertaking (LUT) lets you export without charging IGST, as long as payment arrives in convertible foreign exchange. Our guide to export of services under gst covers the detail.
- Realisation window - export of services proceeds are expected to be realised within nine months of the invoice date, so each milestone invoice starts its own clock.
- One trail per stage - keep each invoice matched to the payment and the FIRA or FIRC that covers it, which is exactly why one invoice per milestone is worth the small extra effort.
For agencies billing by milestone
An agency bills by milestone the same way a freelancer does, with two differences.
The stages usually map to a team's phases rather than one person's tasks, and many agencies run a retainer for ongoing work alongside milestones for project deliverables, so both show up on the same client account.
Keep one clean trail per client: an invoice, an inward payment and a remittance document for each stage, kept per client and per project.
The GST position is the same as for a freelancer, since an agency exporting services can also be zero-rated on the same conditions when it receives in convertible foreign exchange, so the paperwork scales with clients rather than changing in kind.
Receive and reconcile every client milestone in one place.
Frequently asked questions
Being paid by milestone means a project fee is released in parts, with each part paid when an agreed deliverable is finished and approved, rather than by the hour or on a set date.
A payment milestone is a single stage with its own trigger and amount, such as a 20% deposit on signing a contract, or 30% released when the first working draft is approved.
A milestone-based payment schedule is the list of all stages in a project, each with its trigger and its share of the fee.
A common one is 20% on kickoff, 30% at the midpoint, 30% at testing and 20% on handover.
A milestone payment is released against a finished, approved deliverable. A progress payment is tied to how much of the work is done over time, such as a share of effort.
Only the employer can release a milestone on Freelancer.com, in full or in part. Once released, the funds cannot be recovered, and an unresolved refusal goes to the platform's Dispute Resolution Service.
You get one FIRA or FIRC for each payment credited to your account. If the client pays each milestone separately, that is one per milestone; a platform withdrawal that bundles several milestones gets one document.
Yes. An agency bills by milestone like a freelancer, often alongside a retainer, raising one invoice per stage and keeping one matched remittance trail per client for its service exports.