All articles
Startups & BusinessOctober 3, 2026 6 min read

The Fixed-Bid Trap: When Milestone Pricing Quietly Bankrupts Your Agency

Fixed-bid contracts feel safe to clients and suicidal to agencies. Here's how milestone pricing actually breaks, and the hybrid structure we use when a client insists on a fixed number.

The Fixed-Bid Trap: When Milestone Pricing Quietly Bankrupts Your Agency

Every agency founder I know has lost money on a fixed bid. Not a little — the kind of loss that eats a quarter, forces an awkward conversation with the team about bonuses, and leaves the account manager explaining to a client why "just one more revision" is suddenly a problem. The weird part is we keep signing them.

This is a breakdown of why milestone-based fixed-bid contracts fail in predictable ways, what the client is actually buying when they ask for one, and the hybrid structure we now use when walking away isn't an option.

Why Clients Love Fixed Bids (And Why That Should Worry You)

When a non-technical buyer asks for a fixed price, they're not being cheap. They're managing risk. Their CFO wants a line item. Their board wants a number. Their procurement team has a template that requires milestones. The fixed bid isn't about the money — it's about transferring uncertainty onto you.

That transfer has a price, and most agencies forget to charge it.

The healthy version of a fixed bid looks like this: scope is small, well-understood, and the client has signed off on wireframes and acceptance criteria before you quote. Think a marketing site, a Shopify theme port, a Stripe integration against a documented API. You've built this five times. Your estimate has a known variance.

The unhealthy version — the one that eats agencies — looks like this: a six-month build against a one-page brief, with milestones tied to features that haven't been designed yet, and a payment schedule that back-loads 40% to "final acceptance". If this sounds familiar, keep reading.

The Three Ways Milestone Contracts Break

In my experience, fixed-bid milestone deals fail in three distinct ways, and usually more than one at the same time.

1. The Acceptance Criteria Drift

You wrote "user can log in with email and password" in the SOW. Six weeks later the client expects magic links, SSO with their customer's Okta tenant, and a password strength meter that matches their brand. None of that was in the scope. All of it feels, to the client, like a reasonable interpretation of "login".

The fix isn't tighter language — lawyers can't write SOWs specific enough to survive a real build. The fix is a change-request process that both sides agreed to before the first invoice, with a published hourly rate and a 48-hour turnaround on quotes. If you don't have that, every ambiguity becomes a negotiation, and you lose most of them.

2. The Milestone That Isn't Really Done

Milestone 3 is "checkout complete". You ship it. The client finds a bug in the tax calculation on a specific state. Is the milestone done? Technically yes, the SOW doesn't mention state tax edge cases. Practically, the client won't sign off, and your 25% payment is stuck behind that signature.

This is the single most dangerous dynamic in milestone pricing: the client controls the sign-off, and the sign-off controls your cash. You've handed the keys to your runway to someone whose incentive is to withhold them until they feel the deal is "fair".

3. The Dependency You Didn't Own

You quoted 400 hours assuming their internal team would provide the brand assets, the content, and access to their CRM by week 2. It's now week 7. Your designers burned through revisions on placeholder content. Your backend engineer sat idle waiting for API credentials. You ate those hours because the SOW said "client to provide" without a date or a penalty.

Fixed bids assume the client is a reliable counterparty on their own deliverables. They usually aren't, not because they're malicious but because their day job isn't shipping your project.

The Hybrid Structure We Actually Use

When a client genuinely needs a number — and sometimes they do, especially in regulated industries or grant-funded projects — we don't quote a pure fixed bid anymore. We quote a capped T&M with a defined scope ladder.

Here's the shape of it:

Phase 0: Paid discovery (fixed, 1–2 weeks)
  Output: wireframes, tech spec, acceptance criteria,
          and a T&M estimate with a cap.

Phase 1: Build (T&M, capped at estimate + 15%)
  Billed weekly against timesheets.
  If we hit 80% of the cap, we trigger a scope review.
  Client can descope, raise the cap, or stop.

Phase 2: Hardening (fixed, 2 weeks)
  Bugfix, performance, deployment. Price known upfront.

The mechanics matter. Weekly billing with visible timesheets means the client sees the burn as it happens — no surprise invoice at week 10. The 15% buffer covers normal estimation variance without a conversation. The 80% trigger forces a decision while there's still budget to make one, instead of after you've overrun.

Most importantly: the client still gets a number. It's a ceiling, not a promise, but it's a number they can take to their CFO. In practice, we often come in under the cap, which earns trust for the next engagement.

What Goes in the Discovery Phase

Phase 0 is where the real pricing work happens. If you skip it or do it for free, you've already lost. A proper discovery produces:

  • A tech spec specific enough that two different engineers would estimate within 20% of each other.
  • Acceptance criteria written as testable statements, not feature names.
  • A dependency list with named owners and dates on the client side.
  • An explicit list of what is not in scope. This list should be longer than the in-scope list.

We charge for discovery because free discovery gets treated as free. A client who won't pay for a two-week paid scoping phase will not respect the SOW that comes out of it. If you want more on this, we've written about how we structure agency engagements for exactly this reason.

When a Pure Fixed Bid Still Makes Sense

I don't want to argue that fixed bids are always wrong. They work when three conditions hold:

  1. You've built this specific thing before, more than twice. Not "a similar thing" — the same thing, with the same stack, for a comparable client size.
  2. The scope fits in under six weeks of calendar time. Beyond that, too much changes in the client's business for a fixed scope to survive.
  3. The client's internal dependencies are minimal or already in place. You're not waiting on their IT team, their legal review, or their CEO's opinion on button colours.

If all three are true, quote fixed and build a healthy margin for the risk you're still absorbing. If any one of them is false, use the hybrid or walk.

The Conversation With the Client

The hardest part isn't designing the pricing model — it's selling it. Clients who came in asking for a fixed bid often read T&M as "blank cheque". Here's roughly how we frame it:

"We can give you a fixed price, but to protect both of us it would need to be about 40% higher than our capped estimate, because we'd be pricing in the risk of everything we haven't discovered yet. Most of our clients find the capped model gives them the budget certainty they need without paying that premium."

That's not a sales trick. It's genuinely how the math works. Fixed-bid pricing has to include a risk premium, and if you're not charging that premium you're subsidising the client's uncertainty with your team's weekends.

Some clients still choose the pure fixed bid after that conversation. That's fine — now you're pricing it honestly, and if the project runs smooth you keep the premium as margin for the next one that doesn't.

Where We'd Start

If you're an agency founder reading this and recognising the pattern: don't try to rewrite every contract this quarter. Start with the next deal in your pipeline. Price it as capped T&M with a paid discovery front-end. Write the acceptance criteria yourself before you quote the build. Put the 80% trigger in the SOW.

Then watch what happens to your margin on that one project versus the last three fixed bids you signed. The numbers will make the next conversation with your sales team a lot easier.

#pricing#agency#contracts#founders

Want a team like ours?

72Technologies builds production software for the kind of teams who actually read this blog.

Start a project