DEV Community

Cover image for How to Fix the 'You're Charging Too Much' Problem Before It Starts
Alan West
Alan West

Posted on

How to Fix the 'You're Charging Too Much' Problem Before It Starts

Every freelance developer has been there. You send a quote, feel pretty good about it, and then get the reply that makes your stomach drop: "This seems really expensive for what we need."

I've been freelancing on and off for about six years now, and I used to dread this conversation. But here's the thing — the pricing objection is almost never actually about the price. It's a scoping problem, a communication problem, or a trust problem. And like any bug, once you find the root cause, the fix is straightforward.

Why This Keeps Happening

The core issue is an information asymmetry. Your client sees a login page. You see OAuth integration, session management, input validation, password reset flows, rate limiting, responsive design, accessibility compliance, and deployment configuration.

When a client says "it's just a simple website," they're not being dishonest. They genuinely don't know what goes into it. And if your quote is just a single number on a PDF, you're basically asking them to trust a black box.

That's where things break down.

Step 1: Break Down the Estimate Into Visible Line Items

Stop sending single-number quotes. Seriously. The single biggest change I made to my freelance process was switching to itemized estimates. Here's a rough structure I use:

## Project Estimate: Client Portal Redesign

| Phase                        | Hours | Rate    | Subtotal |
|------------------------------|-------|---------|----------|
| Discovery & requirements     | 6     | $120/hr | $720     |
| UI/UX wireframes             | 10    | $120/hr | $1,200   |
| Frontend implementation      | 24    | $120/hr | $2,880   |
| Backend API development      | 20    | $120/hr | $2,400   |
| Authentication & security    | 8     | $120/hr | $960     |
| Testing & QA                 | 10    | $120/hr | $1,200   |
| Deployment & documentation   | 6     | $120/hr | $720     |
| **Total**                    | **84**|         | **$10,080** |
Enter fullscreen mode Exit fullscreen mode

Now instead of arguing about whether $10K is "too much," the conversation shifts to scope. The client might say, "Do we really need 10 hours for wireframes?" That's a productive conversation. You can negotiate scope instead of just slashing your rate.

Step 2: Document Your Assumptions

This one has saved me more times than I can count. Every estimate I send includes a section called "Assumptions & Exclusions." It looks something like this:

## Assumptions
- Client will provide all copy/content within 5 business days of request
- Design based on a single round of revisions; additional rounds billed hourly
- Hosting and domain registration are the client's responsibility
- Third-party API integrations limited to those specified in scope
- Browser support: last 2 versions of Chrome, Firefox, Safari, Edge

## Exclusions
- Ongoing maintenance or support (available as separate retainer)
- SEO optimization beyond basic meta tags
- Email marketing integration
- Native mobile application
Enter fullscreen mode Exit fullscreen mode

This does two things. First, it protects you from scope creep. Second, it shows the client you've actually thought through the project. Professionalism builds trust, and trust makes pricing conversations easier.

Step 3: Offer Tiered Options

This is a trick I picked up after losing a couple of projects to sticker shock. Instead of one quote, give three:

  • Essential — The minimum viable version that solves their core problem
  • Standard — What you'd recommend for a solid, production-ready solution
  • Premium — The full package with nice-to-haves included

Psychologically, this reframes the conversation from "yes or no" to "which one." Most clients pick the middle option. The ones on a tight budget go Essential and feel good about it because they chose it, rather than feeling like they beat you down on price.

## Option A: Essential — $5,400
- Core pages (Home, About, Contact, Services)
- Mobile-responsive design
- Basic contact form
- Standard deployment

## Option B: Standard — $10,080 (Recommended)
- Everything in Essential
- Client portal with authentication
- CMS integration for self-managed content
- Performance optimization
- 30-day post-launch support

## Option C: Premium — $15,200
- Everything in Standard
- Custom analytics dashboard
- Automated email notifications
- API integration with existing CRM
- 90-day post-launch support
Enter fullscreen mode Exit fullscreen mode

Step 4: Know Your Walk-Away Number

Here's the uncomfortable truth — some clients genuinely can't afford professional development work, and that's okay. But you need to know your floor before you start negotiating.

Calculate your minimum viable rate. Factor in taxes, healthcare (if you're in the US, you know the pain), software subscriptions, hardware depreciation, and the unbillable hours you spend on admin, marketing, and learning. Most freelancers undercharge because they compare their hourly rate to a salaried position without accounting for the overhead of self-employment.

A rough formula:

Target annual income: $100,000
Self-employment tax + benefits overhead: ~30%
Actual needed gross: $130,000
Realistic billable hours/year: ~1,200 (not 2,080)
Minimum hourly rate: $130,000 / 1,200 = ~$108/hr
Enter fullscreen mode Exit fullscreen mode

That's your floor. Below that, you're literally paying to work.

Step 5: Reframe Value, Not Cost

When a client pushes back, don't defend the price. Reframe around value. "This portal will replace the three-person team currently handling these requests manually" hits different than "well, backend development is complex."

Ask the client questions like:

  • What's this problem costing you right now, in hours or dollars?
  • How many customers are you losing because this process is manual?
  • What happens if we don't build this — what does six months from now look like?

You're not being manipulative. You're helping them see the ROI, which is probably why they came to you in the first place.

Prevention: Qualify Before You Quote

The best way to avoid the "too expensive" conversation is to never get there with the wrong clients. Before I write any estimate, I have a 30-minute discovery call where I casually ask:

  • "Do you have a budget range in mind for this project?"
  • "Have you worked with developers before? What did that look like?"
  • "What's driving the timeline on this?"

If someone tells me their budget is $500 for a full-stack web app with authentication and payments, I know we're not a fit. And that's fine. I'll point them toward no-code tools or suggest they look for someone earlier in their career who's building a portfolio.

No hard feelings. No wasted time on either side.

The Bigger Picture

Pricing problems are really communication problems in disguise. The developer who can clearly articulate what they're building, why each piece matters, and what the client gets for their money will almost always close more projects at better rates than the developer who just writes better code.

I know that feels backwards. But the best code in the world doesn't matter if you can't get the project signed.

Invest time in your proposals. Write clear scopes. Offer options. Know your numbers. The pricing objections won't disappear entirely, but they'll turn from deal-breakers into productive conversations. And honestly, the clients who respect a well-documented estimate are the same clients who respect your time during the project.

Funny how that works.

Top comments (0)