A while ago I had two fixed-price jobs running in the same month. One was moving twelve pages of an old site into a new CMS, with designs already approved. The other was adding online booking to a small business site, using the booking provider the client had already signed up with.
I quoted the migration at €2,100 and the booking work at €1,800. Both quotes came from the same €70 an hour I use for planning, plus a margin for the unknown bits. The migration took 24 hours, so I earned about €87 an hour on it. The booking work took 41 hours, because the provider had no test environment, its documentation described a version of the API that no longer existed, and every change had to be tried against the client's live calendar at quiet times of day. €1,800 over 41 hours is about €44 an hour.
Same freelancer, same rate, same month. The difference was not effort or skill. One job had scope I could see all the way to the end. The other had a piece in the middle that nobody, including me, had ever touched. I had sold certainty on both.
That is the whole fixed versus hourly question in one month. The pricing model is really a decision about who carries the risk when the work turns out bigger than it looked.
The pricing model is really a decision about who carries the risk when the work turns out bigger than it looked.
Price is how you decide who carries the risk
With hourly billing, risk is shared as you go. If the work grows, the bill grows, and the client sees it happening. With a fixed price, the risk moves to you. If the work grows and there is no change-order path, you absorb it.
Neither is the honest one or the greedy one. Clients sometimes treat hourly as "the freelancer can pad it" and freelancers sometimes treat fixed as "the client is trying to cap me". Both suspicions miss the point. Each model fits a different amount of certainty, and choosing the wrong one is how pleasant projects go sour on both sides.
Fixed price
Hourly
Who carries growth
You, unless a change order exists
Shared as the bill grows
Fits when
Done, inputs, and one approver are written
Unknowns are bigger than the knowns
What the other side gets
A number a budget can hold
A checkpoint before the money is gone
The four questions I ask before naming a model
I used to pick the model based on what the client asked for. Now I ask four things first, usually on the first call:
What does done look like, in one paragraph?
What do you need to give me (copy, access, assets), and by when?
Who can approve a change to the scope in one reply?
Is figuring things out part of the job, or is the answer already known?
If the answers are crisp, inputs are dated, and one person approves, fixed price is on the table. If any answer is "we'll see", the project, or at least that part of it, stays hourly. The fourth question does most of the work. Clients rarely say "this is exploratory" out loud, but they tell you when they describe the goal as a feeling ("we want checkout to feel smoother") rather than a deliverable.
Where fixed price earns its keep
The migration was a textbook fixed-price job. The pages existed. The designs were approved. Acceptance was simple to write: each page matches the design, content carried over, old URLs redirect. I had done three similar migrations before, so my estimate was based on real past hours rather than a guess.
Fixed price suits work like that because both sides benefit. The client gets a number their accountant can put in a budget. I get paid for being efficient, not for being slow. If I finish early, that is my reward for having done this before.
The conditions I look for are boring. The deliverables can be listed. The client owns the inputs and has dates for them. I have done something close to this recently. And there is room in the price for the ordinary wobble that every project has, which how much buffer a freelancer needs goes into properly. Fixed price without that room is just optimism with a contract attached.
Where hourly is kinder than it looks
The booking work should have been hourly, or at least started with a small hourly phase. Something like "up to eight hours to get a test booking working end to end, then a fixed quote for the rest" would have exposed the missing sandbox on day one, and the client would have paid for discovering it rather than me.
Hourly fits work where the unknowns are bigger than the knowns: audits, performance problems with no clear cause, third-party integrations nobody has done before, founders still deciding what the product is. Pretending you can price those as a lump is a trap, and you are usually the one who falls into it.
Hourly does not mean the client signs a blank cheque. I pair it with a cap and a stop rule: "up to forty hours; at thirty-two I stop, show you where we are, and we decide together whether to continue." That checkpoint at eighty percent is what makes clients comfortable. They see the trajectory before the budget is gone, not after. Short written notes about what each block of hours produced help too, since clients pay for outcomes, not for a timesheet (billable versus working hours explains why those two numbers never match).
The maintenance client who hated the meter
One small business client had me on hourly maintenance at €70 an hour. Plugin updates, the odd form fix, a seasonal banner. The work varied between two and six hours a month, so the invoice swung between €140 and €420. Every month, the owner emailed asking why it was different from last month.
They were not disputing the work. They just could not budget for a number that moved. So we changed the shape: €250 a month covers up to four hours, anything beyond that is €70 an hour, and I warn them before going over. Four hours at the hourly rate would be €280, so they get a small discount for predictability, and I get a steady line in my income.
Some months I spend two hours and that €250 works out generously. Some months I spend all four and it works out a little under my rate. Across a year it evens out, and the monthly email stopped. For ongoing work like that, a fixed monthly amount with an hourly overflow is often better than either pure model.
Hybrids that work, and the line that holds them together
Most of my projects now use one of three hybrid shapes.
Paid discovery, then fixed build. A short hourly or fixed-fee discovery produces a written spec. The build is quoted fixed against that spec, per milestone.
Hourly with a cap. Exploratory work with a ceiling and a checkpoint, as above.
Fixed launch, hourly or monthly support. The build is a fixed package. Everything after launch moves to a maintenance arrangement.
Every one of these fails if the boundary between phases is vague. I write the trigger in the estimate: "The fixed quote for phase two follows sign-off of spec v1." Without that sentence, the client hears a fixed number early, and I hear hourly flexibility late, and we both feel misled.
Illustration
Illustration · 16:9a written spec beside an unexplored booking API, to show why the pricing model follows what you can already see, editorial still life, 16:9, AI illustration
Red flags in both directions
For fixed price, I get nervous at "we'll know it when we see it", a third-party system nobody has integrated, several stakeholders with no single owner, or a "quick project" with no written acceptance criteria. Any of those, without a paid discovery phase, keeps the job hourly or splits it into very small fixed pieces.
Hourly has its own warning signs. A client who wants a detailed estimate every week but will not pay for planning time. A scope that never shrinks while the budget must. Meetings that keep growing while you do not bill them because it feels petty. Hourly is still no excuse to skip estimating. It just gives you permission to re-estimate out loud when reality changes.
Switching models in the middle is normal
Projects outgrow their first shape all the time. When a fixed job starts growing past what was written, I use a calm change order rather than quietly absorbing extras. When the growth is big enough that the whole thing has become exploratory, I say so: "This has outgrown the fixed scope. I suggest we finish milestone one as agreed and move phase two to hourly with a cap." I have never had a client react badly to that sentence when it arrives early. I have had several react badly when it arrives after weeks of silent overtime.
Renewals deserve the same honesty. A fixed package priced two years ago on old assumptions is effectively an hourly rate you forgot to raise. When I renew, I recompute from recent actual hours plus buffer, and from my current hourly rate, not from the number the client happened to accept the first time.
The sentence I say before any number
If scope, approver and inputs are written down and stable, fixed milestones work. If any of those three is still moving, hourly with a cap and checkpoints protects both of us until it stops moving.
I say that on the sales call, before anyone sees a price, and I write the chosen model on the first page of the statement of work next to the scope paragraph. The booking job taught me what it costs to skip that step: about €44 an hour, and a month of feeling slightly stupid. Pick the model that matches how much you actually know, not the one that makes the quote feel tidier.
End of this piece
Writer
PrimedEcho
Independent notes on remote work, focus, and freelance practice. About this site.