The Codex
How to set freelance rates (hourly, project, retainer)
Rates are math plus positioning. Start with a floor you can sustain, then price the outcome as your proof compounds.
Most freelancers don't undercharge because they're bad at math. They undercharge because pricing feels like a social risk: “What if they say no?” “What if I lose the deal?”
So they guess, anchor on their past salary, or price by optimistic time estimates, then get crushed by scope creep, client delays, and the invisible work between deliverables.
This page is the antidote: a pricing system you can run repeatedly, across projects, without turning every quote into a stress event.
Here's the core idea:
Rates are math plus positioning.
- The math gives you a floor you can sustain.
- The positioning (and proof) lets you charge above the floor by anchoring on outcomes.
If you want the quick tool version, start with:
For scoping so pricing doesn't collapse under ambiguity, use:
If you want the contract structure that makes your price “stick” (by preventing unpriced scope change), read Freelance contracts: the clauses that matter and use:
Codex summary
Rates are math plus positioning. Start with a sustainable floor rate (capacity + overhead + buffer), then package common work into 2–3 tiers with clear scope boundaries. Choose hourly when scope is uncertain, project pricing for bounded deliverables, and retainers for ongoing outcomes with predictable cadence.
Who this is for
Freelancers who undercharge, feel anxious quoting projects, get “can you do it cheaper?” pushback, or get burned by scope creep and unpriced changes.
If you only do 3 things
- Set a sustainable floor rate using capacity math.
- Package common work into 2–3 tiers with explicit scope boundaries.
- Use a discovery call to price uncertainty (and say no to vague scope).
Who this is for
This page is for freelancers who:
- undercharge or change prices randomly
- feel anxious quoting projects
- keep getting “can you do it cheaper?” pushback
- can't explain pricing confidently (so clients negotiate for them)
- get burned by scope creep and unpriced changes
- want to raise rates without losing every client
If you are brand new to freelancing and need the full start path first, read:
If you're already burned out and pricing is part of the problem, also read:
If you only do 3 things
Do these in order:
- Set a sustainable floor rate using capacity math.
- Package common work into 2–3 tiers with explicit scope boundaries.
- Use discovery to price uncertainty (and say no to vague scope).
Pricing is risk allocation (not a moral debate)
Pricing feels emotional because it's tied to identity (“Am I worth it?”). That framing makes you negotiate against yourself.
A better framing: pricing is how you allocate risk between you and the client.
- Hourly puts more scope risk on the client (they pay if it takes longer).
- Project pricing puts more scope risk on you (you win if you control changes, you lose if you don't).
- Retainers allocate risk over time (cadence + boundaries matter more than the headline number).
Pick the model that matches the uncertainty, then write boundaries so the work doesn't quietly expand.
Part 1: The floor rate (the math that prevents self-sabotage)
The floor rate is your “keeps the business alive” number, not your premium rate. It's the minimum rate that covers:
- your income needs
- overhead (tools, insurance, accounting, hardware, etc.)
- admin time and sales time
- and risk (churn, unbillable gaps, late payment)
Most underpricing comes from assuming you can bill 40 hours/week forever. You can't: you'll sell, admin, plan, recover, and handle chaos.
The floor formula (conceptual)
Floor annual gross needed =
- target personal income
- + annual business overhead
- + buffer (risk, downtime, bad months)
Then divide by realistic billable capacity.
You can compute this quickly with:
How to set realistic capacity (the hard part)
Ask yourself:
- How many weeks per year are you truly available? (vacation, holidays, sick days, life)
- How many days per week can you realistically bill? (not “available,” bill)
- How many hours per day can you bill sustainably?
Early-stage freelancers often assume they can bill 6–8 hours/day. In reality, many solo freelancers average 3–5 billable hours/day across the year, depending on sales and admin load.
If your math assumes perfect billability, your rate will be too low. Then you “solve” it by working nights and burn out. That's not a business model.
Include a buffer on purpose
A buffer is not greed. It's a realism tax.
Buffers cover:
- scope uncertainty (even with good discovery)
- late payments and collection time
- client delays (you can't bill for waiting)
- non-billable work (proposals, follow-ups, onboarding)
If you don't price buffers in, you pay them out of your health.
Illustrative floor rate example (simple, not perfect)
A deliberately simple example to show the logic (adjust to your reality):
- Target personal income: $120,000
- Annual overhead (tools, accounting, insurance, etc.): $15,000
- Buffer for downtime/risk: $25,000
Annual gross needed = $160,000.
Now assume 800 billable hours per year (roughly 16 billable hours/week for 50 weeks, once you include sales/admin).
Floor hourly rate = $160,000 / 800 = $200/hr.
The point isn't that your floor is $200/hr. It's that if you assume 2,000 billable hours, you will underprice and “make up the difference” with nights and weekends.
If you want the cleaner version with your numbers (including taxes, capacity assumptions, and buffers), use the Rate Calculator.
Part 2: Choosing a pricing model on purpose
Different pricing models fit different risk profiles. Choose based on uncertainty and incentives.
Hourly pricing: best when scope is uncertain
Hourly works when:
- the work is exploratory or ambiguous
- the client can't define requirements
- you can't estimate reliably
- change requests will be frequent
- the client needs flexibility more than a fixed budget
Hourly fails when:
- the client wants cost certainty
- the client equates hours with value (“Why did this take so long?”)
- you're highly efficient (you punish yourself for being good)
If you price hourly, protect yourself:
- set an hourly anchor above your floor
- set a weekly max or estimate range
- confirm what “done” looks like for each phase
- use written updates to reduce anxiety about hours
Use:
Project pricing: best for bounded deliverables you can estimate
Project pricing works when:
- deliverables can be defined (“definition of done”)
- you can scope and estimate with confidence
- you can control change via a process
- the client cares about the outcome and timeline
Project pricing fails when:
- scope is vague
- stakeholders aren't aligned
- review cycles are unpredictable
- the client keeps “discovering” requirements midstream
- you have no change control
Project pricing requires strong scope boundaries:
The bridge method: turn an hourly rate into a project price
If you're new to project pricing, use your floor/target hourly rate as a starting point:
- estimate a realistic hour range (low/likely/high)
- multiply by your rate
- add a buffer for uncertainty
- turn that into a fixed scope with explicit exclusions
Example (illustrative): estimate 25–35 hours at $200/hr and add a 15% buffer; you might land around $6,000–$8,000. The SOW makes the number real.
Retainers: best for ongoing outcomes with predictable cadence
Retainers work when:
- the client has continuous needs
- you can define cadence and scope boundaries
- you have a clear “included vs not included”
- you can say “not this month” without drama
Retainers fail when:
- they become unlimited support
- “urgent” becomes the default
- the retainer is priced like a discount bundle
- you don't have a change request process for extra work
A retainer should come with:
- a monthly cadence (weekly update, office hours, deliverables)
- a work-in-progress limit (so you don't overcommit)
- a renewal checkpoint (so expectations reset)
Three retainer types (so you don't accidentally sell “unlimited”)
- Capacity retainer: you reserve X hours/days per month. Extra work is scoped separately.
- Deliverable retainer: you ship a defined set of deliverables monthly (for example: one landing page + two emails).
- Access retainer: the client pays for availability (office hours, reviews, ongoing guidance) with a strict boundary on what you produce.
Retainers get messy when the type is implicit. Make it explicit, then price it.
If retainers are making you tired, read:
Part 3: Packaging (how to stop selling “hours”)
Packaging sells clarity: it translates your capability into a result a buyer can understand and approve.
The “2–3 tier” structure (simple and effective)
Create 2–3 tiers with increasing scope and value.
Example structure (generic):
- Tier 1: Audit / diagnosis (fast, low risk)
- Tier 2: Implementation sprint (ship a defined outcome)
- Tier 3: Ongoing optimization / retainer (maintain outcomes)
Why this works:
- it gives budget flexibility
- it anchors value upward
- it gives cautious buyers a lower-risk entry point
- it makes scope boundaries explicit
Packaging also improves your pipeline, because it's easier to pitch:
Package by outcome + constraint
A good package includes:
- outcome (“what changes”)
- timeframe (“how long”)
- deliverables (“what you get”)
- exclusions (“what you don't get”)
- review cycles (“how feedback works”)
- change control (“what happens when scope changes”)
If you don't include exclusions, clients will write them for you.
Part 4: Pricing uncertainty (the most important skill)
Uncertainty is where freelancers lose money. Your job is not to eliminate uncertainty. Your job is to price it and control it.
Use phased engagements
Instead of quoting a giant project with fuzzy scope, split it:
- Phase 1: audit / discovery sprint (fixed)
- Phase 2: implementation (fixed or milestone-based)
- Phase 3: ongoing support (retainer)
This protects both sides:
- the client gets clarity before committing to a big budget
- you avoid gambling on unknowns
Use milestone billing to reduce risk
Milestones align payment to progress and reduce exposure.
Examples:
- 50% upfront, 50% on delivery
- or 30/30/40 across three milestones
Pair with:
Use change control so your price stays true
Without change control, “fixed price” becomes “fixed price plus unlimited extras.”
Use:
And learn the clause rationale:
Part 5: Defending your price (without getting weird)
Pricing conversations go badly when:
- you apologize
- you over-explain
- you negotiate against yourself
- you let the client redefine scope without changing price
Your goal is calm clarity: “Here's what it includes, here's what it costs, here's why.”
Pricing script: when a client asks “What's your rate?”
It depends on scope, timeline, and uncertainty. For projects like this, I'm usually in <range> depending on what's included. With a few questions, I'll send a short SOW with fixed scope and price.
This keeps you from committing to a number before you know what you're committing to, and ties price to scope.
Anchor on outcome + cost of delay
Clients rarely buy “a thing.” They buy:
- time saved
- risk reduced
- revenue enabled
- credibility gained
- internal stress reduced
A useful framing:
- “This is designed to achieve X outcome.”
- “The cost of not doing this (or delaying) is Y.”
- “Here's the bounded scope that makes it predictable.”
Pricing script: when a client asks “Why so much?”
This price covers the full scope in the SOW: <brief bullets>. It includes <key constraints and risk controls> and is designed to produce <outcome>. If you need a lower budget option, we can reduce scope by doing <smaller phase> first.
This does two things:
- it defends the price without defensiveness
- it offers a scope-based alternative (not a discount)
Discounting: do it only in exchange for something
If you discount, get something back:
- reduced scope
- shorter timeline
- fewer stakeholders
- faster payment terms
- testimonial/case study permission
- retainer commitment
Never discount “just because.”
Part 6: Raising rates (a low-drama approach)
Rate increases are normal. The trick is to do them with process, not panic.
Raise for new clients first
This is the simplest path:
- keep current clients at current rates temporarily
- quote higher rates for new work
- use wins and proof to make the higher rates feel natural
If your close rate remains strong, raise again.
If you need a practical step-by-step for this, use I need to raise rates.
For existing clients, raise at renewal points
Best times:
- contract renewal
- new project phase
- expanded scope
- annual review
Script:
Starting <date>, my rates for new work will be <new rate>. For your account, this applies to new scope and renewals. If you'd like to lock the current rate for a defined period, we can do that with a retainer commitment.
This gives them options while protecting you.
Use packaging to raise without “raising”
Often the cleanest “raise” is:
- keep the old package (limited availability)
- introduce a new package with clearer scope and higher price
- route new work to the new package
Part 7: Pricing guardrails that prevent burnout
Pricing is not just revenue. It's workload design.
If your pricing requires constant availability, emergency response, unlimited revisions, or 60-hour weeks, it's not pricing. It's a slow-motion health tax.
Use these guardrails:
- meeting windows and response-time expectations
- revision limits and review windows
- a work-pause clause for overdue invoices
- workload ceilings (WIP limits)
Related:
Common mistakes
- Using your previous salary as a pricing anchor.
- Quoting a project price without written scope boundaries.
- Pricing fixed-fee work when scope is ambiguous (without phases).
- Discounting to win clients you will resent.
- Forgetting admin/sales time and assuming full billability.
- Increasing rates without improving scope control (rate increases fail when scope is chaotic).
Conclusion: a pricing system is a stress reduction system
Good pricing is not just about making more money. It's about making the business survivable: predictable scope, predictable cashflow, and fewer “please save this project” weeks.
If you want the fastest next step, run the math in the Rate Calculator, then use the Discovery Call Agenda to scope with enough detail to quote confidently. For fixed-scope work, make the price stick with a Statement of Work and a change request process.
Tools and templates
- Rate Calculator
- Discovery Call Agenda
- Statement of Work (SOW) Template
- Change Request Addendum Pack
- Onboarding, delivery, and retaining clients
FAQ
"Should I charge hourly or fixed price?"
If scope is uncertain, hourly (or a short fixed discovery phase) is safer. If deliverables are bounded and you can control changes, fixed price can work well.
"How do I know if my rate is too low?"
Signals:
- you're fully booked but still stressed financially
- you can't afford recovery time
- you resent clients regularly
- one late payment creates panic
- your close rate is extremely high (you're underpricing)
"What if clients keep negotiating?"
Your price might be too high for your current positioning, or your scope is too vague. Tighten scope and package better. If you can't explain value and boundaries, clients will negotiate by default.
"Do I need to publish my rates on my website?"
Not required. Publishing can filter leads, but it can also reduce flexibility if your work is highly variable. If you publish, consider ranges or package tiers.
Jurisdiction notes
Pricing itself is jurisdiction-agnostic, but taxes and contract enforceability are not. Keep tax estimates separate from pricing unless you state assumptions clearly. For payment and contract structure, also read:
Tools and templates
Rate Calculator
Convert a target annual income into a day rate and hourly rate based on capacity, overhead, and buffers.
Open Rate CalculatorDiscovery Call Checklist
An interactive checklist for prepping, running, and following up on discovery calls so they turn into scoped next steps.
Open Discovery Call ChecklistQuote to SOW Checklist
A checklist to turn discovery notes into a scoped quote and a lightweight SOW with boundaries, review windows, and payment terms.
Open Quote to SOW ChecklistStatement of Work (SOW) Template
A lightweight SOW template that makes scope boundaries explicit and makes change requests boring.
Open Statement of Work (SOW) TemplateScope Change Checklist
A change request workflow checklist: clarify the request, estimate impact, get approval, and keep scope changes procedural.
Open Scope Change ChecklistLoading comments…
Comments
Sign in to comment.