Joshua Paling

How to make fixed price work

Customers want fixed price. Here’s how to make it a fair deal for yourself. I recently read this tweet-storm, on why you should never take fixed price contracts.

It says:

Unless you’ve done the job 20 times, and can estimate how long it will take with a high-degree of certainty, fixed-price is suboptimal. Like the over-under in betting, someone wins, and someone loses. And to answer who is more likely to win, the contractor or the employer, you can answer with another question: When was the last time you had a software project come in on-schedule? For clarity, fixed duration contracts are fine: “You pay for N weeks of work, I do N weeks of work”. Where you get into trouble is: “I pay for N weeks of work, regardless of how much time it takes to complete”. The employers who do this tend to also like to play games with what is in vs. out of scope. Avoid.

Having spent years in a small digital agency where > 95% of our work was fixed price, I agree with all the points. The problem is, almost all customers want a fixed price.

Here’s some tips for making fixed price work.

Fixed price is insurance

This is the golden rule. In a fixed price job, you’re selling the customer two things:

  1. The product you’re building them
  2. Insurance on the cost of that product

Insurance costs money. In the case of software, you should charge \~30% additional for fixed price jobs. You can tell the client this in plain english. They will still want fixed cost for the same reasons they still buy travel/car/indemnity insurance.

Companies selling insurance (ie, you):

  1. Don’t win on every single customer. They win overall.
  2. Have different premiums for different customers, based on risk.
  3. Have strict written terms on what is and isn’t inside the scope of the insurance policy.


You’ll drastically underestimate your first few projects. Don’t underestimate the next few. Here’s some tips:

  1. Hofstadtler’s law states “It always takes longer than you expect, even when you take into account Hofstadter’s Law.” This is doubly true of software.
  2. Break the work into small chunks, estimate each, then total.
    You’ll want to break the project into chunks for writing your scope too. More on that later.
  3. Scope will change. The client doesn’t know what they want yet. You’ll write a formal scope to protect you against scope change, but asking for more money at every tiny change sucks. Allow a significant amount of fat so you can absorb some reasonable amount of scope change.
  4. Consider the value of the job to the client. Is it a game changer for them? If so, charge more.
  5. Got your estimate? Now, Double it. Everything takes twice as long as you think.
    And DON’T consider the fact that it’ll get doubled when going through the points above!

Won’t I be out-competed on price?

Companies who get a few quotes on a job will get figures all over the place. Not everyone’s shopping for the cheapest price, and regardless of your price point, you’ll have people turning you down for being too expensive, and others turning you down for being too cheap. Yes, really.

You want to go for the clients who know cheapest isn’t best. Not only do they pay more, they’re also usually more professional, less petty, and much more enjoyable to work with.

Writing a scope

For a significant sized job, you should write a scope and have clients read and sign it before commencing work. Most clients won’t actually read it, but do it anyway.

A scope should detail what you will complete under the fixed cost. It should also outline what you won’t complete. You can place this under a euphemism like “Future Considerations”, and mention that these are ideas / possible enhancements for future, not included under the current scope.

A scope is what you’ll fall back on when your client says “… but I wanted this from the beginning” and you say “it wasn’t mentioned in the scope — we can do it, but at additional cost”. Assuming you’re being fair and telling the truth, clients will usually accept that without much fuss.

A scope is also what you’ll fall back on, on the off chance things get much worse than that. A scope is like writing the terms for the insurance you’re offering. Insurance companies don’t say “sure, we’ll cover any unexpected expenses you have on your holiday, no questions asked!”


It’s hard, but if you can, charge some amount to prepare a scope. One way to pitch it is “it comes of the cost of the job if you go ahead with us”. Companies can, and will, get you to write a great scope, then take your scope out to tender with cheaper companies that would not have done half as good a job of scoping out their project. A good scope is worth money in its own right.

Take a deposit up front. For smaller jobs (say up to 20k), take 50% up front, as soon as the scope is signed. For larger jobs, break it into milestones as makes sense, but the first payment should be up front, before starting work.

The last payment should be prior to going live — as in “it’s in staging and we’re ready to flick the go live switch once you pay”. Even if you trust the client, invoices get paid much more slowly after the project is live! (If the client resists, you may hold back some nominal amount to bill after it’s gone live, but 90% + should be before.) Most importantly, watch Mike Montiero’s great talk “Fuck you, pay me”. I can’t say I follow all his advice, but I probably should.

No claim bonus

You know how insurance companies have a “no claim bonus”? That’s clever marketing. It means “clients who make claims get charged more”. You can do the same. For difficult clients, or clients where you’ve lost out before, charge them a higher premium for future fixed price work (and recoup some of what you lost previously).

Tracking time — estimates vs actuals

Fixed price means you’re under no obligation to track time. It’s a good idea to do so anyway, for your own future reference. Don’t be too transparent with the client, though.

If you do fixed price right, there’ll be plenty of times where you come in under estimate, and the client could have got it cheaper at an hourly rate. That’s completely fair — fixed price is insurance, which the client wanted. You took the risk and it paid off. But there’s nothing to be gained from letting the client know that this time, you won.

Many clients expect a “Fixed price if it goes over estimate, but hourly if it goes under” deal — and that’s simply not viable for you. Fixed price means actual hours aren’t the client’s concern.