billable.dev

How to Raise Your Rates Without Losing Clients

By Mark Fulton · 2026-09-17 · 8 min read

How to Raise Your Rates Without Losing Clients

Raise your rates in two stages. First, quote the new rate to every new lead for a few weeks and see whether it signs without a discount. Only once it sticks, move existing clients with 60 days written notice, a short email that states the new number and the date it starts, and a promise that work already scheduled stays at the old rate. Doing it in that order means you never ask a loyal client to pay a number the market has not already accepted, and the conversation with them becomes a notice rather than a negotiation.

When is it time to raise rates?

A rate goes stale quietly. These are the signals worth acting on:

  • You have been booked solid for a quarter. Turning down work at your current rate is the market saying the price is below what buyers will pay.
  • Twelve months have passed since your last change. Health cover, software subscriptions, and hardware all crept in that time.
  • Your floor math changed. If you set your rate from your own numbers, rerun them. The bottom-up method in freelance developer hourly rates works from target income, overhead, a tax reserve, and realistic billable hours. Change any input and the floor moves. Remember that the raise arrives before tax: the IRS puts the self-employment tax rate at 15.3% (12.4% Social Security, 2.9% Medicare), and income tax sits on top of that.
  • The employed alternative moved. In the Stack Overflow 2025 Developer Survey salary data, the global median for full-stack developers was 12.5% higher than in the 2024 survey, back-end developers 15.1% higher, and front-end developers 24% higher. Survey respondents change from year to year, so treat those as direction, not a precise pay rise. If the benchmark moved and your rate did not, you got cheaper.
  • Your skills changed what you deliver. If you now cover work that used to need a second contractor, you are selling a bigger outcome at the old price.

Signals that do not count: one slow month, one client who haggled, or a rate you saw someone post online. Raise on evidence, not on mood.

Why test new clients before old ones?

New leads have no anchor. They have never seen your old rate, so the new number is simply your rate. That makes them the cheapest possible test of whether it holds.

Here is the proof-first method in practice:

  1. Pick the new number from your floor math, not from a round figure that felt brave.
  2. Quote it to every new lead from a set date, with no exceptions for nervous budgets, or the test is meaningless.
  3. Watch your next few proposals. "Sticks" means a client signed at the new rate without you trimming scope to fit their old budget. A lead who ghosts tells you little either way.
  4. Adjust if it clearly fails. If several reasonable leads balk at the number itself, you learned that cheaply, and no existing relationship was touched.

There is a second benefit. Once new clients pay the new rate, the email to existing clients can say so. "This is the rate I quote new clients" is a fact about your business, not a request that can be refused.

For fixed-price work the test is the same. Your estimate is hours times rate plus contingency, so the new rate shows up as a higher quote. The breakdown of when each model fits is in hourly vs fixed price billing for developers.

What does the rate-increase email say?

Four things, and nothing else: the new rate, the date it starts, what stays at the old rate, and one option for a client whose budget is fixed. No apology and no list of your expenses. Justification invites debate. A plain notice does not.

Copy this, fill the brackets, and send it from your normal work email. The subject and body together come to 114 words.

Subject: Rate update for [Client], starting [Date]

Hi [Name],

A quick note on rates. From [Date], my hourly rate for new work will be $[New rate], up from $[Old rate]. That gives you 60 days to plan around it.

Anything already scheduled or in progress before [Date] stays at the current rate, including [Project].

This is the rate I have quoted new clients since [Month]. Nothing else changes: same payment terms, same invoicing schedule, same turnaround.

If a smaller monthly block of hours would suit your budget better, reply and we can set that up before [Date].

Thanks for the steady work together. I am looking forward to what we build next.

[Your name]

"Up from" states the old number so nobody digs through invoices for the difference. "Anything already scheduled" removes the fear that a project mid-flight gets repriced. The smaller-block offer lets a fixed budget say yes to you without saying yes to a bigger bill. Send each one individually, never as a BCC blast.

How much notice do existing clients get?

Sixty days is the working default: long enough to cover a budget cycle and a full invoicing period, short enough that the raise feels real. If your contract already has a rate-review clause, follow it; the paste-ready version in freelance contract payment terms fixes rates for 12 months, then allows a revision on 60 days written notice, no more than once a year, with scheduled work carved out.

