Cost & planning
What building an MVP actually costs
A software MVP that real users can sign up for and pay for costs somewhere between $24,000 and $60,000. That is our estimate rather than a survey figure, and our own posted bands sit inside it: $28k to $45k for a SaaS MVP with authentication, billing and a dashboard, $24k to $40k for a mobile app built from scratch. Those posted bands are estimates in US dollars, not quotations; the quote that follows scoping is fixed in writing before kickoff.
The range is the least useful number on this page. If you’re holding two quotes for the same brief that differ by four times, the gap is almost never talent. Four mechanical variables produce it: the hourly rate, how finely the scope was written, who’s carrying requirements risk, and whether QA, project management and infrastructure were billed or quietly absorbed. What follows is how to audit an estimate, not how to compare ranges.
Why every published MVP price range contradicts the next one
Search this and you’ll be told, on one page of results, that an MVP costs $5,000 to $100,000, $15,000 to $250,000, $8,000 to $35,000, and $30,000 to $80,000. All four are defensible. None is useful, because MVP is not a unit of measurement.
The unit that transfers between projects is hours per surface, meaning one screen, or one endpoint group, that a user or an integration touches. A signup flow with email verification and password reset is 24 to 40 hours regardless of what your product does afterwards. A Stripe subscription flow with a webhook handler, a portal link and correct handling of failed payments is 30 to 50 hours whether you sell yoga classes or freight logistics. Most MVPs are 12 to 25 surfaces.
Count your surfaces. Multiply by a rate. Add the four costs that sit outside the build. That number is auditable. A range is not.
What a real MVP quote contains, line by line
Six line items. If your quote arrived as one number with a timeline attached, send it back and ask for these. They get collapsed because itemising them invites you to challenge each one, and a vendor who can’t defend a 40-hour QA line would rather you never saw it.
Where the hours actually go
| Line item | Share of total | Typical hours |
|---|---|---|
| Discovery | 5–8% | 20–40 |
| Design | 10–15% | 40–90 |
| Build | 55–65% | varies |
| Integrations | 10–15% | 30–90 |
| QA | 8–12% | 15–20% of build |
| Deploy and handover | 3–5% | 16–30 |
Three of those get argued away. Designhere isn’t brand identity. It’s wireframes for every surface plus the empty, loading, error and permission-denied states, which is where design gets underquoted by half, because nobody puts those states in the mock they showed you. QA is a device matrix and a written test pass against the scope document. Deploy and handover is the production environment, monitoring, backups with a tested restore, and the repository transfer. Handover is work. It gets billed or it gets skipped.
What eight weeks actually contains
Week one is discovery: scope closed, cut list ranked, risks named. Weeks two and three run design, the data model and environment setup in parallel, with a first deploy to staging in week two, before any feature is finished, because deploying late is the most reliable way to lose a launch date. Weeks four to six are the build. Week seven hardens integrations and spends the QA pass. Week eight is production and handover.
No week in that plan covers the thing you forgot. Weeks four to six are where forgetting surfaces, and absorbing it is what the contingency inside a fixed price is for. If a timeline has no slack in it, the slack is coming out of QA.
The four costs that quietly fall outside the quote
None of these is fraud. They sit outside the build, which is why they sit outside most build quotes, and why founders meet them one at a time after signing.
Third-party running costs
These aren’t build cost. They’re monthly cost, from day one, forever. A conventional stack runs managed auth (free to roughly 10,000 monthly active users, then a couple of cents each), Stripe at 2.9% plus 30 cents a transaction, transactional email at $15 to $50, error monitoring from about $26, and hosting with a managed Postgres at $20 to $200. Pre-launch that’s $80 to $400 a month. If the product calls a language model, budget tokens per user action rather than per month. One retrieval-augmented answer costs fractions of a cent; a nightly job that re-processes every record doesn’t.
Environment setup
Staging and production, CI, secrets management, database migrations, seed data, preview deployments. Twenty to forty hours of real engineering that appears in no design mock and gets absorbed into the build line until the week it cannot be. If you’re told it is included, ask which number it is included inside.
App Store and compliance overhead
Apple Developer is $99 a year and Google Play is $25 once. Those are the trivial part. The real cost is privacy nutrition labels, the Play data safety form, screenshots at every required size, review notes, and the first rejection. Budget two calendar weeks between the app being finished and the app being downloadable, and treat it as latency rather than work, because you cannot staff your way out of it.
And if you sell digital goods in the app, Apple takes 15 to 30 percent of every transaction, permanently. That has ended more mobile business cases than any development quote, which is why we raise it in the first conversation about building a React Native app.
Maintenance after launch
Budget 15 to 20 percent of build cost per year, starting the month after launch. Dependencies ship breaking major versions, iOS and Android drop support for what you shipped on, store policies change, and security patches are not optional. Our posted retainer is a floor rather than a percentage, from $2,500 a month, whether it’s continued Next.js development after launch, a mobile app, or an automation pipeline. On a small build the floor is more than the percentage suggests, because keeping someone available costs what it costs. A quote that never mentions month thirteen is a quote that ends at month twelve.
Why the same brief gets quotes four times apart
Four variables produce almost the entire spread. Rate is only one, and rarely the largest.
Rate: offshore versus US MVP development
| Region | Agency rate per hour |
|---|---|
| United States, Western Europe | $120–$250 |
| Eastern Europe, Latin America | $50–$90 |
| South and Southeast Asia | $25–$60 |
Those bands are what we see quoted, not a published survey. We’re in Lahore and quote inside the third one. That’s a genuine cost difference and we will not pretend otherwise. On its own it doesn’t explain a four-times gap: rate gaps compress once you account for hours booked, and reverse entirely if the cheaper engagement needs a rewrite. What decides whether the discount survives is handover discipline and code review, the subject of our piece on running an offshore development engagement.
Scope granularity
One vendor read “user login” as a single line. The other read it as eleven: email and password, OAuth, verification mail, password reset, session handling, rate limiting, account lockout, an audit trail, admin impersonation, deletion, and the tests. Identical words in your brief, double the hours. The second reading is not padding. It’s what login is, and you pay for it either in the quote or in month four.
Who carries requirements risk
A fixed price moves risk to the vendor. One who accepts it without a paid discovery has either priced it as contingency, typically 25 to 40 percent, or hasn’t priced it and intends to recover it through change orders. Time and materials moves the risk back to you and looks cheaper on the page, precisely because your contingency is the one nobody wrote down.
What got absorbed
A quote with no project management line is either a solo developer or is hiding 10 to 15 percent. Same for QA, same for infrastructure. Absorbed cost is still cost; it relocates to whichever line has room to hide it, which is almost always the build line, the one you were least equipped to check.
A fixed-price quote issued without a discovery phase is either padded or about to become a change-order fight. There’s no third option.
Nobody prices 400 hours of work off a two-page brief and a 45-minute call. A firm number on that basis means they’ve either loaded enough contingency that you’re overpaying by a third, or loaded none and plan to recover it later as scope changes. The alternative is a paid discovery that produces the estimate, quoted separately, which you’re free to take elsewhere. That last clause is the test.
Six questions that audit any quote in twenty minutes
Send these to every vendor in the same email, and compare the replies rather than the numbers.
- What blended hourly rate and how many hours does this imply? Expect a number back. A bad reply is that they price on value rather than hours, which is legitimate for an outcome engagement and a deflection for a fixed deliverable.
- Which of the six line items are in here, and which are not? Anything missing should be missing on purpose, with a stated reason.
- What triggers a change order, and at what rate? There should be a written definition and a figure. “We’re flexible” means you find out in week six.
- What will this cost to run per month at a thousand users? A vendor who has never considered your payment fees or your token spend has considered only the part of your business they get paid to write.
- Who owns the repository, the cloud accounts and the store accounts on day one? You do, from the first commit, rather than on transfer at the end. Ownership held by a vendor is leverage, whether or not anyone intends to use it.
- What does month thirteen look like?If there’s no answer, the estimate ends at launch and so does the relationship.
Two answered well out of six isn’t a disaster. Zero out of six is, and it’s the cheapest signal you’ll ever get.
How to scope an MVP to fit a budget
Cut in this order. Each is a real reduction in hours rather than a corner cut, and each is reversible later at roughly the price you avoided today.
- The admin panel. Sixty to a hundred hours of CRUD screens that three people will use. Run Retool or supervised database access for six months instead.
- Custom authentication. Clerk, Auth0 or Supabase Auth. Thirty to sixty hours saved, and better security than a first-pass implementation.
- The native app.If you don’t need push notifications, the camera, offline data or Bluetooth, ship a responsive web app first. Our Next.js web development work and our mobile work start from that question, and the answer is web more often than founders expect.
- A bespoke design system. A token file and an off-the-shelf component library produce a coherent product. Bespoke components are sixty-plus hours spent before a single user has seen anything.
- More than two roles. Ship user and admin. Every extra role multiplies the permission tests, and permissions are where a missed test is a breach rather than a bug.
- Real-time anything.Poll every ten seconds. Nobody will notice, and websockets bring reconnection logic, state reconciliation and a scaling problem you haven’t earned.
What not to cut at any budget: authentication correctness, payment correctness, the data model, error monitoring, and backups with a restore you’ve actually run. The first three are brutally expensive to change later. The last two are how you learn something is broken before your users tell you.
When you should not hire us, or anyone
If your MVP is a form, a table and an email notification, don’t commission a build. Airtable with Softr on top, or Glide, will do it for $50 to $150 a month and be live this weekend. A $25,000 build for that shape of product isn’t a rip-off; it’s a bad trade.
If you haven’t spoken to ten potential users, a build buys you nothing that a landing page and ten phone calls doesn’t buy faster and for free. The most expensive MVP is the one built correctly and wanted by nobody.
If you’re building a marketplace and have neither side of it, build the supply side by hand, with spreadsheets and WhatsApp and manual matching, until it genuinely hurts. Software automates a process that already works badly. It cannot invent one.
If you need it in three weeks and it’s nine weeks of work, do not compress. Cut instead. Compression doesn’t remove hours; it relocates them into the bug budget at a worse exchange rate. And if the real question is whether to use a studio at all rather than a contractor or a first engineering hire, that’s a different decision, worked through in the in-house, agency and freelancer comparison.
The limitation of how we work, since this section is meant to cost us something: on anything with real unknowns in it we scope first, through the $3,500 scoping sprint on our rate card, so our first deliverable is a document rather than code. The fee comes back to you in full against a build that starts within 30 days, but it is still a week before anyone writes code. A studio willing to start on Monday will feel faster for about three weeks. If you already have a validated spec we will shorten it or quote straight from your spec. If a week of scoping is a dealbreaker on work nobody has scoped, we’re the wrong studio.
The shape of estimate we issue
Discovery runs one week. It produces a surface inventory with hours attached to each surface, a data model sketch, an integration list with the monthly running cost of every service on it, a ranked cut list, and a risk register. It is quoted separately from the build and it is yours. Take it to three other vendors and get like-for-like bids. That’s what it’s for.
After that: fixed scope, fixed price, 50 percent on contract and 50 percent on delivery, split into milestones on builds above $30,000. Change orders are written, priced and declinable. You own the repository and the cloud accounts from the first commit.
One thing we will not do is claim this is distilled from a dataset of fifty past projects. We have five published case studies, every one of them real, and we’re not going to invent the rest of a portfolio to sell an article. The credibility of everything above is method rather than sample size. It’s how estimates get constructed, and you can check it against any honest vendor’s process, including one that is not ours.