Skip to main content
All guides/Pricing
Pricing

Hourly vs fixed price: which protects your margin?

Both models can be profitable. The real question isn't “hourly vs fixed” but who carries the cost when the work runs longer than planned — and that single difference decides what happens to your margin.

AltOrbitGuide3 min read

Short answer: both models can be profitable. The real question isn’t “hourly vs fixed” but who carries the cost when the work runs longer than planned. On hourly, the overrun risk sits with the client; on fixed price, with you. So fixed price only protects your margin when you know your hourly cost and track hours as the project runs. Below: a comparison, a worked example and a rule for choosing.

The real question: who carries the overrun risk

Both models can be profitable — and both can sink a project. The difference comes down to one thing: who pays for the hours that go past the plan. On hourly it’s the client; on fixed price it’s the studio. Everything else follows from that.

ModelWho carries overrun riskWhen it fitsWhat happens to margin
HourlyClientScope unclear, R&D, long projectsStable, if the rate is above your hourly cost
Fixed priceStudioScope is clear, buffer built inMargin = price − actuals; overrun hits you
Neither model is “better” on its own — each has its own risk profile. The choice depends on how clearly the scope is defined.

Hourly: the client carries the overrun risk

You bill for the time actually spent, so if a feature takes twice as long, revenue grows with the hours and your margin per hour stays roughly the same. The risk shifts elsewhere: to utilization (are the hours billed at all) and to scope creep. The downside for the client is an unpredictable total, and not every client will accept that.

Hourly wins on transparency: the client sees what they pay for, and you don’t pad the estimate with a “just-in-case” buffer that inflates the price. To ease the fear of an open-ended bill, teams often set a cap — an hour limit beyond which further work is agreed separately.

Fixed price: you carry the risk

Clients love a known number up front. But it’s the price that’s fixed, not the hours: every hour over the estimate comes straight out of your project margin. A project that started at 26% quietly slides to 12%, then to zero — while the invoice never changes. You only find out if you cost the hours spent as the project runs, not after delivery.

Without that tracking, a fixed price is a bet that the team will land within an estimate made at the very start — when you know the least about the project.

Example: how an overrun eats a fixed-price margin

Take a fixed-price project at $20,000. The estimate is 264 hours. At an hourly cost of $56 that builds in a comfortable margin. Now reality: the work took 360 hours.

PlanActual
Price (fixed)$20,000$20,000
Hours264360
Cost (× $56/h)$14,784$20,160
Margin+$5,216 (26%)−$160 (−1%)
96 unplanned hours × $56 = $5,376 — exactly what the overrun cost.

The price stayed at $20,000, so the whole overrun came out of your margin: the project went from +26% into the red. On hourly, those same 96 hours would have been billed — and the margin per hour wouldn’t have suffered. That’s the entire difference between the models, expressed in money.

And it’s not that the price was “too low”: $20,000 gave 26% on an honest estimate. It was the unplanned hours that turned the project into a loss.

Rule of thumb

Which model to take depends not on taste but on how much you control the scope:

  • Clear scope you’ve done before? Fixed price can be very profitable — the estimate is under your control, and the hours you save stay with you.
  • Vague or shifting scope? Go hourly — or fix the price with an explicit change-order clause for any expansion of the work.
  • Big, important project? Break it into fixed phases or set an hour cap — the client keeps predictability and you keep control of the scope.
  • At any rate: you can only price safely once you know your real hourly cost and can see hours accumulate on the project as the work happens. Without those two numbers, any price is a guess.

Where overruns actually come from

Overruns on fixed price rarely come from a lazy team. The causes are usually systemic: the estimate is optimistic and has no buffer; scope quietly grows — “just add one more small thing” repeated ten times; overtime never reaches the estimate because it feels free for salaried staff. On its own each looks minor, but together they turn 264 hours into 360. A fixed price forgives none of them — it simply shifts the bill onto you.

Hybrid: predictability without a blind bet

Between pure hourly and pure fixed there’s a middle ground that often protects margin better than either. Fixed by phase — you fix the price for the next well-understood stage, not the whole project blindly. Hour cap — you work hourly, but with an upper limit that gives the client predictability. Change-order — the contract states up front that any scope expansion revisits price and timeline. All three do the same thing: they give the studio back control of the hours, the loss of which is exactly what makes fixed price unprofitable.

It’s not the model, it’s the hour tracking

Fixed price is riskier not because it’s fixed, but because most studios fix the price and then stop watching the hours. Close that gap and the choice of model stops being a blind bet.

AltOrbit has no separate “fixed-price project type”: fixed price is modelled through rates and a project budget. You set the rates and a cost-based budget, the team logs hours — and you can see the actuals closing in on the margin you built in, and when they’re about to break it, before delivery.

See your margin in real time, whatever the model

Working this out in a spreadsheet after delivery is too late — the money is already gone. AltOrbit recalculates margin in real time as the team logs hours, under any pricing model; how rates and budgets work is in features.

The product is in early access — join the early access below.

See your real margin in real time

AltOrbit calculates it for you as the team logs time. In development — join early access.

Open early access