Use this timing checklist to run the full sequence:

  1. Day minus 90: check the signals. Rerun your floor math, look at your booking rate for the last quarter, and pick the new number.
  2. Day minus 90 to minus 60: run the new-lead test. Quote the new rate on every proposal and estimate. Note the date you started, because it goes in the email.
  3. Day minus 60: send the email to each existing client, one at a time. Set the start date on a billing boundary: the first day of a month, or the start of a retainer period.
  4. Day minus 60: write down what is grandfathered. List each in-progress project or signed statement of work that stays at the old rate, and its expected end date.
  5. Day minus 30: add one line to your invoice notes. "Rate changes to $[New] per hour for work from [Date], as per my note of [Date]." Finance teams never saw the email.
  6. Day minus 7: answer anything still open. Confirm block-of-hours arrangements in writing.
  7. Day zero: update your default rate so every new line item uses it.
  8. First invoice at the new rate: show the rate on every line. "API integration, 12 hrs at $[New]/hr" leaves nothing to question. The field-by-field layout is in what belongs on a software development invoice.

For retainer clients, move the retainer at its next renewal rather than mid-period, and restate the included hours at the new price. The mechanics are covered in how to invoice retainer clients.

What if a client pushes back or leaves?

Most pushback is a budget problem, not a verdict on your work. You have four honest responses:

  • Hold the rate and reduce the hours. Same rate, a smaller monthly block, a narrower scope. The client keeps the budget and you keep the price.
  • Phase it. Half the increase now, the rest at a fixed date six months out, both written down.
  • Offer a prepaid block. A client who pays for hours upfront removes your collection risk, which has real value, so a modest per-hour concession on a prepaid block is a trade rather than a discount.
  • Part ways well. Documentation, credentials handed over, and a couple of weeks of questions answered.

The one response to avoid is quietly keeping the old rate for the same scope after announcing a new one. Every future notice to that client becomes negotiable.

Run the arithmetic before you fear the loss. Suppose a client takes 20 hours a month at $100, which is $2,000. At $120 they would need only 17 hours to pay slightly more than before. If they leave instead, those 20 hours go to new clients who already sign at $120, which is $2,400. Losing your lowest-rate client usually costs less than it feels like it will.

Put the new rate on the next invoice

The raise only becomes income when it reaches the invoice. In Billable, the hourly rate you enter when importing a git log is saved in your browser as the default for every new line item, so update it once and your next invoices follow. There is no account and no server; your data stays on your machine. Generate your next invoice free, or start from the free invoice template for developers. If you keep a grandfathered client for a while, Pro ($4 a month billed at $24 for six months, or $79 lifetime) can prefill a returning client's last rate, tax, currency, and terms, which keeps old and new rates straight during the changeover.

FAQ

How much can I raise at once?

Raise to the rate new clients are already signing at, because that number has evidence behind it. If the gap between your old and new rate is large, phase it: half now and the remainder six months later, both dates in the same email. The practical limit is where onboarding a replacement becomes cheaper for the client than paying you, which for a codebase you know well is further out than you think.

Do I grandfather long-time clients?

Grandfather projects, not people. Work that is already scheduled or in progress should finish at the old rate, which is what the email promises. A permanent discount creates a two-tier book where an old relationship pays the least. To reward loyalty, give longer notice or a phased increase with a firm end date.

Should the contract mention future increases?

Yes. A rate-review clause that fixes rates for a set period and then allows changes on written notice makes a raise routine. Written terms matter beyond your own contract too: in New York City, the Freelance Isn't Free Act gives freelancers the right to a written contract, along with timely and full payment. This is general information, not legal advice, so have a lawyer in your jurisdiction review contract language for large engagements.

Raise mid-project or between projects?

Between projects, or at a billing boundary for ongoing hourly work. Never reprice a signed fixed-price project; the client budgeted against your number. For open-ended hourly work or retainers, pick the first day of a billing period at least 60 days after your notice, so every invoice carries a single rate.


Billable is a free, client-side invoice generator for developers. Your data stays in your browser.