Journal — May 7, 2026 · 5 min read

How I Price Freelance Projects

The five ways I bill as a freelance developer, ranked from worst to best, plus the arithmetic that sets your hourly floor and why I refuse to be quoted "local rates" for global work.

I've been setting my own prices full-time since March 2026, and part-time for a few years before that. Not long enough to make me an authority. Long enough to have been wrong in specific, expensive ways, which is the part worth reading.

Here are the five ways I've billed, ranked by how much you should want each one.

5. Hourly

When it's right: open-ended work where nobody can define "done." Debugging a legacy system you didn't write, or a migration where the surprises are the job.

How it goes wrong: hourly punishes you for getting faster. The better I get at Terraform, the less a Terraform module earns me. It also invites a client to audit whether last Tuesday was really six hours.

I bill $45–65/hour depending on the work. AI systems and infrastructure sit at the top of that band, straightforward React at the bottom. Hourly is my floor, not my goal.

4. Day rate

Same idea, chunkier. You sell whole days and the client stops counting minutes.

When it's right: short intensive engagements. An audit, a week pairing with an in-house team.

How it goes wrong: you have to defend the day. If a client books Wednesday and then sends four Slack threads on Thursday, you sold a day and delivered a week.

3. Fixed-price, tightly scoped

Where most of my project work lives: $4,000–12,000 for a defined build.

When it's right: the scope is genuinely knowable. A marketing site with a CMS, a mobile app with a listed feature set, a retrieval pipeline over a corpus you've already seen.

How it goes wrong: the scope wasn't knowable and you find out in week three. Fixed price without a written change process is how developers end up working for $12/hour. That's a contract problem, and it's why I now insist on the clauses in contracts and scope creep.

2. Retainer

A monthly fee for reserved capacity. Mine sit around $2,000–4,000/month for roughly 30–50 hours.

When it's right: almost always, if the client is good. It converts the worst thing about freelancing, variance, into something that behaves like a salary without an employer.

How it goes wrong: retainers rot quietly. Month one the client uses every hour. Month four they use eight and wonder what they're paying for. Send an unprompted monthly summary, or you'll get cancelled by someone who forgot you existed.

1. Value-based

Price against the outcome instead of the hours. If an internal tool saves a support team 60 hours a month, the build is not worth what my calendar says it is.

When it's right: you can point at a number the client already tracks. Revenue, churn, headcount hours, cloud spend.

How it goes wrong: most projects have no clean number, and clients can smell a developer performing a business-value monologue he doesn't believe. I've priced this way twice. It worked once.

The arithmetic that sets your floor

The standard mistake is dividing your target income by 2,000 hours. You will never bill 2,000 hours. You'll bill 1,000 to 1,200 in a good year.

The rest goes to sales calls, proposals, unpaid scoping, invoicing, chasing invoices, contracts, tax paperwork, and the dead weeks between projects. I aim at roughly 100 billable hours a month and don't hit it every month.

Then add what an employer used to absorb: no provident fund, no health cover, no paid leave, your own equipment, and tax you set aside yourself. Call it a 40% uplift on whatever you want to end up with.

So: want $40,000 in your pocket, call it $56,000 gross, divide by 1,100 billable hours, and your floor is about $51/hour. Which is exactly why the bottom of my band makes me uncomfortable and the top of it doesn't.

The geographic rate trap

Twice now, a prospect has opened with a version of "we were thinking something more India-appropriate."

The work is identical. The architecture is identical. The client's revenue is in dollars. What they're proposing is that my postcode should be their discount.

Price the outcome and the market you sell into, not your cost of living. Where you sleep is your business, not a coupon the buyer is entitled to. If a US startup would pay an Austin agency $120/hour for the same build, my $55 is already the cheap option in the room.

The catch is that you have to back that number with proof rather than indignation. Nobody pays a global rate for a local portfolio.

The mechanics I now insist on

  • 50% deposit before I open an editor, or 40/30/30 across milestones on longer builds. Every client who has pushed back on this so far turned out to be one I was better off without.
  • I charge for discovery. A paid scoping session, $300–600, producing a written technical plan the client owns. If they take it elsewhere, fine, I got paid. It filters tyre-kickers in one email.
  • I never quote on the first call. The first call is questions only. The number arrives in writing within 48 hours, once I've thought about it without a human waiting for me to speak.
  • New clients get the new rate first. Raise on incoming work, then bring existing clients up at a natural boundary with notice. Raising on everyone at once is how you lose the relationships that fed you.
  • Agree the currency and who eats the transfer fees before signing, not after the first wire lands short. Getting paid across borders has more teeth in it than people expect.

The project I underpriced

An AI chatbot build. Quoted at $4,000, sold as "about three weeks."

It took just over 120 hours. Not because the model work was hard, but because "connect it to our data" meant three sources, one of them a Google Sheet a human edited daily that broke ingestion twice a week. I had scoped the chatbot. I had not scoped the data.

That's about $33/hour against a floor I'd calculated at over $50. The cash loss was maybe $2,000. The real cost was the six calendar weeks it occupied, during which one enquiry went cold and another I never followed up on at all.

Your rate is not the number that matters. What matters is your rate multiplied by the hours you actually get paid for, minus the work you couldn't take because you were still finishing something you priced badly in February. I spent my first months optimising the first term. The second one moves far more money.