An app development contract is rarely read closely until something goes wrong, and by then the wording is fixed. Most disputes between app clients and vendors are not about fraud. They are about ordinary questions the contract never answered: was this feature in scope, is this a bug or a change, who pays to fix a crash found after launch, and what happens to the code if you leave halfway.
This checklist goes clause by clause through what a good app development contract should say, with the weak wording to watch for. Confidentiality and ownership basics are covered on our app development NDA and IP protection page, so here the focus is on delivery, money and exit. It is written from a delivery lead’s point of view, not a lawyer’s.
This article is general information to help you prepare questions. It is not legal or tax advice, and contract law differs by country. Have a lawyer qualified in your governing law review any contract before you sign it, especially the IP, liability and termination clauses.
How an app development contract is usually structured
Cross-border app work usually sits in a small set of documents rather than one long agreement. Knowing which clause belongs where makes review faster.
- NDA. Signed before discovery, so you can share your idea, data model and plans safely. We sign the NDA before discovery as standard.
- Master services agreement (MSA). The legal terms that apply to all work: IP, confidentiality, liability, payment mechanics, termination, governing law.
- Statement of work (SOW). One per phase: scope, deliverables, milestones, team, price or rate, acceptance criteria. Discovery and build are often separate SOWs.
- Change orders. Signed amendments to an SOW when scope, time or price changes.
- Data processing agreement (DPA). GDPR Article 28 requires a binding contract when a processor handles personal data on your behalf, so you need one if GDPR or UK GDPR applies to your users. It is good practice elsewhere.
The advantage of this structure is that the MSA is negotiated once and each new phase only needs a short SOW. If a vendor offers one document covering everything, check that scope changes do not require renegotiating the legal terms.
App development contract checklist: the clauses at a glance
Use this table as a first pass on any draft, including ours. The sections below explain the clauses that cause the most disputes.
| Clause | What good looks like | Weak wording to push back on |
|---|---|---|
| Scope | SOW references a backlog, designs or requirements document with acceptance criteria | A bullet list of features such as “user login” and “chat” |
| IP assignment | All deliverables assigned to you on creation or per paid milestone | A licence to use, or ownership only after the final invoice |
| Pre-existing vendor code | Listed, with a perpetual, royalty-free licence to you | Undefined “vendor tools” that could cover anything |
| Acceptance | Written criteria, a fixed review window, defects classified by severity | Acceptance at the vendor’s discretion, or no process at all |
| Change requests | Written impact note (time, cost, risk) approved before work starts | Changes billed after the fact |
| Warranty | A defined period after each release to fix defects against acceptance criteria at no charge | “As is”, or warranty with no defined scope |
| Payment | Tied to the engagement model and to builds you can install | Large upfront payment with milestones by calendar date |
| Key personnel | Named lead roles, notice before changes, replacement process | No commitment on who works on the project |
| Subcontracting | Only with your written approval; same terms flow down | Silent |
| Accounts and access | Code in your repository, apps in your store accounts, cloud on your billing | Vendor hosts everything until handover |
| Liability | A mutual cap, with carve-outs for confidentiality and IP breaches | A cap so low it is meaningless, or one-sided |
| Termination | For convenience with notice, for cause with a cure period, payment for accepted work | No exit except breach |
| Handover | Code, docs, credentials register, access revocation, defined transition support | Handover “on full settlement of all invoices” |
| Governing law and disputes | A jurisdiction both sides can work with; arbitration considered | Only the vendor’s local courts, chosen without discussion |
General guidance, not legal advice.
IP assignment: timing matters as much as wording
The contract should assign all intellectual property created for your project to you: source code, designs, documentation, test scripts and build configuration. Any serious vendor should agree to that. The detail that changes outcomes is when assignment happens.
Assignment on creation, or on payment for each milestone, means you own what you have paid for at every point. Assignment “on completion” or “on final payment” means that if the project ends early, the code you funded may still belong to the vendor. Ask for the first. The guide to protecting your app idea and IP when outsourcing covers open-source licences and pre-existing vendor code in more depth.
Acceptance criteria and the acceptance process
Acceptance is where scope disputes become payment disputes. A useful clause has four parts.
- Criteria. Each feature has testable acceptance criteria in the backlog or requirements document that the SOW references. Our app requirements document template shows the format.
- Review window. You get a fixed number of business days to test each milestone build and accept it or report defects in writing. The number is agreed in the contract.
- Severity levels. Defects are classified, for example as blocking, major and minor. Blocking defects stop acceptance; minor ones go on a fix list and do not hold up payment.
- Deemed acceptance. If you neither accept nor report defects within the window, the milestone counts as accepted. Vendors need this to avoid indefinite delay; you need the window to be long enough to test properly.
Also state what acceptance is tested on: the agreed device and OS list, and a build installed from TestFlight or Play internal testing, not a demo on the developer’s machine.
Change requests: how scope moves without a fight
Scope will change. A contract that pretends otherwise just moves the argument to the invoice. The clause should say that any change to agreed scope goes through a written change request with an impact note on effort, cost, timeline and risk, and that no work starts until you approve it.
Under fixed price, this is the main control on your budget. Under a dedicated team or time and material, the commercial impact is different, because you are buying capacity, but you still want changes to be visible and prioritised against the backlog. Our comparison of dedicated team vs fixed price explains how each model handles change.
One more line worth adding: who decides whether something is a defect or a change. The fair test is the written acceptance criteria. If the build does not meet them, it is a defect. If you want something the criteria never described, it is a change.
Warranty: what is covered after release
A warranty clause gives you a defined period after each release in which the vendor fixes defects against the acceptance criteria at no extra charge. The length is agreed in the contract. What matters more is the scope, so check that the clause says what is excluded:
- New OS versions and new store requirements released after acceptance
- Changes in third-party APIs and SDKs outside the vendor’s control
- Defects caused by changes made by you or another vendor
- Hosting outages on infrastructure the vendor does not manage
Those exclusions are reasonable, but they mean you need a plan for the work they leave out. Store rules change every year: Google Play, for example, requires new apps and updates to target Android 16 (API level 36) from 31 August 2026. That kind of work belongs in a maintenance or support agreement, not a warranty. Our app maintenance and support page covers what such an agreement includes.
Also decide who is responsible for store compliance in the build itself. Apple, for instance, has required since 30 June 2022 that apps which let users create an account also let them delete it from within the app. Make meeting current store guidelines at submission part of the vendor’s acceptance criteria.
Want to see our contract terms before you commit?
Send us your draft or ask for ours. We walk through IP, acceptance, change requests and exit on a short call, and we reply within one business day.
Payment terms by engagement model
Payment terms should follow the engagement model, not a generic template. In short: fixed price is paid by milestone after a one-to-two-week discovery, a dedicated team is billed monthly in advance, and time and material is billed monthly in arrears against a budget cap. The amounts and schedules are agreed in each contract. Our guide on how to pay software developers in Pakistan sets out each billing schedule and what you should hold before every payment, so this section covers only the contract wording.
- Invoice currency and route. Name both. If your vendor is in Pakistan, PayPal does not currently serve Pakistani businesses for receiving payments, so use bank wire or Payoneer.
- Payment window. A fixed number of days from a valid invoice, and what makes an invoice valid (milestone accepted, hours report attached).
- Transfer fees. Who pays sending and intermediary bank charges, so short payments do not become a monthly argument.
- Disputed invoices. You pay the undisputed part on time and raise the rest in writing with evidence. This keeps work moving while the disagreement is settled.
- Late payment. What the vendor may do, and after how much notice. Pausing work is a fair remedy; withholding your code or accounts is not.
Tax treatment of payments to a foreign supplier depends on your country, so ask your accountant before the first invoice.
Termination and handover: write the exit at the start
You should be able to leave a vendor without losing your app. Three clauses make that possible.
Termination for convenience. Either side can end the contract with written notice, without proving fault. The notice period is agreed in the contract; a longer one usually makes sense for a larger team.
Termination for cause. A material breach, with a cure period in which the other side can fix it before termination takes effect.
Handover obligations. On any termination, the vendor delivers all code, documentation and credentials, confirms nothing is held outside your accounts, and provides transition support for an agreed period. You pay for accepted work and for work in progress at an agreed value.
If you ever need these clauses, our guide on how to switch app development companies mid-project walks through the handover in practice.
Liability, key personnel and governing law
Limitation of liability. Vendors commonly cap liability, often linked to fees paid. That is normal. Check that the cap is mutual and that breaches of confidentiality, IP and data protection are treated separately. Your lawyer will have a view on what is reasonable in your jurisdiction.
Key personnel. If you chose a vendor because of a specific tech lead, name the role in the SOW, require notice before changes and describe how a replacement is onboarded.
Governing law and disputes. The contract has to name the law that applies and where disputes are heard. Common options in cross-border app work are England and Wales, a US state, the UAE (including the DIFC) or Pakistan, with arbitration as an alternative to courts. The NDA and IP page explains our position on governing law.
Red-line checklist before you sign an app development contract
Go through these with the draft open. Each “no” is a question for the vendor or your lawyer.
- Does the SOW reference a backlog or requirements document with acceptance criteria?
- Does IP pass to you on creation or per paid milestone?
- Are pre-existing vendor components listed and licensed to you perpetually?
- Is there a written acceptance process with a review window and defect severity levels?
- Do changes need your written approval of an impact note before work starts?
- Is the warranty period defined, with clear exclusions?
- Do payment milestones match builds you can install, and does the model match the billing?
- Are the code, store accounts and cloud in your name from day one?
- Is subcontracting allowed only with your approval?
- Can you terminate for convenience, and are handover obligations listed?
- Is liability capped mutually, with sensible carve-outs?
- Is there a DPA if personal data of EU or UK users is involved?
- Is the governing law one your lawyer can advise on?
App development contract: FAQs
What should an app development contract include?
At minimum: scope with acceptance criteria, IP assignment to you, confidentiality, an acceptance process, change requests, a warranty period, payment terms that match the engagement model, key personnel, subcontracting rules, liability, termination with handover obligations, and governing law. Many vendors split these across an NDA, a master services agreement and a statement of work per phase.
Who owns the code in an app development contract?
Whoever the contract says. Paying for development does not automatically transfer ownership in every jurisdiction, so the contract needs an explicit IP assignment of all deliverables to you, ideally on creation or per paid milestone. Pre-existing vendor tools should be licensed to you perpetually. Keeping code in your own repository makes ownership practical, not just legal.
What is a reasonable warranty period for app development?
There is no single standard; the period is agreed in each contract. What matters more is the scope. The warranty should cover defects against the agreed acceptance criteria at no charge, and it typically excludes new OS versions, store rule changes, third-party API changes and defects caused by others. Ongoing updates belong in a separate maintenance agreement.
Should I use the vendor’s contract or my own?
Either works if the content is right. Vendor templates are often faster because the MSA is already structured for app work, but review it against a checklist like this one and ask for changes where needed. A good vendor will discuss the terms clause by clause. Have your lawyer review the final version in any case.
How do I handle scope changes in a fixed price app contract?
Through a written change request process. Each change gets an impact note on effort, cost, timeline and risk, and no work starts until you approve it in writing. The written acceptance criteria decide whether something is a defect, which the vendor fixes, or a change, which you approve and pay for. This keeps the budget visible and avoids disputes at invoice time.
Get terms you can read in one sitting
Ask for our standard terms or send your own draft. We reply within one business day and walk you through IP, acceptance and exit before you share anything sensitive. Start with our app development NDA and IP protection terms.

