Fixed price vs hourly software development
Fixed price or time and materials for software projects? How each model shifts risk, when each makes sense, and the contract terms that protect you.
By the v1build engineering team · Published · 5 min read
Short answer: fixed price is better when the scope can be written on one page, such as an MVP or a well-defined feature. Hourly (time and materials) suits open-ended work where requirements change weekly. A monthly retainer sits in between for ongoing development.
| Fixed price | Hourly (time and materials) | Monthly retainer | |
|---|---|---|---|
| Who carries the risk of delays | The builder | You | Shared |
| Budget certainty | High | Low unless capped | High per month |
| Flexibility mid-project | Changes are priced separately | Change anything, any time | Re-prioritise each month |
| Best for | MVPs, defined features, audits | Research, unclear requirements | Live products, ongoing roadmap |
| Main risk | A vague scope causing disputes | Bills that keep growing | Paying for idle capacity |
Why we price fixed
Founders tell us the same thing: they can live with a higher number, but not with a number that keeps moving. A fixed price forces both sides to agree what “done” means before work starts, which is where most projects actually fail.
Contract terms that protect you either way
- A written out-of-scope list. It matters as much as the feature list.
- Change requests priced before they start. Never “we’ll sort it out later”.
- Milestone payments tied to something you can use. For example 50% to start, 40% at a working staging link, 10% at launch.
- Code in your accounts from day one. Not handed over at the end.
- A short warranty. Fixes for defects in agreed scope for a period after launch; ours is two weeks.
- A clean exit. Either side can stop with notice and finished work is paid for.
If you go hourly
Ask for a weekly cap, a weekly written update with hours by task, and the right to pause. Without a cap, hourly billing has no natural end.
See how this works in practice on our pricing page.