Even Keel
Guides · Pricing

Pricing a fixed-bid project without losing money

Fixed-price projects lose money when you quote your honest estimate with no room for the work you can't see yet. The fix: estimate the hours, add a contingency buffer of 15–25%, bake in a set number of revision rounds, and quote the buffered number — never the bare estimate. Then take a deposit and put your terms in writing.

Want a quote in seconds? The free builder turns hours into a defensible price. Open the Quote Builder →

Why fixed bids go wrong

A fixed price is attractive to clients because it removes their risk — they know the number up front. But that risk doesn't vanish; it moves onto you. If the work runs longer than you guessed, the client still pays the agreed price, and your effective hourly rate quietly collapses. Most freelancers lose money on fixed bids for one of two reasons: they estimate optimistically, and they don't price in revisions or the unknowns that always appear.

Build the quote in four moves

1. Estimate the hours honestly. How long will the actual work take if things go reasonably well? Be specific about scope.

2. Add the revisions you're promising. Decide how many rounds of changes are included and roughly how long each takes. Those hours are part of the job, so they're part of the price.

3. Add a contingency buffer. Apply 15–25% on top for the things you can't see at estimate time — the integration that's messier than expected, the feedback that reshapes the work. Use the higher end for vague scopes or new clients.

4. Quote the buffered number. That's your recommended price. The un-buffered "floor" is what undercutters quote, and it's the number that turns a good project into an unpaid one the moment anything slips.

Worked example

Estimated build hours40
+ 2 revision rounds × 3 hours6
Base hours46
Your rate$100 / hr
Floor (no buffer — don't quote this)$4,600
+ 20% contingency buffer$5,520
Recommended quote$5,520

Why the buffer matters: your realized rate

Say the project gets messy and actually takes the equivalent of 64 hours instead of the 55 you'd budgeted. If you quoted the recommended $5,520, your realized rate is still about $86/hour — 86% of your target. If you'd quoted the bare floor of $4,600 instead, that same messy project drops you to about $71/hour. The buffer is the difference between a project that's merely less profitable and one that actively costs you. That gap is the whole reason to quote the buffered number.

Protect the quote with terms

A price is only as good as the agreement around it. Always pair a fixed bid with: a written scope of what's included, a stated number of revision rounds, a price for revisions beyond that (a simple "each extra round is $X" line), and a deposit — 50% upfront is standard. These aren't about distrust; they keep an honest project from sliding sideways.

Enter your hours and rate and get a floor, a recommended price, a worst-case check, and the deposit — free. Try the Quote Builder →

To reuse this for every project and keep your quotes consistent, the Freelance Pricing Toolkit ($29) has the project-pricing model as a saveable spreadsheet, alongside rate, retainer, and raise-your-rate models.

Questions

What's a normal contingency buffer?
15–25% is typical. Use the lower end when the scope is crisp and you know the client; the higher end for fuzzy scopes, new clients, or unfamiliar work.
Should I ever quote the floor price?
No — the floor assumes everything goes perfectly, which projects rarely do. It's useful only as a reference for how little room you'd have.
How do I handle a client who keeps asking for changes?
That's what the included-revisions limit and the per-extra-revision price are for. When you've stated both up front, extra requests become a simple, unawkward "that's an additional round at $X."