How to write a grant milestone report
Updated 7 min readBy the web3grant editors
A grant milestone report tells your funder what you promised, what you shipped and where to check it, so they can release the next payment. A good one fits on a page or two: each deliverable with its status and evidence links, metrics against targets, spending against budget, any changes with reasons, and the plan for the next milestone.
Key takeaways
- 55 of the 99 programs in web3grant's directory pay in milestone tranches, and at many of them the next payment waits on your report: the Tezos Foundation pays each milestone once its report is approved.
- DAO-run programs often make reports public: the CKB Community Fund DAO publishes proposals and milestone reports in full, and funded Akash teams record their spending in a public GitHub folder.
- Lead with evidence a reviewer can check in minutes: merged pull requests, release tags, contract addresses, live URLs and dashboards.
- Report misses and changes plainly, with the reason and your fix. Funders handle bad news far better when it arrives before the due date.
- A fill-in template is at the end of this guide.
What is a grant milestone report?
A milestone is a checkpoint in a grant: a set of deliverables with a due date and, usually, a payment attached. A milestone report is the document you send at that checkpoint to show the deliverables are done. Programs call it a progress update, milestone report or, at the end of the grant, a final report.
Reviewers use it for three things: to verify the work, to approve the next payment, and to judge whether to fund you again. That last use is easy to forget. Your reports are the track record the next reviewer reads. For how milestones are set in the first place, see our guide to milestone-based grants.
What funders ask for
Reporting rules differ by program in timing, audience and what the report triggers. Here is what ten programs in web3grant's directory require, from their own documentation as checked on October 1, 2026:
| Program | When you report | Where | What it triggers |
|---|---|---|---|
| Tezos Foundation Grants | Each milestone | To the Foundation | That milestone's payment, once approved |
| Monero CCS | Each milestone | Posted report | Release of escrowed XMR, once accepted |
| CKB Community Fund DAO | Each milestone | Public; Stewards verify within 7 days | A 3-day vote that releases the next payment |
| Conflux Integration Grants | Each completed milestone | Public reporting required | CFX released per milestone |
| Zcash Community Grants | Each milestone | Forum updates | That milestone's payment |
| TRON Builders League | Progress and each milestone | Forum | Funds as milestones are met |
| OpenSats General Fund | Every 90 days | To OpenSats | Part of the grant agreement |
| Brink | Regular updates | Public | Required of every grantee |
| Kaia IOK Fund | After the funded campaign | To the Foundation | Results against your stated goals |
| Rocket Pool GMC | At least monthly | For the committee | Payment on your agreed schedule |
VeBetter grantees now post milestone reports on their proposal pages, and Akash's community pool asks funded teams for status updates and public spend records. Three of these programs carry notices on their web3grant pages: Rocket Pool says funds are tight, no outside team has won an Akash vote since August 2025, and VeBetter's activity is very low. Their reporting rules still show what funders expect.
The seven parts of a strong milestone report
A report that gets approved quickly answers seven questions, in this order:
- What did you promise? Quote the milestone exactly as written in the agreement, with its due date. Reviewers check against the text, not your memory of it.
- What shipped? List each deliverable with a plain status: done, partly done or not done.
- Where is the evidence? Link something checkable for each deliverable: a merged pull request, a release tag, a deployed contract address, a transaction hash, a live URL, a published audit.
- How do the numbers compare with the targets? If the milestone set metrics, give target, actual and the source of the actual number. Our guide to grant impact metrics covers which numbers to use.
- How does spending compare with the budget? Show planned and actual spend by budget line, and explain any variance over about 10%.
- What changed, and why? Name every change to scope, dates or budget, the reason and what you propose.
- What comes next? Restate the next milestone's deliverables and date, and list anything you need from the funder.
Weak and strong answers
The difference is usually specificity. These examples are fictional.
Weak: "We made great progress on the SDK and the community response has been amazing."
Strong: "Deliverable 2, TypeScript SDK v0.3: done. Published to npm as v0.3.0 on October 14 (release link). 41 of the 45 planned functions are implemented; the remaining 4 move to milestone 3, see Changes."
Weak: "Adoption is growing fast."
Strong: "Target: 5 integrations by October 31. Actual: 3 live (links), 2 in review with partner teams. Source: our public integrations page, updated weekly."
Should a milestone report be public or private?
It depends on the funder, and DAO-run programs lean public. Proposals and milestone reports for the CKB Community Fund DAO are fully public, Zcash and TRON grantees report on forums, and Brink grantees give regular public progress updates. Foundation programs often take reports directly, as the Tezos Foundation and Kaia's IOK Fund do.
A public report has two audiences: the reviewer who approves the payment, and the token holders or community members who will vote on your next request. Write it so a stranger can follow it without your Discord history. For treasury-funded work, a clean public record is what voters check next time; our guide to blockchain treasury funding explains why.
Keep some things out of any public report: security vulnerabilities that aren't fixed yet, personal data, KYC documents, private user data and partner terms covered by an NDA. Send those to the funder privately, and say in the public version that you did.
Akash's public spend reporting: a real example
The Akash Community Pool shows what fully public reporting looks like. Every funding request starts as a public draft with a TL;DR, timeline, amount and a cost breakdown in hours and hourly rate. If the on-chain vote passes, the team posts status updates and records its spending in the Community Pool Spend Reporting folder in Akash's GitHub community repository, where anyone can compare it with the original request. The Akash grants page describes the process.
Two lessons carry over to any program. Report spending in the same format as the budget you proposed, so the comparison takes seconds. And because the grant is paid in AKT, record both the token amount and its dollar value when received, since the two drift apart. As of October 2026, no outside team has won an Akash community pool vote since August 2025, so this is an example of reporting practice rather than an easy source of funding.
How to write the report: tone and habits
The best milestone reports read like a status page, not a pitch:
- Lead with the status. The first sentence should say whether the milestone is complete, partly complete or late.
- Use numbers, not adjectives. "3 of 5 integrations live" beats "strong traction".
- Keep it short and link the detail. One or two pages, with links to code, dashboards and documents.
- Use the same structure every time. Reviewers learn where to look, and comparisons across milestones become easy.
- Answer earlier feedback. If the reviewer asked a question last time, answer it near the top.
When a milestone slips
Tell the funder before the due date, not after. Say what slipped, why, what it does to the rest of the plan and what you propose: a new date, a smaller scope or a reallocation. If the change affects scope or payments, ask for it to be recorded the way your grant agreement requires. A short, honest delay notice protects your next grant far more than a late report with excuses. Our guide on what happens after you win a Web3 grant covers the rest of the grantee's obligations.
Milestone report template
Copy this, fill in the brackets and delete what doesn't apply.
Milestone report: [project name], milestone [N] of [total]
Grant: [program name, grant ID] Period: [start date] to [end date]
Submitted: [date] Contact: [name, handle, email]
1. Summary
[Two or three sentences: complete / partly complete / late,
the main result, and anything the reviewer needs to decide.]
2. Milestone as agreed
[Paste the milestone text and due date from the agreement.]
3. Deliverables
- [Deliverable 1]: [done / partly done / not done]
Evidence: [PR, release tag, contract address, tx hash, URL]
- [Deliverable 2]: [status]
Evidence: [link]
4. Metrics against targets
- [Metric]: target [x], actual [y], source [dashboard or query]
5. Budget
- Planned for this milestone: [amount]
- Spent, by line: [engineering, audit, infrastructure, other]
- Received so far: [token, amount, value at receipt]
- Variance and reason: [explanation]
6. Changes and risks
- [What changed, why, effect on scope, dates or budget,
and what you propose]
7. Next milestone
- Deliverables and due date: [list]
- Requests to the funder: [reviews, intros, approvals]For the budget lines, mirror the structure you used in your proposal; our Web3 grant budget guide has one. If you are still writing the proposal, our guide on how to write a Web3 grant proposal shows how to set milestones you can report on cleanly.
FAQ
How long should a grant milestone report be?
A grant milestone report should usually be one or two pages, with links to the detail rather than the detail itself. Reviewers want status, evidence, numbers against targets and spending against budget, in that order. A long narrative slows approval. If a program gives you a template or form, follow it exactly and keep your answers within it.
What evidence do grant reviewers accept in a milestone report?
Grant reviewers accept evidence they can check themselves in a few minutes: merged pull requests, tagged releases, published packages, deployed contract addresses, transaction hashes, live URLs, public dashboards and audit reports. Screenshots and private demos are weaker because they can't be verified. For metrics, link the query or dashboard that produced the number, not just the number.
What should I do if I miss a grant milestone?
If you miss a grant milestone, tell the funder before the due date if you can, and send a short report anyway. Say what is done, what slipped, why, and propose a new date or a reduced scope. Programs that pay per milestone will usually hold that payment until the work is delivered, so an agreed revision is better than silence.
Should I publish my grant milestone report?
Whether to publish a grant milestone report depends on the program's rules. Many DAO-run programs, such as the CKB Community Fund DAO and Zcash Community Grants, expect public reports on their forums, while many foundations take them privately. Even when private reporting is allowed, a public summary builds the track record you will need for your next grant.
Programs in this guide
Where each one stands today, soonest deadline first.
- Rocket Pool GMC grantsRocket Pool DAOFunds are tight. Round 41 declined every application, Round 40 approved 1 of 10, and nothing above $7,500 has been approved since May 2026.Undisclosed6 days
- OpenSats General FundOpenSatsUndisclosed29 days
- Akash Community PoolAkash NetworkNo outside team has won a community pool vote since August 2025. Recent spends went to work run by the core teams.UndisclosedAnytime
- Brink Grants and FellowshipBrinkUndisclosedAnytime
- CKB Community Fund DAONervos communityUndisclosedAnytime
- Conflux Integration GrantsConflux FoundationUndisclosedAnytime
- IOK FundKaia DLT FoundationUp to $20KAnytime
- Monero CCSMonero ProjectUp to $65KAnytime
- Tezos Foundation GrantsTezos FoundationUndisclosedAnytime
- TRON Builders LeagueTRON DAOUndisclosedAnytime
- VeBetter GrantsVeChain FoundationActivity is very low: one application arrived in Q2 2026 and none was processed.Up to $50KAnytime
- Zcash Community GrantsZcash Community GrantsUp to $750KAnytime
Related guides
- How to apply for Web3 grants: a step-by-step guideHow to apply for Web3 grants in 11 steps, from checking a program is open to KYC and milestone payouts, with real processes from SCF, Zcash and Solana.
- Web3 grant application checklist: 30 things to checkA 30-item grant application checklist for Web3 builders: program status, proposal, budget, milestones, team links, KYC and wallet, and what to do after.
- Web3 grant proposal template (copy and adapt)A free Web3 grant proposal template with 12 sections to copy, a filled-in fictional example, and variants for DAO forum posts and RFP responses.
- What happens after you get a Web3 grant, step by stepWhat happens after you get a Web3 grant: agreement, KYC, payout setup, first tranche, milestone reviews, reports and follow-on funding, with real examples.