What each one settles in a software development agreement, and the wording that shifts the risk.
Intellectual Property Rights
Why it matters. This clause decides whether the client owns the custom code, or merely receives a licence to use it. It also determines if the developer can reuse the code for other clients.
Watch for. Look for wording that assigns only a limited, non-exclusive licence to the client, or that allows the developer to retain and reuse the source code and its components without restriction.
Scope of Work and Change Control
Why it matters. This defines exactly what will be built. A vague scope allows the developer to claim extra fees for work the client assumed was included.
Watch for. A loosely worded description of deliverables, or a change-control process that allows the developer to unilaterally increase costs and timelines for any modification.
Acceptance Testing and Milestones
Why it matters. This is the client's primary tool to ensure the software works as promised before paying. It links payment to objective, demonstrable results.
Watch for. A clause that deems the software accepted after a short, silent period, or one that ties payment to delivery dates rather than the successful completion of defined tests.
Warranties
Why it matters. Warranties are the developer's promises about the software's quality, performance, and originality. They are the basis for a claim if the software fails.
Watch for. A clause that disclaims all warranties, including the implied warranty of merchantability or fitness for purpose, or one that limits the warranty to a very short period from acceptance.
Indemnity
Why it matters. This allocates the risk if a third party sues, for example, claiming the software infringes their intellectual property or caused them harm.
Watch for. A one-sided indemnity that only protects the developer, or an IP infringement indemnity from the developer that is capped at a low amount and excludes any modification made by the client.
Limitation of Liability
Why it matters. This clause caps the amount one party must pay the other for breaches or damages. It can make a developer's other promises nearly worthless if set too low.
Watch for. A total cap on the developer's liability at the fees paid, with a complete exclusion of liability for indirect or consequential loss, which may bar a claim for business disruption.
Termination and Transition Assistance
Why it matters. This governs how the relationship can end and what happens to the code, data, and ongoing work afterwards. It is critical for business continuity.
Watch for. A clause that allows the developer to terminate for convenience with short notice, or one that is silent on the developer's obligation to return all source code, documentation, and data in a usable format.
Confidentiality
Why it matters. This protects the client's business plans and trade secrets shared during development, and the developer's proprietary tools and methods.
Watch for. A definition of confidential information that excludes the client's business data, or a clause that allows the developer to retain and use aggregated, anonymised data without explicit consent.