You have provided necessary materials and access, but an IT product is not completed. An IT company is out of touch. Project deadlines are shifted, a budget is increased, and costs and losses due to frustrated business plans become unpredictable. Such scenarios are familiar to American businesses that order software development services from IT companies. Misunderstandings and problems can be avoided if an agreement between software company and client is created to regulate the development of an IT product by the transparent rules agreed in writing.
In this article, we will discuss the common traps that Stalirov&Co clients have faced. Let's find out what provisions in the agreement protect against problems in the project performance and the formation of technical specifications.
You will find tips for drafting clauses about payment process approval and transfer of intellectual property rights, testing and fixing software bugs, access to confidential information and personal data processing.
What is the aim of concluding a contract for software development?
IT lawyers draft a contract for software services to:
- detail a software product functional: create a backlog with a list of specific tasks, stages and a stack of technologies used;
- determine the procedure for setting deadlines for project performance by sprints;
- collect and list a composition, roles and statuses of a project development team;
- draw up payment schedules, determine the system for evaluating and calculating the project;
- distribute functional duties and responsibilities between a development team and a customer.
What should be included in a software development agreement?
Let's take a closer look at 9 key sections of a software developer contract.
Parties and Subject
First step is to determine the parties who sign an agreement, and who they are. One party to the agreement is a customer: an individual or a legal entity. Another — is the performer or contractor: an IT company.
At the stage of concluding an agreement, it is important to understand whether an IT company attracts third-party developers, subcontractors enrolled to implement the project. This is worth finding out to settle the liability provisions. A contractor must be responsible to a customer for the project results, regardless of who performs the tasks physically.
In the first section of a document, describe what services the contractor`s team provides to the customer. For example, there are services for programming, support and maintenance of software.
The execution procedure for the agreement
This section describes cooperation rules: from setting the terms of reference to the acceptance of the results.
Step 1: drawing up a statement of works (SOW)
Developers begin to provide services after the formation of a SOW, which indicates a list of tasks and the timing for their performance, the price and payment procedure for the services, the total project completion time, and technical requirements for the result.
We suggest you divide the development process into successive stages. For each of them, you need to request a separate SOW and set the deadlines. It helps if you fix the requirements for the final result.
You should be able to make changes to a SOW. If they entail a significant service volume increase, a contractor may change a cost of services upon prior warning and agreement with you.
Before developers get to work, it is necessary to fix in the agreement what services and repositories their team uses. We advise you to add an item with a list of ways to transfer the service results: using email, domain, task manager or repository, uploading to hosting etc.
Step 2: SOW approvement
A сontractor shall begin performing the agreement upon the moment of signing of a SoW by the parties.
To make the communication process more effective, we advise you to determine responsible persons on the customer's side for agreeing and making changes to SOW, providing materials and access, paying invoices, checking development results. It can be the Product owner or Project manager.
We suggest you devote a separate agreement clause for communication rules. It is important to specify means of communication by which management will be carried out.
Step 3: acceptance of results and payment for services
After completion of each stage of software development, a customer accepts the result of services, checks compliance with requirements fixed in a SOW and pays an invoice. It is necessary to determine the rules about the following below.
- Coordination and approval of working results
Intermittent results received in the course of providing services shall be certified by invoice, which a contractor shall prepare at the end of each calendar month.
A сontractor shall provide a сlient with a signed invoice for the provided services after the end of a reporting month. If a сlient provides a written reasoned refusal to approve an invoice, a сontractor shall consider their remarks and eliminate defects within a term agreed upon by the parties.
- Determine an invoice form
Each invoice shall include a summary of cost, time and services to be performed under respective SoW; a summary of contractor services cost on additional client requests on the project.
- Define payment rules and unspent budget usage
Each invoice will include a summary of charges related to the percentage of project completion, change request, or other items as appropriate. An unspent budget is included in an invoice for the next month and reduced by the corresponding amount.
- Payments currency
Total cost of this agreement is determined as the cost of services, provided according to all SoWs and is determined based on the total amount of invoices. The payments shall be made in USD or any other currency confirmed by the counterparties as non-cash payments.
- Hourly labour cost
A payment is based on the hourly rate, specified in a SoW. A client shall pay for only those hours which were actually spent and logged in a tracking software.
- Invoice payment term
A client shall pay the invoice according to the NET 20 conditions (within 20 calendar days from its receipt from the contractor).
- Overtime definition
Оvertime means actual time spent by a contractor provision under a respective SoW, which exceeds pre-estimated workload stipulated in a respective SoW.
Step 4: bugs fixing
We recommend implementing the provision that gives a customer the right to refuse payment of the invoice if the results of the services are performed with errors, do not meet the SOW requirements and the customer's expectations. Such errors in the agreement are called bugs. In this case, it is possible to prescribe in the agreement a contractor’s obligation to correct the inconsistencies indicated by the customer, without any additional charge and within the time agreed by parties.
We advise to write down what is considered an error, what types of errors can be and how much time developers should spend fixing such errors.
Practice shows that developers fix bugs faster if the customer sends a detailed and complete list of inconsistencies in a single file, a bug report.
Parties create a file to include bugs that require correction, determine the status and deadlines for their elimination. This will help to determine deadlines and effectively control the process. In the agreement, it is important to distinguish paid and unpaid debugs. To do this, IT lawyers determine the difference between errors and requests for changes and improvements.
Imagine that you have received a developed product from an IT company — a website that occupies top positions in Google search results. At the end of the week, a SEO found that the coverage had fallen, and half of the pages gave out 404 errors. In this case, the IT company is responsible for violating the site's functionality if it did not arise through the customer's fault. A contractor is obliged to fix the bugs that led to the 404 error free of charge.
An agreement can also stipulate that a customer can request a warranty obligation from the development team to eliminate software errors within 3 months after delivering service results in full.
Cost and payment models
4 types of calculations can be applied to the agreement
- Full 100% prepayment. Shall be provided before the start of a project performance.
- Partial prepayment. Such payment is divided into 2 payments: 50% before the start of the services provision and 50% after the full completion of the services provision.
- Payment via stages. Depending on the project's stages number, parties agree on the cost of each of them and determine the payment procedure for every stage. Such payment can be either in the form of partial or full prepayment, or in the form of post-payment.
- Postpaid. Shall be provided in 100% amount after completion of a full scope of services.
3 payment models
- Fixed price approach
The budget is determined before the start of the services provision and should remain the same. The approach is suitable for short projects with one customer and a small team, and also, if you work according to the waterfall model and are focused on a fixed task.
- Time&Material approach
Payment is made upon completion of services. The system is relevant for long-term projects of more than 3 months. At the stage of drafting an agreement, a project is divided into several stages, each stage is evaluated separately. A customer can make changes and additions to a SOW. At the start of a project IT companies do not indicate the final product costand and the amount of working hours. In this situation, we recommend planning the time, team composition and tasks for completing one sprint with the calculation of working hours for 2-4 weeks, as well as fixing the hourly rate of specialists with various skill levels who can be involved in the project.
We suggest determining the definition of the Time&Material approach in an agreement. For example, T&M is a pricing model that calculates and charges the time spent by the contractor.
A price is fixed in a SOW, and parties determine a procedure and items in an agreement:
- how often invoices are issued;
- when a payment is shall be made;
- what is a contractor's responsibility for the delay in the delivery of services provision. In this case, it is possible to provide the right for the customer not to pay an invoice until the services are completed and accepted by a customer as properly provided.
- Subscription
There is a monthly calculation with a fixed date, cost and fixing the number of working hours.
We advise taking into account and including in a budget plan the additional costs for servers and cloud services, ordering content, and web design images that the customer bears.
Intellectual Property Rights
It is crucial to highlight that all exclusive property rights to an IT product and all its components are transferred to the customer. There is a list of separate objects of intellectual property.
- Source and object code.
- Graphic design, audio and video, illustrations and photos, maps, plans, drawings, sketches, mockups.
- Derivative works and databases.
- Translation texts for duplication, dubbing, and subtitling.
- Inventions, utility models and industrial designs, prototypes, know-how, patents, trademarks, and domain names.
- Knowledge bases, approaches, techniques, methodologies, algorithms, programming paradigms, marketing research, and other objects of intellectual property.
It is crucial to obtain a guarantee from the contractor that the third parties’ intellectual property rights have not been violated during the software development. This means that the contractor has the right to use all elements of the software product and will be able to transfer them to the customer.
It is worth fixing in an agreement a provision that a contractor is liable for violating the specified guarantee. Suppose a customer receives a complaint/lawsuit/claim related to a violation of third parties’ intellectual property rights. In that case a contractor must act in a dispute on a customer's side, independently resolve the conflict situation and reimburse a customer for losses and costs caused by such a complaint/lawsuit/claim.
It is better to specify in an agreement that the transfer of rights from a contractor to a customer occurs from the moment a software is developed. A customer receives exclusive intellectual property rights from the moment of creating a software, a prototype and a design layout, and a technical documentation formation.
We advise you to agree in advance on what intellectual property an IT company uses while a project is in progress but does not transfer after its completion. Such intellectual property is called the contractor's previous work. It can include:
- graphic design source materials, software source codes, and integration modules;
- knowledge bases, technical documentation, licensed software solutions, and patented know-how;
- internal software solutions, proprietary packaged codes, layouts, prototypes, and mockups;
- external proprietary software.
Parties shall agree if an IT company can use free software and other materials under a "free" or "open" licensing model. You need to indicate in an agreement, if you want to restrict the usage of materials with a free or open license.
Privacy and non-competition terms
To protect the software solution exclusivity, you need to implement an NDA into a software development agreement.
To protect information, it is necessary to define the following:
- a list of information that is considered confidential;
- methods of transfer, storage and return of such confidential information;
- a list of actions that will and will not be considered as a disclosure of confidential information;
- a list of persons who will have access to confidential information and the list of people/entities where it can be transferred.
You can find a guide on writing NDA here.
Personal data processing
During product development, parties may provide each other with access to data that identifies participants of the process. Such information may include the following:
- name, surname, passport details;
- phone numbers, time zone, address data, email, and IP address;
- information about equipment and access/use/authorization in systems;
- information about qualifications, photographs depicting appearance, persons’ signatures.
For the processing of personal data, parties must be aware of and comply with the requirements of the relevant legislation related to privacy and protection of personal data. For example, the data of persons located in Europe are protected by the provisions of the GDPR, a separate act for personal data protection has been developed for California residents - CCPA.
Disclaimers
If you sign an agreement in the wording proposed by a contractor, pay attention to the section with disclaimers. For example, a contractor may write that they are not responsible for the software functionality and working results are provided to a customer "as is". Such disclaimers should not be accepted.
An IT company must guarantee the final product's functionality and be responsible if the working results do not meet the requirements of a SOW and customer's expectations. We recommend setting a specific warranty period. The contractor should not waive responsibility for violations of a product’s functionality immediately after results of services were provided to a customer. Even if a final product is accepted, but hidden shortcomings that could not be identified initially, can affect its quality, developers must eliminate such shortcomings at their own expense within the time agreed with the customer.
Sometimes contractors include the provision that all updates and improvements are paid extra. We recommend making such paragraphs as straightforward as possible and distinguishing types and reasons for such updates and improvements. If the need for revision arises because of a contractor's fault, then it should not be paid separately, but must be eliminated at the contractor`s expense.
Another typical disclaimer is the waiver of the obligation to preserve results of services provision. It is better to agree in advance with a contractor about a period where source files will be saved, in case you need to restore a software.
We also advise you to exclude from an agreement the disclaimer that limits a contractor's liability to “minimum amounts”or determines contractor`s refusal to participate in disputes initiated by the third parties whose rights are violated by/with the relation to a software.
Dispute resolution procedure
Describe your conflict resolution scenario in advance. We recommend implementing 3 stages.
- Negotiation. 60% of our clients' conflicts are resolved through out-of-court dispute resolution. The procedure begins with oral communications or written claims. An agreement determines a period during which a second party must respond to a claim.
- Mediation. If it is impossible to reach an agreement, parties agree to involve professional mediators, who should be approved by unanimous decision. In addition, we advise limiting the mediation process to a specific period, for example, 30 calendar days.
- Trial. When the pre-trial procedure does not help to reach a consensus, a lawsuit can be started. In such a case, it is necessary to determine which body will consider a dispute, for example, the appropriate court at the place of plaintiff or defendant registration.
Early agreement termination
Parties may prematurely terminate the interaction by sending each other a notification for a certain period before the termination of an agreement. Such a period should be negotiated and agreed upon in each case separately. It is important to agree that the customer makes a full payment only for those project stages successfully implemented by a contractor and accepted by a customer. A software developer should fix bugs, and a customer does not have to pay extra for this.
Tips from IT lawyers
Here is the list of actions you should do to make your software development agreement effective.
- Detail the subject of an agreement. A description of services should correspond to types of activities carried out by the IT company.
- Fix straightforward rules for setting a SOW and accepting results. Write down that a SOW is an integral part of a contract. In this way you make a document legally binding.
- Distribute areas of a contractor and a customer responsibility. Write down disclaimers.
- Implement debug categorization to distinguish bugs and additional tasks. Describe a remedy.
- Choose a payment type and model that suits you best for pricing flexibility.
- Write down in an agreement rules for intellectual property rights transferring and limit the open-source solutions usage, if necessary.
- Fix the rule that the contractor gets the right to place a link to a customer`s project in a portfolio only after receiving a customer's prior written consent.
- Determine contractor's responsibilities for violating a website functionality due to the fault of third parties enrolled by a contractor to provide services.
- Do not rush to file a lawsuit if a dispute arises, it is better to use a claim procedure or mediation.