What to actually scope in an MVP development service contract: a buyer's checklist
Most MVP contracts are vague where they should be sharp. Here's the checklist I use when reviewing one, with the clauses that decide whether you ship in 8 weeks or sue in 8 months.
- ↳Scope the deliverable as user-facing flows, not feature lists or hours.
- ↳Lock down IP transfer on payment, not on project completion, or you can be held hostage.
- ↳Get the source repo, deploy credentials, and third-party accounts in your name from day one.
- ↳Define what 'done' looks like with acceptance tests, not vibes.
- ↳Cap change orders with a written process, otherwise scope creep eats your runway.
I’ve been on both sides of this. I’ve signed contracts as a founder buying an MVP, and I’ve written them as the studio shipping one. The bad ones look the same: a list of features, a fixed price, a vague timeline, and a one-line IP clause that says “all work product transfers on final payment.” Then something goes sideways around week 5 and the founder discovers they don’t own the GitHub repo, the Stripe account is in the contractor’s name, and “final payment” is a moving target.
This is the checklist I wish more buyers used before signing an mvp development service contract. It’s not legal advice. It’s the operator’s version, written from shipping real products like Photo AI Studio and Interior AI Designs and watching enough deals go bad to know where the landmines sit.
Scope the user flows, not the feature list
A feature list is a trap. “User authentication, dashboard, billing, admin panel” can mean six weeks or six months depending on who’s reading it. Instead, write the contract around user flows with acceptance criteria.
Bad:
Deliverables include user authentication and a billing system.
Better:
Flow A (Signup): A new user can sign up with email and password, receive a verification email via Resend within 30 seconds, and land on an onboarding screen. Flow B (Subscribe): An authenticated user can pick one of two Stripe plans, complete checkout, and see their plan reflected in the dashboard within 5 seconds of webhook delivery.
That’s testable. You can sit down at the end of the sprint and click through it. If it doesn’t work, it’s not done. If it does, it is. No arguing about whether the “billing system” was supposed to include proration.
For custom mvp development, I usually push for 5 to 12 flows total in a first contract. More than that and you’re not building an MVP, you’re building a product.
Pin the stack in writing
The stack decides who can maintain this thing after you part ways. If the studio writes it in some bespoke framework they like, you’re locked in. Get the stack named in the contract:
- Frontend: Next.js 15 (App Router) or Astro, your call.
- Backend: Node on Cloudflare Workers, or a small Express service on Hetzner.
- DB: Postgres (Neon or Supabase), with migrations checked into the repo.
- Auth: Clerk or Supabase Auth, not a hand-rolled thing.
- Payments: Stripe for web, RevenueCat for mobile.
If the studio pushes back on naming the stack, that’s a signal. Ask why. There are sometimes good reasons (“we ship faster in X”) but you should hear them.
IP transfers on payment of that milestone, not on final payment
This is the single most important clause for buyers. The default boilerplate from most agencies says IP transfers “upon receipt of final payment.” That gives them leverage over you for the entire engagement. If you dispute milestone 4 of 5, they can technically claim they still own everything you’ve paid for so far.
What you want:
All deliverables for a given milestone, including source code, design files, and documentation, become the exclusive property of Client upon payment of that milestone’s invoice. Contractor retains no license, ongoing rights, or claim to the delivered work.
Also: get a clause that pre-existing libraries the contractor brings in are licensed to you perpetually and royalty-free. You don’t want to discover six months later that the “internal framework” they used is something they’ll license to you for $2,000 a month.
Accounts and credentials in your name from day one
The GitHub org, the Vercel or Cloudflare account, the Stripe account, the domain registrar, the Resend account, the Anthropic and FAL API keys, the App Store and Play Store developer accounts. All of it. In your name, on your billing, from week one.
The contractor gets invited as a collaborator. Not the other way around.
I’ve seen founders pay $40k for an MVP and then have to pay another $5k to “migrate” the Stripe account, because the contractor set it up under their own LLC “for convenience.” Don’t.
Define done with acceptance tests
Every milestone needs a written acceptance test. Not “client approval” because that’s subjective and turns into a fight. Something like:
Milestone 3 acceptance:
1. A new user signs up at /signup and receives a verification email within 60 seconds.
2. After verifying, the user is redirected to /onboarding.
3. The user can complete onboarding in under 90 seconds on a Pixel 7 over a throttled 4G connection.
4. Lighthouse performance score on /onboarding is >= 85 on mobile.
5. All flows pass on Chrome, Safari, and Firefox latest.
If those pass, the milestone is done and the invoice is due. If they don’t, the contractor fixes them before invoicing. Boring, specific, fair to both sides.
Change order process
Scope will change. Pretending it won’t is how minimum viable product development services contracts blow up. What you want is a written process:
- Any change to scope is documented in a Change Order with: description, impact on timeline, impact on price.
- Both parties sign before work begins.
- Changes under a threshold (say $500 or 4 hours) can be approved over email and batched monthly.
This protects you from a contractor who quietly adds work and then bills you, and it protects them from a founder who keeps saying “oh, one more small thing.”
Maintenance, handoff, and the exit clause
What happens on day 1 after launch? Most contracts go silent here. Spell it out:
- 30 days of bug fixes included post-launch, defined as defects in the agreed acceptance criteria (not new features).
- A handoff document covering deploy process, env vars, third-party services, and known issues.
- A 60-minute handoff call, recorded.
- An optional monthly retainer for ongoing work at a stated rate, cancellable with 30 days notice.
And a kill switch: either party can terminate with 14 days notice, and on termination, all code and assets paid for to date transfer immediately, no holdback.
Where the offshore question actually matters
Folks ask me about mvp development services for startups india versus a US or Canadian studio. The honest answer: the geography matters less than the contract. A well-scoped contract with a good team in Bangalore will ship a better MVP than a vague contract with a fancy agency in San Francisco. What changes with distance is communication overhead and timezone, which you handle with async standups and a shared Linear board. What doesn’t change is the checklist above. Same IP clauses, same acceptance tests, same account ownership.
If you want a second set of eyes on a contract before you sign, or you’re trying to decide if the scope is realistic for the price, send it over. I’ll tell you what I’d cut.
Common questions
▸How much should an MVP development service actually cost?
For a focused web MVP with 5 to 12 user flows, auth, payments, and a small admin, I usually see $20k to $60k USD from a competent studio, delivered in 6 to 12 weeks. Mobile pushes it higher because of the App Store and Play Store overhead, plus RevenueCat integration. Anything under $10k is either a template job or someone underbidding to win the deal and they'll either disappear or pile on change orders. Anything over $100k for a true MVP usually means you're scoping a v1, not a viable test.
▸Fixed price or time and materials for an MVP?
Fixed price per milestone with written acceptance tests. Pure time and materials puts all the risk on you and gives the contractor no reason to be efficient. Pure fixed price for the whole project puts all the risk on them and they price in a fat buffer. Milestone-based fixed price with a documented change order process splits the risk fairly and keeps both sides honest. Each milestone is 2 to 3 weeks of work with a clear deliverable you can test.
▸Should I hire a studio or a freelancer for my MVP?
A solo senior freelancer is often faster and cheaper if you can find a good one and you don't need design, mobile, and backend all at once. A small studio is better when you need multiple disciplines, want continuity if one person gets sick, or you're not technical enough to manage the work yourself. The risk with freelancers is the bus factor. The risk with studios is paying for layers of project management you don't need.
▸What's the difference between an MVP and a prototype in a contract?
A prototype is something you show, an MVP is something real users use. In contract terms, a prototype usually has no auth, no payments, fake data, and no production deploy. An MVP has real auth, real payments through Stripe or RevenueCat, a real database, and runs on a real domain with monitoring. If a contract is priced like a prototype but called an MVP, read the acceptance criteria. The word in the title doesn't matter, the deliverables do.
▸What's the single clause buyers forget most often?
Account ownership. People focus on IP transfer of the code and forget that the Stripe account, the App Store developer account, the domain, and the API keys for services like Anthropic and FAL are all separate. If those are in the contractor's name, you don't really own your product, you're renting it. Write into the contract that all third-party accounts are created in the client's name from day one, with the contractor added as a collaborator.
Related posts
What to actually scope in an MVP development service contract: a buyer's checklist
Most MVP contracts hide the parts that matter. Here is what to demand in writing before you sign with any MVP development service, with the line items I have watched startups get burned on.
How to vet MVP development companies without getting burned: 12 questions that filter the field
Twelve questions I ask before I let anyone touch my MVP. Skip these and you'll pay $80k for a demo that dies the week after launch.
How to vet MVP development companies without getting burned: 12 questions
Twelve questions I use to separate real MVP development companies from agencies that will burn six months of runway and ship a demo. Here's what to ask.