
Jul 30, 2026
Written by Gregory Shein, CEO & Founder
Upwork Fixed Price vs Hourly: Which Is More Profitable for Agencies?
"Should we bid this fixed or hourly?" is one of the few questions an Upwork agency answers dozens of times a year, with real money on each answer — and most teams answer it by habit rather than math. Hourly feels safe; fixed feels lucrative. Both feelings are half right.
The fee structure is identical either way: Upwork takes a flat 10% of what the client pays. What differs is who carries the estimation risk, how cash moves, and what happens to your margin when reality deviates from the plan — which it always does. This post prices the same project both ways, shows the break-even math, and ends with a decision table you can apply per project.
The structural differences that matter
Hourly contracts. The team tracks time with Upwork's desktop tracker (10-minute segments, Work Diary screenshots). Tracked hours get Hourly Payment Protection; billing runs on a weekly cycle with payment releasing the following Wednesday. Revenue = hours × bill rate × 0.9. The client carries the estimation risk: if the work takes longer, the invoice grows.
Fixed-price contracts. The client funds a milestone into escrow; you deliver; they approve; funds release after a 5-day security period. Upwork requires no time tracking. Revenue = milestone × 0.9, regardless of hours. You carry the estimation risk: every hour beyond the estimate dilutes your effective rate, and approval friction can stretch cash timing.
Two asymmetries follow directly:
- Hourly caps your downside; fixed caps your upside — unless you're efficient. Fixed price is a bet that your actual hours will come in at or under estimate. Agencies with productized, repeatable delivery win that bet routinely; agencies taking novel, vaguely-scoped work lose it routinely.
- Fixed price has no protected floor for sloppy scoping. Hourly protection covers tracked hours. On fixed work, scope disputes end in escrow negotiation — your contract's milestone definitions are the protection.
Worked example: one project, priced both ways
A Shopify migration. The agency estimates 90 hours of work: one mid developer (70 hrs at a $30/hr pay rate) and one senior (20 hrs at $40/hr). Internal cost of delivery: 70×$30 + 20×$40 = $2,900, plus ~$300 of management time. Total cost ≈ $3,200.
Option A — hourly at $55/hr:
Revenue: 90 × $55 = $4,950
Fee: −10% = −$495
Net: $4,455
Cost: −$3,200
Profit: $1,255 (25.4% margin)
Option B — fixed price at $5,800 (agencies typically price fixed 15–25% above the hourly-equivalent, charging for absorbing the risk):
Revenue: $5,800
Fee: −10% = −$580
Net: $5,220
Cost (on estimate): −$3,200
Profit: $2,020 (34.8% margin)
On plan, fixed wins by $765. Now let the estimate slip — the only scenario that matters:
| Actual hours | Hourly profit | Fixed profit (extra hrs at mid rate) | Winner |
|---|---|---|---|
| 90 (on plan) | $1,255 | $2,020 | Fixed +$765 |
| 105 (+17%) | $1,624* | $1,570 | ~Even |
| 120 (+33%) | $1,993* | $1,120 | Hourly +$873 |
| 150 (+67%) | $2,730* | $220 | Hourly +$2,510 |
*Assumes the client accepts the growing hourly invoice — overruns strain relationships even when they pay.
The crossover in this example sits around +15–20% overrun — uncomfortably close to normal estimation error for non-repeatable work. That's the entire decision in one row: fixed price is profitable exactly to the degree that your estimates are reliable. A 20% premium buys roughly 20% of slack; if your historical overrun on similar projects exceeds the premium, fixed price is a machine for converting your optimism into client savings.
Run your own version of this table — estimate, premium, overrun scenarios, fee included — in the fixed-price project calculator, and sanity-check the hourly side with the Upwork fee calculator.
The prerequisite: you must know your actual hours
Here's the trap hiding in fixed-price work: because Upwork doesn't require time tracking on milestones, most agencies don't track — which means they never learn their estimation error, which means they can't price the risk premium, which means every fixed bid is a coin flip with stakes.
The fix is non-negotiable: track time internally on every fixed-price project, then compute the realized hourly rate (net revenue ÷ actual hours) after each one. Three projects in, you have an estimation-error distribution; ten projects in, you can price fixed work with actual confidence. Agencies running the one-timesheet setup — Upwork hourly contracts syncing in automatically, fixed and direct work tracked natively — get this data as a by-product; that architecture is covered in manage Upwork and direct clients in one system, and Corcava's per-contract margin reports (pay rate and bill rate per person, hours attached) turn realized-rate review into a standing report. That per-contract view is central to the Upwork agency management stack. The spread math feeding the cost side of the calculation is in Upwork bill rate vs pay rate.
Decision table: fixed or hourly, per project
| Signal | Bid hourly | Bid fixed |
|---|---|---|
| Scope clarity | Vague, evolving, "we'll know it when we see it" | Written spec, bounded deliverables |
| Similarity to past work | First of its kind for you | You've done this 5+ times |
| Your estimation record | Unknown or >20% average overrun | Tracked, <15% overrun on this project type |
| Client behavior | Responsive, trusts the process | Slow approvals, revision-prone (milestone definitions protect you — but expect escrow friction) |
| Project size | Large, months-long | Small-to-mid, deliverable-shaped |
| Efficiency edge | None — effort ≈ market average | Templates, tooling, or reuse make you faster than the estimate implies |
| Cash preference | Weekly billing cycle fits payroll | Can absorb escrow + 5-day release timing |
Practical hybrids worth using: discovery hourly, build fixed (kills the biggest unknown before you price it); fixed with a change-order rule — any scope addition is a new funded milestone, never absorbed (see change requests and scope creep); and milestone-sliced fixed — smaller escrow chunks approve faster and cap your exposure per slice.
Margin bands to expect
With honest cost accounting (pay rates + management time + the 10% fee):
- Hourly: gross margins cluster at 25–40%. Predictable, capped, scales with utilization.
- Fixed, repeatable work: 35–55% for agencies with genuine delivery efficiency — this is where productized agencies make their money.
- Fixed, novel work: anywhere from 50% to negative. The variance is the finding — if you can't predict the hours, you're not pricing a project, you're writing an option.
For the broader margin system these numbers plug into — utilization, rate setting, pricing models — see the profitable agency guide.
Price your next bid with the math open
- Model the fixed bid — estimate, risk premium, overrun scenarios — in the fixed-price project calculator, and the hourly alternative in the Upwork fee calculator.
- Start a free 14-day Corcava trial — track every project's actual hours against its price, and know your real estimation error by next month. $9/user/month, no credit card required.
- See how pricing, time, and margin reporting connect on the Upwork agency management page.