Clients like fixed prices because they remove uncertainty. What they actually do is move the uncertainty from the client to you: you have agreed to absorb whatever the job turns out to cost. Charged properly, that transfer is a service worth being paid for. Charged badly, it is how a busy quarter produces no money.
So the question is not whether to quote fixed prices. It is how to quote them as somebody who will be held to the figure.
Build the estimate from a task list, not from a feeling
The instinct is to look at the brief, feel the size of it, and name a number that seems defensible. That method has a specific failure mode: it estimates the work you can picture, and the work you can picture is the part you have done before.
Instead, break the job into tasks small enough to estimate in hours — nothing larger than a day. Anything you cannot break down is not an estimate, it is a risk, and it needs naming as one.
| Line | Hours |
|---|---|
| Kickoff, brief review, questions | 4 |
| Structure and wireframes | 8 |
| Design, 5 templates | 24 |
| Build and content entry | 36 |
| Two rounds of revisions, as agreed | 12 |
| Testing, launch, handover session | 10 |
| Project management and email | 12 |
| Subtotal | 106 |
| Contingency, 20 percent | 21 |
| Total | 127 |
Multiply the total by your rate and you have a floor, not a price. What you charge on top of that floor is a separate decision about value, competition and how much you want the work — but you should never discover after accepting that you were below the floor.
The lines everyone leaves out
Look at the estimate above and notice that four of the nine lines are not the actual craft. Those four are where fixed-price projects go wrong, and they are missing from most quotes.
- Revisions. Not whether they happen — how many are included. "Until you are happy" is an unlimited liability written in friendly language.
- Meetings and email. On a project of any length this is days, not hours. Estimate it explicitly or absorb it silently.
- Waiting. Time spent blocked on content, access or a decision is not free, because it fragments your schedule and pushes the work into a worse week.
- Handover. Training, documentation and the fortnight of small questions afterwards. Almost always unpriced, almost always delivered.
- Third-party friction. Someone else's API, hosting or approval chain. You cannot estimate it, so name it as an assumption instead.
What the quote itself has to say
The number is the easy part. What protects you is everything around it, and most of it fits on one page.
- Scope, as deliverables rather than activities. "Five page templates" is a deliverable; "design work" is an argument waiting to happen.
- Exclusions, explicitly. What is not included is the most valuable paragraph in the document, and the one people leave out because it feels negative.
- Assumptions. Content supplied by a date, one round of consolidated feedback, access to whatever you need. Every assumption is a change order waiting to be legitimate.
- Revision rounds, counted. Two is normal. Beyond that, your hourly rate applies, and saying so up front is what makes it possible to charge later.
- The payment schedule. A deposit, one or two milestones, the balance on delivery — not one invoice at the end.
- Validity. Thirty days is standard. Without it, a client can accept a six-month-old price after your costs have changed.
One more thing about the number itself: quote a single price, not a range. A range communicates that you do not know, and the client will hear the lower end as the price and the upper end as an attempted upsell. If the uncertainty is real, price the part you understand and quote the rest separately once it is knowable.
Handling the change that arrives in week three
Scope creep is rarely a client behaving badly. It is a client having a reasonable new idea, at a point when saying yes seems easier than the conversation. The problem is that the tenth reasonable idea is what turns a profitable project into a bad one.
The fix is procedural, and it takes two sentences: acknowledge the request, then state its cost in time and money before doing any of it. "Yes, that is doable — it adds about six hours and pushes delivery to the 19th. Shall I add it?" Nobody is offended by that, because it is an answer rather than a refusal. What causes offence is the invoice that arrives with unannounced extra hours on it.
- Price the change when it is requested, not at the end. At the end it looks like a penalty; in the moment it looks like a choice.
- Put it in writing, even briefly. An email saying what was agreed is enough and it is what you will refer to.
- Say what it does to the date, not just the price. Deadline effects are often what makes a client drop the request themselves.
The only thing that improves your next quote
Every fixed-price project is an experiment whose result is thrown away by most people. You estimated 127 hours. Find out what it actually took.
Do this three or four times and a pattern appears that is remarkably consistent across trades: the core craft lands near the estimate, and everything surrounding it — revisions, coordination, waiting, handover — runs at two or three times what was allowed. Once you know your own multiplier, your estimates stop being optimistic in a way no amount of care achieves. It requires recording the hours even on a job where nobody is billing by the hour, which is the part people skip.
A quote is a document, not an email
Scope, exclusions, assumptions, revision rounds and a payment schedule, in something the client accepts with a date attached. The buying guide covers what to look for in quoting software, including online acceptance.