You’ve picked a developer, freelancer, or agency, and the sales call went well. What decides whether this project finishes on budget, or turns into a software project rescue, is the contract in your inbox right now.
Most disputes trace back to 5 things left vague at signing: scope, payment, code ownership, liability, and exit rights. This guide about software development contract red flags covers all 5, plus escrow, key-person protection, and vendor insurance, which most checklists skip.
Quick answer:Â A safe contract prices scope and change requests, ties payment to testable milestones, assigns source code to you automatically on payment, caps liability for both sides equally, and lets you terminate for non-performance without owing the full contract value. Escrow, a named backup developer, and vendor insurance separate a solid contract from one that only looks fine.
Key takeaways
- 5 areas cause most disputes:Â scope, payment, ownership, liability, and exit rights.
- Code ownership isn’t automatic. The developer owns the code by default, even after payment, unless a signed clause assigns it to you.
- A liability cap that only protects the vendor is a one-way shield, not a real cap.
- Escrow and a key-person clause protect you from the same risk:Â 1 person or company disappearing mid-project.
- A vendor who accepts unlimited liability instantly usually hasn’t priced their own risk. That’s a warning sign, not generosity.
What counts as a red flag in a software development contract
A red flag isn’t a clause you dislike. It’s a clause that shifts risk, cost, or ownership onto you, written vaguely enough to defend later.
A longer payment cycle or a standard 2-week notice period isn’t one; those are normal terms. A clause with no number, no deadline, or no named owner attached usually is.
Most vendors don’t write these on purpose. Many reuse an old template nobody has updated since the last dispute exposed the gap in it.
Scope and change requests: why the quote grows after you sign
The quote you signed is the most optimistic document in the whole project. It’s built on assumptions nobody has tested against your real requirements yet.
Why “testing” and “deployment included” rarely cover what you assume
“Testing” in a quote usually means the code runs, not that it survives real users or your actual browser mix. Deployment, admin screens, and edge cases often turn into separate billed work later.
Scope gaps are one of the most common reasons projects run over budget. Third-party API integrations tend to surface a second wave of surprises once you hit a rate limit nobody tested for.
The priced change-request rate that stops scope creep
“Changes go through a written request” means nothing without a rate attached. Ask for a specific hourly rate, with a 2-hour minimum, written into the contract itself.
That single number controls scope creep better than any amount of goodwill.
Payment terms: how much should you pay upfront
Payment structure shows who’s financing the project’s risk. 100% upfront removes the vendor’s incentive to hit deadlines. 100% at the end starves them of cash mid-project.
How much upfront payment is normal for custom software development
A 20-30% deposit is standard, covering planning and design work. Anything above 40-50% before any deliverable exists shifts most of the risk onto you, especially on a project costing tens of thousands of dollars.
A fair milestone payment schedule
Tie payment to something testable, not a date on a calendar:
| Payment stage | Share of budget | Released when |
|---|---|---|
| Deposit | 20-30% | Contract signed |
| Milestones | 40-50%, 2-3 stages | Each feature set delivered and testable |
| Final payment | 20-30% | Delivery and acceptance testing complete |
A vendor who won’t break a fixed-price project into milestones hasn’t planned the project timeline in enough detail yet. Compare this against typical agency vs freelancer payment norms before you negotiate.
Who owns the source code you’re paying for
This is the clause most first-time buyers assume the invoice settles. It doesn’t.
1. Who owns the code if there’s no contract in place
Under U.S. copyright law, the developer owns the code unless a signed clause assigns it to you, per 17 U.S. Code § 101. Paying an invoice alone doesn’t transfer ownership.
2. Assignment vs license: the clause that decides who controls your product
Contracts generally use 1 of 3 models:
- Full assignment:Â all rights transfer to you on payment. This is the standard to expect.
- Exclusive license:Â only you can use the software, but the vendor keeps the copyright.
- Non-exclusive license:Â the weakest option. The vendor keeps the code and can resell the same build to your competitor.
Ask which model applies, by name, not just whether “you get the code.”
3. Escrow and milestone-based access, not just a final handover
Most contracts only address code access at the very end. A stronger contract gives you real access to each milestone’s code as it’s paid for, not just a promise at project close.
For software your business depends on, source code escrow adds a safety net. A third party releases your code automatically if the vendor disappears or stops maintaining it.
It costs a few hundred dollars a year, a rounding error next to rebuilding a stalled app from scratch.
Liability, indemnification, and warranty: what happens if something goes wrong
A missed deadline, a security incident, or a vendor who stops answering emails is when a contract’s actual terms surface, not the terms either side remembers discussing.
1. Liability caps that only protect the vendor
A cap that limits the vendor’s exposure to fees paid, while leaving yours uncapped, isn’t mutual protection. Any cap should apply both ways, and exclude gross negligence or data breaches.
2. Indemnification vs liability, and why “broad” is a red flag
A liability cap limits what a party pays for its own mistakes. Indemnification makes 1 party cover the other’s legal costs for a specific claim, usually IP infringement.
A broad or reversed indemnification clause, where you cover the vendor’s own security failures, is a warning sign. It should run in your favor, narrowly, for IP claims and the vendor’s own lapses.
3. Why a bounded warranty period protects both sides
“No warranty” leaves you with no recourse for a week-2 bug. “Unlimited warranty” gives the vendor every reason to blame your later changes instead.
A written 30-90 day window, backed by QA testing before launch, protects both sides.
Termination rights and what happens if your developer leaves
Termination rights you should never sign without
A fair termination clause covers 3 things:
- The right to terminate for non-performance, without owing the full contract value.
- A cure period, typically 10-15 days to fix the problem before termination triggers, so a single bad week doesn’t end a salvageable project.
- Matching notice periods for both sides. A 15-day exit for the vendor but 30-60 days required from you, with no equivalent obligation on their end, isn’t fair.
The key-person clause almost nobody asks for
Most contracts protect you from the company failing, not from the 1 developer who understands your codebase leaving the agency, which happens more often.
Name the lead developer in the contract, and require notice plus a real handover period if they leave. Without that clause, a replacement spends the first few weeks relearning decisions nobody wrote down, on your clock.
AÂ dedicated, named team, not a rotating pool, makes this easier to guarantee.
SLAs, hosting, and hidden third-party costs
Vague SLA language, and the numbers to ask for instead
“Best efforts,” with no response time or uptime number, means whatever the vendor decides later. Ask for numbers instead:
- 4 hours first response for critical issues, such as an outage or data loss
- 24 hours first response for minor bugs
- A stated uptime target, such as 99.5%, if hosting is included
A guaranteed response time is reasonable. A guaranteed fix time for every bug isn’t.
Who owns hosting, domain, and third-party renewal costs
If the vendor sets up hosting and cloud infrastructure under their own account, get ownership and admin access transferred, or added from day 1.
Any paid plugin or licensed dependency the build relies on needs a named owner for its renewal cost, or you’ll discover that bill the week it’s due.
Security, jurisdiction, and vendor insurance before you sign
Why “GDPR compliant” alone means almost nothing
Naming a privacy law isn’t the same as committing to anything measurable. Ask for specifics instead:
- A named security standard, such as the OWASP Top 10, not “secure coding practices”
- Whether the vendor holds, or is pursuing, ISO 27001 certification
- Whether penetration testing happens before launch, and who pays for it
- A written data retention and deletion policy
Pre-launch security checks run by a team like GVM’s QA lead work because they’re specific, not general.
Jurisdiction, dispute resolution, and vendor insurance
For an offshore or remote vendor, the contract should name which jurisdiction’s laws apply, not leave that for after a dispute starts. It should also set an escalation order: negotiation, then mediation, then arbitration, with litigation as a last resort.
Ask whether the vendor carries errors and omissions insurance, and at what limit. A vendor who signs off on unlimited liability with no pushback either hasn’t read the clause closely or doesn’t expect to be reachable if it’s ever invoked.
The SCOPE framework: a 5-point contract check before you sign
The 5 checks: Scope, Cost, Ownership, Protection, Exit
- Scope:Â Priced change requests, specific enough that “is this included” is settled by reading the contract alone.
- Cost:Â Payment tied to testable milestones, deposit under 30-40%.
- Ownership:Â Full assignment on payment, not a license, with access tied to each milestone.
- Protection:Â Mutual liability cap, narrow indemnification, a defined warranty, and vendor insurance.
- Exit:Â Termination for non-performance without owing the full value, and a named backup developer.
Red flag vs green flag wording, side by side
| Area | Red flag wording | Green flag wording |
|---|---|---|
| Scope | “Testing and deployment as needed” | “Testing covers X, Y, Z; deployment is milestone 3” |
| Payment | “50% due on signing” | “25% deposit, 50% across milestones, 25% on acceptance” |
| Ownership | “Non-exclusive license” | “Full IP transfer on payment” |
| Liability | “Vendor capped, client uncapped” | “Cap applies to both parties” |
| Support | “Best efforts” | “4-hour response, 99.5% uptime” |
Vetting the vendor before you even see a contract
The reference-check question almost nobody asks
Most buyers ask “were you happy with them,” which gets a polite yes almost every time. Ask “what went wrong, and how did they handle it” instead.
Every project hits a snag somewhere. The answer to that question shows how a vendor behaves under pressure, which is the thing you’re actually trying to learn.
What a rushed sales process or a steep discount usually signals
A full timeline and budget quoted in a single short call comes from a template, not your project. A steep discount paired with pressure to sign fast is worth a direct question.
Reviewing a vendor’s past project work gives you something concrete to check before signing anything.
FAQs
1. Who owns the source code if there’s no signed contract?
The developer does. Copyright belongs to whoever wrote the code unless a signed agreement assigns it to the client. Paying an invoice alone doesn’t transfer it.
2. Is it normal to pay 100% upfront for custom software development?
No. It removes any incentive to deliver on time or to quality. A 20-30% deposit with milestone payments is standard.
3. What’s the difference between a liability cap and an indemnification clause?
A liability cap limits what a party pays for its own mistakes. Indemnification makes 1 party cover the other’s legal costs for a specific claim, usually IP infringement.
4. Do I need source code escrow for a small project?
Usually not for a low-risk marketing site. It’s worth the modest annual cost for software your business depends on to operate.
5. What’s a reasonable SLA response time for a small business app?
A 4-hour first response for critical issues and a 24-hour response for minor bugs is a workable standard. “Best efforts” with no numbers isn’t an SLA.
6. Do I need a lawyer to review a software development contract?
For a project under a few thousand dollars, checking it against the terms in this guide is usually enough. For anything in the tens of thousands of dollars or above, a short paid legal review costs far less than the dispute it can prevent.
7. What happens if my developer or agency disappears mid-project?
Recovery depends on what access you actually have: source code, hosting, and admin credentials. A contract with milestone-based code access and a key-person clause makes this far easier to recover from than one that only addresses access at the very end.
8. What’s the difference between a fixed-price and a time-and-materials contract?
Fixed-price locks a total cost upfront but pushes every disagreement into a change-request fight. Time and materials bills for actual hours worked, which keeps scope honest but needs active spending tracking on your side.
What to do before you sign a software development contract
What most contract disputes come back to
Most disputes trace back to 1 of the 5 SCOPE areas left vague, not to bad faith. Running a contract through those 5 checks once catches almost everything above.
Get GVM Technologies to review your contract before you commit
GVM Technologies reviews project scope and contract terms as part of every new engagement, whether that’s custom software development, an MVP build, or a project manager coordinating your existing team.
Book a meeting to walk through your contract or project brief before you sign. No obligation, no pressure to switch vendors.


