How to Structure Milestone Payments for an AI Project (Get Paid on Proof, Not on Promises)

Duncan RogoffDuncan Rogoff October 2, 2026 9 min read
Five small wooden blocks arranged like ascending steps on a dark slate desk, with a brass key resting on the top block, in moody low lamp light
Original image, Claude Code Club

How to structure milestone payments for an AI project

To structure milestone payments for an AI project, split the fee into a few payments and attach each one to a visible, checkable event: the project starts, the client sees it working, the client accepts it. Do not attach payments to dates, because the client can stall a date, and do not attach them to hours, because hours are an argument. A payment that unlocks when the client approves a working preview is one nobody has to chase.

This protects both sides. The client never pays for something they cannot see, which is the real fear behind most hesitation on AI work. You never deliver the whole thing on trust and then wait. The number of payments is not the point; the proof behind each one is.

Why dates and hours are the wrong triggers

Payments tied to dates ("first of the month") feel tidy but they break the moment the project slips for any reason, including the client being slow to send material. Then you are asking for money for work they cannot yet see, and they are right to resist.

Payments tied to hours turn every invoice into a negotiation about whether it really took that long. With AI builds that is especially bad, because the speed of the tool means clients assume the work was easy and push back on the time. I price AI work on the outcome, as covered in why I stopped charging hourly for AI builds, and the payment schedule follows the same logic: pay for outcomes you can point at.

The CCC Proof-Gated Schedule

Four payments, each gated by something the client can see

PaymentTriggerWhat the client sees
StartSigned agreementA confirmed scope, a start date and a kickoff call
ShowWorking preview on the client's own dataThe main job working on a live link they can click
ShipWritten acceptance of the finished buildThe full thing, tested against the agreed list
KeepGo-live, then monthlyMonitoring, fixes and small changes under a plan

Start is the deposit. It commits the client and covers the work of getting going. It is paid before any work begins, and the project does not start until it clears.

Show is the payment that matters most, and the one people skip. When you have the core job working on a link the client can open, with their own example data in it, you request the next payment. It proves progress, gives the client a real look before most of the money is spent, and gives you cash flow through the middle of the project instead of one big wait at the end. How to demo a Claude Code build to a client covers how to run that preview so it gets approved.

Ship is paid on acceptance, before you hand over the final access. The finished build is tested against the list in the agreement, the client confirms in writing that it matches, and the final invoice is due. Keep is optional but I always offer it: a monthly plan for fixes and small changes that begins at go-live. How to turn a one-off client into a monthly retainer covers that conversation.

Define "accepted" before you start

A milestone only works if everyone agrees in advance what counts as done. Put three things in the statement of work. First, the checklist the build will be measured against, written in plain language as things the client can do or see. Second, the response window: the client has a set number of working days to accept or list the specific items that do not match the checklist. Third, the silence rule: if the window passes with no response, the milestone is treated as accepted and the invoice is due.

How to write a statement of work for an AI project has the full structure, and how many revisions to include in an AI project covers how many rounds of fixes fit inside each milestone. Without these, acceptance becomes an open-ended conversation and your payment becomes a hostage to it.

What you hold back until the final payment

Give the client everything they need to judge the work, and hold back only what they need to run it without you. In practice that means: the preview link stays live throughout, but production access, the transfer of accounts and the source files are handed over after the Ship payment clears. State this in the agreement, in a sentence, before the project starts, so it reads as the process rather than as a threat.

Be fair about it. Do not hold back something the client already paid for, and do not hide a working build from them to force payment. The point is a sequence, not a standoff. How to hand off a Claude Code project covers the handover itself.

When a client stalls on a milestone

  • Silent after a preview. Send a short message restating what was shown, the acceptance window and the date it ends. Most delays are simply someone being busy.
  • Vague unhappiness. Ask them to list the specific items that do not match the checklist. Anything on the list gets fixed; anything not on it is new work, quoted separately. How to handle scope creep on client projects has the wording.
  • Wants to pay later. Hold the schedule. If the cash situation is real, offer a smaller number of larger milestones in place of late payment on the existing ones, never open-ended delay.
  • Won't pay at all. Pause work as the agreement allows and follow the steps in how to handle a client who won't pay. Having acceptance in writing is what makes that conversation short.

How to present the schedule so it closes

Put the schedule on the same page as the price, in the same plain language as the table above. When a client sees that money only moves when they have seen something working, the number feels safer, and the "what if you disappear" worry fades without you having to argue it. If they ask whether the fee can come down, the "can you do it cheaper" objection covers the answer, and the answer is almost never a discount: it is a smaller scope.

Free Claude Code drops, straight to your inbox

Short, practical drops on skills, MCP, agents, prompts, and more. No spam, unsubscribe anytime.

Frequently asked questions

How should I structure milestone payments for an AI project?

Tie each payment to something the client can see and approve: a deposit to start, a working preview on their own data in the middle, and written acceptance of the finished build at the end. Avoid tying payments to dates or hours worked.

How many milestone payments should an AI project have?

Two for a small, short project (start and acceptance), three or four for anything larger or longer. Add a middle payment as soon as you would be uncomfortable waiting until the end to be paid.

What counts as a milestone being accepted?

Whatever the statement of work says. Write a plain-language checklist the build is measured against, a response window for the client, and a rule that silence after the window counts as acceptance. Without these, acceptance turns into an open-ended conversation.

Should I hand over access before the final payment?

Give the client a live preview throughout so they can judge the work, but hand over production access, account transfers and source files after the final payment clears. Put that sequence in the agreement before the project starts so it reads as process, not leverage.

What if the client wants to pay everything at the end?

Decline politely and explain that paying only at the end means you carry all the risk through the whole project. Offer the same schedule with fewer payments if the project is small, and keep a deposit in every case.

Last reviewed by Duncan Rogoff on October 2, 2026

Duncan Rogoff

Written by

Duncan Rogoff

Apple · PlayStation · Charles Schwab

Keep reading

AgencyClaude Code

How to Demo a Claude Code Build to a Client (Show the Outcome, Not the Code)

To demo a Claude Code build to a client, show them one job done start to finish on their own data, on a link that is already live, and then ask for the next step before the call ends. Do not show the code, the prompts or the terminal. Here is the demo structure, the prep checklist, and what to do when something breaks on screen.

David Iya 9 min
Read article
MonetizationAgency

How Much to Charge for a Mobile App (Price the Launch and the Upkeep, Not Just the Build)

How much to charge for a mobile app comes down to three things you price separately: the build, getting it into the app stores, and keeping it working after launch. Quote a fixed fee in tiers, keep the store accounts in the client's name, and never sell an app without a monthly line. Here is why an app is not priced like a website, the three tiers I quote, the store costs that go on their own line, and the mistakes that leave you maintaining an app for free.

Duncan Rogoff 9 min
Read article

Ready to build it yourself?

Join Claude Code Club, the #1 community for learning claude code, for $9/month.

← Back to the blog