Fixed-Price vs Hourly: Why Outcome-Based Pricing Works
"How much will this cost?"
The most important question in software development. And the one with the worst answers.
Both pricing models fail because they optimize for the wrong thing. Outcome-based pricing fixes this.
The Three Pricing Models
1. Hourly Billing
❌ Misaligned- Developer charges by the hour
- You pay $100-$250/hour
- Final cost = hours worked × rate
Problem 1: Slower Work = More Money
Answer: You don't.
Problem 2: Unpredictable Total Cost
Your budget: $9,000
Your trust: Destroyed
Problem 3: No Incentive to Ship Fast
Hourly billing rewards time spent, not results delivered.
2. Fixed-Bid Pricing
⚠️ Padded- Developer quotes a total price upfront
- You pay the full amount (often split into milestones)
- Developer assumes all risk
Problem 1: Heavy Padding
Problem 2: Corners Get Cut
Developer underestimates. Realizes mid-project they'll lose money.
Problem 3: Scope Disputes
Without clear acceptance criteria, every request becomes a negotiation.
3. Outcome-Based Pricing
✅ Aligned- We co-write AC.md (acceptance criteria) before starting
- We agree on a fixed price
- You pay when tests pass (AC green)
1. We Define "Done" Before Pricing
Before quoting a price, we write AC.md together:
# AC.md: OTP Signup ## Functional Criteria 1. User enters email, receives OTP 2. User submits OTP, authenticates 3. Session persists 30 days ## Non-Functional Criteria - p95 latency: < 300ms - Error rate: < 0.1% - Mobile responsive ## Verification npm run acceptance:signup
- Exactly what will be built
- How it will be tested
- What "done" looks like
No ambiguity. No scope disputes. Just clear criteria and a fixed price.
2. Payment at AC Green (Tests Passing)
We don't get paid for "almost done" or "90% complete."
npm run acceptance # All tests: ✅ PASS
- All functional criteria satisfied
- All performance thresholds met
- All tests green
- Time spent debugging
- Code that doesn't work
- "In progress" work
- Meetings or coordination
3. We Assume the Risk
- We write detailed AC.md (no ambiguity)
- We baseline the scope (no scope creep)
- We track changes via CHG-130 (Swap or Add)
- We ship Evidence Sprints first (validate early)
Real Example: OTP Signup Project
Let's price the same feature three ways.
Hourly Approach
- Will it be 40 or 80 hours?
- How do I know if 80 hours was necessary?
- What if it takes 120 hours?
Fixed-Bid Approach
- Developer estimates 60 hours
- Pads 40% for risk = 84 hours
- 84 hours × $150 = $12,600
- Rounds to $15,000
Outcome-Based Approach (ScopeLock)
## Functional Criteria 1. User enters email, receives OTP 2. User submits OTP, authenticates 3. Session persists 30 days
- We estimate: 40 hours to AC green
- Our rate: $175/hour effective
- Quote: $8,000 flat
git tag ac-baseline_otp-signup_2025-11-02
- Build to AC green
- All tests passing
- Invoice issued: $8,000 (exactly)
- Total cost: $8,000 (known upfront)
- When you pay: When tests pass
- What you get: Working code, verified by tests
- Risk: Ours (if tests fail, we keep working until they pass)
Interactive Cost Calculator
Adjust the sliders to see how different pricing models compare for your project.
Hourly Billing
Fixed-Bid
Outcome-Based (ScopeLock)
The Three-Question Test
When evaluating pricing models, ask:
Question 1: "How much will this cost?"
Question 2: "When do I pay?"
Question 3: "How do I know it's done?"
The Math That Matters
Hourly project
Fixed-bid project
Outcome-based project
What's Next?
At ScopeLock, we only do outcome-based pricing.
- Aligns incentives (we ship faster when we control the timeline)
- Builds trust (you pay for results, not time)
- Eliminates disputes (tests define "done," not opinions)