Writing a Great Software Development Contract, Part 3 – Warranties, Indemnifications, and Liability

Custom software services contracts should call out the promises you and your partner make to each other. The contract should also define who will be responsible, and to what degree, if certain issues arise.


This post is not formal legal advice. I’m not a lawyer. I recommend you work with legal professionals for all of your software contract needs.

This is the third post in a series that will cover common considerations in the following categories:

This post focuses on warranties, indemnifications, and liability:

  1. Warranties – What can you expect your partner to guarantee? What will your partner likely not guarantee?
  2. Indemnifications – What kind of losses can you expect your partner to protect you from, and what will your partner expect you to protect them from?
  3. Liability – What level of financial liability can you expect your partner to accept? What type of liabilities is your partner unlikely to take on?

1. Warranties

Warranties are promises between you and your partner related to the services being performed.

Warranties from your partner

It’s reasonable to expect some guarantees from your custom software partner.

In general, you should expect your partner’s services to be performed:

  • In a professional and workmanlike manner
  • Following the terms of your contract and applicable statements of work
  • In accordance with the law

I believe the points above adequately convey what you should generally expect your partner to guarantee. However, you may want to call out other expectations you have.

In my experience, I’ve seen additional warranty expectations include:

  • Providing an inventory of all third-party code included in deliverables and a guarantee to not include any undocumented third-party code
  • Guaranteeing that the deliverables don’t include any disabling devices, or “backdoor” access
  • Complying with your company policies

Warranties not provided by your partner

When it comes to warranties, it’s important to remember that purchasing custom software development services is much different from buying a pre-existing software package.

Your partner will be collaboratively and iteratively working with you to define a specification for the solution. The Agile design and development process allows for specification definition, implementation, and refinement throughout an engagement. You can expect to discover and fix minor defects and bugs during custom software projects.

Agile design and development is essentially like going through a research and development process that results in a high-quality solution you can commercialize. It’s a world apart from buying a mostly pre-developed solution to use or resell with minor modifications.

Once the software is delivered, your partner likely has no control over:

  • How you sell the solution to your customers and the promises you make to your customers related to the solution
  • How and where you choose to host the solution
  • Modifications you might make to the solution
  • How you maintain (or don’t maintain) the solution with recommended updates, security patches, etc.
  • Changes to the hosting environment or integration with third-party services

Due to the points above, your partner will likely provide the solutions “as is.” They will not explicitly or implicitly guarantee that the created solution:

  • Is free from infringement claims
  • Is fit for a particular purpose
  • Has any warranty of merchantability
  • Is compliant with law (You own risks related to things like ADA or GDPR compliance.)
  • Will work in an uninterrupted fashion or be free from minor defects that don’t substantially affect the overall performance of the solution

2. Indemnifications

Indemnifications are guarantees between you and your partner to hold one another harmless and assume costs related to defined events.

Indemnifications from your partner

It’s important to remember that you are taking on the risk of developing and commercializing a custom software product. You can expect your partner to provide warranties related to the things they can control, but it’s not common for a development partner to protect you or compensate you from any other harm or loss in your efforts.

Your partner can control that their custom work for you is original and not copied or taken from another source. You should expect them to indemnify you against copyright, trademark, and trade secret infringement related to their original works. The first post in this series covers why your partner will likely not indemnify you against patent infringement.

It’s also unlikely that your partner will indemnify you from any other risks of commercializing the software solution or running your software-related business. Any other promises you want from your partner can be defined as warranties.

Indemnifications from you

It might seem odd at first, but your partner will probably ask for you to indemnify them from certain risks. Because you will likely be running a software business with the collaboratively created solution as a core offering, your partner will want to be protected from the risks you take on in reward for growing your customer base. Once delivered to you, your partner has no control over how you use the solution or what promises you make to your customers about the solution.

Your partner will likely ask you to protect them from harm or loss resulting from:

  • Your use of the delivered solution
  • Their creation of a solution in accordance with your instructions
  • Their use, possession, or incorporation of any third-party materials in the solution

3. Liability

Liability assumed by your partner

Your partner should agree to some level of liability that is related to the warranties and indemnifications in your agreement.

It’s important to remember that your partner is essentially selling their time to collaboratively create a software solution with you. They will have a limited, maximum return for the services they provide. Accordingly, they will want a limited, cumulative level of liability. Liability can be limited based on dollars and the time period when a liability obligation occurs.

In my experience, I’ve set liability caps based on:

  • A fixed dollar amount set at the level of expected business volume
  • Fees paid to partner under an applicable statement of work bounded by some amount of time in trailing months (e.g. in the previous 12 months)

Liability not assumed by your partner

You can expect your partner to assume liability for the things they can control and offer as warranties and indemnifications. Your partner will have no control over how you sell or use the software solution you have collaboratively created. Your partner also has no control over the value or risks related to how your customers use your software solution.

Therefore, your partner will probably not explicitly assume any liability to you or any third party for any other loss, expense, or damages that might arise from the sale and use of the software solution.

Writing a Software Development Contract

This post is part of a series on writing a great software development contract:

  1. Overview & Principles
  2. Intellectual Property Rights
  3. Warranties, Indemnifications, and Liability
  4. Breaches and Termination