Orivions / Blog / Milestone payments and escrow

Guides · 7 min read

Milestone payments and escrow for Web3 service contracts: how to structure them

By Jakub Malarczyk, Founder, Orivions ·

Key takeaways

Payment terms are where many Web3 engagements go wrong. Pay everything upfront and you carry all the risk; ask a provider to wait until the end and good teams will decline. Milestones split the risk fairly: the provider is paid as value is delivered, and you never have more money at stake than the next piece of work.

What makes a good milestone

An example for a Solana dApp

A typical split for a project with a program, a frontend and an external audit:

Deposits and escrow

A deposit for the first milestone, often 10 to 30 percent of it, is reasonable and protects the provider from clients who disappear. Beyond that, escrow can remove the need to trust either side: you deposit the milestone amount with a neutral party, or into a smart contract, and the funds are released when the milestone is accepted.

On-chain escrow works well for clearly defined milestones paid in stablecoins. It still needs an agreed process for disagreements: who decides, how quickly, and what evidence counts. An escrow without a dispute process only moves the argument.

Paying in crypto? Agree the currency (usually a stablecoin such as USDC), the network, who pays transaction fees, and the exact wallet addresses in the contract. Confirm addresses through a second channel before the first payment; changed payment details are a classic fraud pattern.

When a milestone is disputed

Clear milestones start with a clear brief; use our Solana project brief template. And before you pay anyone, run through the red flags when hiring Web3 providers.

Frequently asked questions

How should I pay a Web3 development agency?

Split the work into milestones with written acceptance criteria and pay per accepted milestone. A modest deposit for the first milestone is common; paying the full project upfront is not.

What is a milestone escrow?

An arrangement where the client deposits funds for a milestone with a neutral party or smart contract, and the funds are released to the provider when the milestone is accepted, or handled by an agreed dispute process if it is not.

What makes a good acceptance criterion?

Something both sides can check without arguing: a deployed program at a given address passing listed tests, a report delivered at a stated commit, or a feature working on devnet as described in the specification.

Hire verified Solana providers

Describe your project and get matched with verified teams. Free for clients; providers pay only on completed engagements.

Get matched →

Related reading

← All posts