The fix: never let the final payment depend on the client agreeing that you're done. Tie the last milestone to a defined completion event, funded and held before the work starts, so the release is a mechanical trigger — not a conversation.

When a client sends 90% and calls the job complete, the problem isn't the missing 10%. The problem is that you already handed over the finished work and now you're asking for money you can't force. You've become a collections agent for your own labor. The leverage was gone the moment the last deliverable left your hands with the balance still owed.

Why the last 10% is the one you lose

Every payment schedule has a weakest link, and it's always the final one. Early milestones get paid because the client still needs you — there's more work coming, more leverage on your side. The final payment has no such pressure behind it. The client already has what they wanted. Withholding the last slice costs them nothing and costs you your margin.

So a client who's perfectly reasonable at 40% and 70% suddenly discovers 'issues' at 100%. Not because the work is bad, but because the final payment is the only one where paying is optional. You've structured your entire schedule so the riskiest dollar is the last dollar and the last dollar is the one with zero leverage attached to it.

The final invoice isn't a payment. It's a favor you're hoping the client feels like doing.— General contractor, after eating a 15% balance

Move the money before the work, not after

The structural answer is milestone escrow. The client funds each milestone into a held account before that phase begins. The money is committed — out of the client's checking account, out of their control to 'renegotiate' — but not yet yours. It releases when the milestone's completion condition is met.

That single change flips the whole dynamic. You're no longer chasing a payment after delivery. The funds are already sitting there, earmarked, waiting on a defined trigger. The client can't send 90% and call it done, because they don't control the release timing and the last 10% was funded at kickoff, not begged for at closeout.

The key is defining the completion condition in writing before anyone starts. Not 'client is satisfied' — that's just their mood in a contract. Use something objective: final walkthrough completed, punch list items checked off, deliverables uploaded and accepted within a stated window. When the condition is met, the money releases. No email thread. No waiting on a check.

What this actually protects

Escrow doesn't just protect your final payment — it protects the relationship. A client who knows the funds are already committed stops treating the balance as a bargaining chip, because there's nothing to bargain over. The negotiation happened up front, when both sides had leverage and goodwill. That's the right time to argue about scope, not the day before you'd like to get paid.

And if there's a genuine dispute, an escrow structure gives you a defined process instead of a standoff. The money doesn't vanish and it doesn't get released under pressure — it stays held until the condition is resolved. That's a far better position than 'I finished the job and now I'm hoping.'

If you're tired of the last milestone being the one that always slips, look at how contractor plans handle milestone funding and automatic release. It's the difference between invoicing and getting paid.