Fixed-fee pricing has a reputation for being risky. When the price is fixed and the work is not, every extra feedback round and every "quick" addition comes straight out of your margin.
But the risk is not in the pricing model. It is in the scope. A well-scoped fixed-fee project is often more profitable than the same work billed hourly, because you are paid for the outcome rather than penalized for being efficient.
TL;DR
A fixed fee stays profitable when the scope is written as a list of concrete deliverables, an explicit list of exclusions, a capped number of revision rounds and a change-request clause that prices anything new. Before quoting, estimate the hours per deliverable, multiply by your target hourly rate and add a buffer, so the fixed price is a decision rather than a guess. Track time against the project even though the client never sees an hourly bill.
Start with deliverables, not activities
The most common scoping mistake is describing what you will do instead of what the client will receive. "Website design" is an activity. "Designs for five page templates (home, about, services, blog listing, contact), delivered as desktop and mobile layouts" is a deliverable.
A good deliverable line answers four questions:
- What is it? A named, countable thing.
- How many? Five templates, three logo concepts, twelve blog posts.
- In what form? Source files, PDF, live URL, a recorded walkthrough.
- What does "done" mean? Approved by the client in writing, or delivered and not objected to within a set number of working days.
If a deliverable cannot be counted or checked, it will expand. "Ongoing support" and "social media assets" are the classic offenders. Replace them with "two hours of post-launch support within 30 days" or "eight static social graphics in two sizes".
Write the exclusions down
Exclusions feel negative to write, so freelancers skip them. They also save the most money.
List the things a reasonable client might assume are included but are not. For a website project that might be:
- copywriting (client supplies all text)
- stock photography licenses
- hosting, domain and third-party plugin costs
- content migration from the old site
- ongoing maintenance after launch
You are not trying to be exhaustive, just naming the items most likely to come up in week three as "I thought that was part of it". Each one is a conversation you have now, calmly, rather than later under deadline pressure.
Cap the revisions, and define a round
"Unlimited revisions" is not generous. It is an open-ended commitment priced as a closed one.
Decide how many revision rounds each deliverable includes. Two is common for design work. Then define what a round is: one consolidated set of feedback from the client, delivered at once, which you then address in one pass. Feedback that trickles in across a week in six separate messages is not one round. It is six, and your scope should say so.
Also separate revisions from changes of direction. Adjusting colors and spacing on an approved concept is a revision. Asking for a completely new concept after approval is new work.
Add a change-request clause
Scope will change. Clients learn things during a project, and some of those changes are genuinely good ideas. The goal is not to refuse change. It is to make change visible and priced.
A simple change-request clause says:
- any work outside the written scope is a change request
- each change request is quoted in writing (fixed price or estimated hours) before work starts
- the client approves the quote before you begin
- approved changes may move the timeline, and the new date is stated in the approval
This turns "can you just…" into a two-minute decision for the client rather than an unpaid hour for you. If a change is large enough to blow the original budget, treat it as a budget conversation rather than a favor. The post on how to ask a client for more budget covers how to have that conversation without damaging the relationship.
Sanity-check the price with hours × rate
Fixed fee does not mean you stop thinking in hours. It means the client stops seeing them. Before you quote, run the numbers.
Here is an illustrative example for a small brand identity project:
| Deliverable | Estimated hours |
|---|---|
| Discovery call and brief | 3 |
| Three logo concepts | 12 |
| Two revision rounds | 6 |
| Color palette and type system | 4 |
| Brand guidelines PDF | 8 |
| File export and handover | 3 |
| Total | 36 |
At a target rate of 90 per hour, that is 3,240. Add a buffer for the unknowns. 15–25% is a reasonable range for work you have done before, more for unfamiliar territory. With a 20% buffer you land at roughly 3,900. You might quote 3,900 or round to a cleaner number depending on your market.
The buffer covers the meetings and email threads you did not count. If you consistently finish under the estimate, the buffer is your profit for being good at this. If you consistently blow through it, your estimates need work. The freelance pricing guide covers how to arrive at the target rate in the first place.
Track time on fixed-fee work anyway
This is the step that makes the rest of the process improve over time.
Log your hours against each deliverable even though you are not billing them. At the end of the project, compare actual hours to your estimate. After three or four projects of the same type you will know, with real data, whether "three logo concepts" is a 12-hour job or a 20-hour job for you.
In COLO, projects hold tasks with time tracking, so you can log hours per task on a fixed-fee project and compare them against the plan without a separate spreadsheet. Internal work like admin or your own portfolio can sit on non-billable tasks so it does not muddy the client numbers. The post on billable vs non-billable hours explains why that split matters, and project budget tracking for freelancers shows how to watch spend against the fee mid-project.
Put it all in the proposal and contract
A scope only protects you if the client has agreed to it. The deliverables, exclusions, revision limits and change-request process belong in the proposal the client accepts and the contract they sign, not in a separate email they may never read. The freelance proposal template has a section for each of these.
FAQ
How detailed should a fixed-fee scope be?
Detailed enough that a stranger could read it and tell whether a given request is in or out. If you find yourself writing "and related work" or "as needed", that line needs tightening.
What if the client refuses to accept revision limits?
Offer a higher fixed fee with more rounds included, or price additional rounds individually. Clients who want unlimited revisions usually accept a clear per-round price once they see it.
Should I show the client my hours estimate?
Usually not. The hours estimate is your internal sanity check. Showing it invites the client to negotiate hours rather than value. Some clients, particularly in consulting, do expect a breakdown, so read the room.
What size buffer should I use?
There is no universal figure. Start with a modest buffer on familiar work and a larger one on unfamiliar work, then adjust based on the actual-versus-estimate data you collect from tracking time.
The scope is the price
A fixed fee is a promise about what you will deliver for a set amount. The clearer the promise, the easier it is to keep and the easier it is to defend. Write the deliverables, name the exclusions, cap the revisions, price the changes, and check the number against your hours before you send it. Then track the time so the next quote is better than this one.
