How to Quote a Freelance Project: Phases, Buffer, Fees and a Floor Check
A fixed-price quote is a bet on your own estimate. This guide shows how to break a project into phases, add a contingency you can defend, decide who pays the payment fees, and check that the final number still clears your hourly floor.
1. Break the work into phases
Clients find one big number hard to judge, and so do you. Split the job into the stages you'd actually work through, each ending in something the client can see, such as a brief, a first draft or a delivered file. Typical phases look like:
- Discovery and brief (calls, questions, written summary of scope)
- First draft or design
- Production or build
- Revisions and handover
Phases also give you natural points for staged payments and for saying "that's a new phase" when the scope grows.
2. Estimate each phase in hours
Even on a fixed-price job, estimate in hours first. A few habits make estimates more reliable:
- Use your own history. If you track time, look at how long similar work really took, not how long you remember it taking.
- Estimate a range, then pick a number. Writing "8–14 hours" makes you think about what could go wrong. Quote close to the upper half unless the work is very routine for you.
- Count the hidden work. Calls, emails, file preparation, exporting and uploading all take hours.
- Price revisions explicitly. Decide how many revision rounds are included and estimate them as their own phase.
3. Add a contingency buffer
Most estimates are optimistic. A contingency of, say, 10–25% covers small surprises without renegotiating. That range is a rule of thumb, not a standard. Use less for work you've done many times and more for unfamiliar work or unclear briefs. Two points matter:
- The buffer is for unknowns inside the agreed scope. New requests are a change of scope and get their own quote.
- You can show the buffer as a line ("contingency") or fold it into the phase prices. Showing it can make the quote feel more honest. Folding it in avoids a negotiation over that one line. Either is fine as long as you're consistent.
4. Decide who pays the payment fees
If the client pays by card, PayPal or another processor, or in a foreign currency, part of the invoice never reaches you. You have two options:
- Absorb the fees. They're a cost of doing business. Your rate floor should already include them.
- Pass them on. Invoice a slightly higher amount so that after fees you receive the full project price. To receive amount
Awhen the provider chargesp%+ a fixed feef, invoice(A + f) ÷ (1 − p%).
5. Check the quote against your floor
Here's an illustrative project. The numbers are invented and aren't a market rate:
| Phase | Hours |
|---|---|
| Discovery & brief | 4 |
| Design / first draft | 12 |
| Build / production | 20 |
| Revisions & handover | 6 |
| Total | 42 |
- 42 hours × $90 = $3,780, plus a 15% contingency ($567), gives a project total of $4,347.
- If the client pays with a method costing 3% + $0.30 and you absorb it, about $130.71 goes to fees and $4,216.29 reaches you.
- That works out to $100.39 per hour if the 42-hour estimate holds, and $87.29 per hour if you use the whole buffer (48.3 hours).
- Against a floor of $75.42/hour (from the hourly rate guide) the quote passes either way. If the worst-case figure fell below the floor, you'd raise the price, cut scope, or pass the fees on (invoicing $4,481.75 here would land the full $4,347).
The project quote calculator does all of this for your own phases and shows a ✔ / ⚠ / ✖ verdict.
6. Write the quote so it protects you
A good quote is short, specific and hard to misread. Include:
- Scope: what's included, phase by phase, and what is explicitly not included.
- Revisions: how many rounds are included, and the rate for extra rounds.
- Timeline and dependencies: dates assume the client sends feedback and materials on time.
- Payment schedule: for example a deposit to start and the balance on delivery, plus your payment terms in days.
- Change requests: new work is quoted separately before you start it.
- Validity: how long the price stands (for example 30 days).