When a customer hires a software development company, they sign a billing contract. The pricing model used depends on the project. The main models are fixed-price, time & materials, and milestone. In this article, we look at the advantages and disadvantages of these pricing models and tell you which is best to use when.
What is the fixed-price model?
A fixed-price contract is based on an estimate of the amount of work that needs to be done. Project requirements need to be written to define this scope of work. Wireframes also need to be created to help the development team to figure out the hours necessary to implement all features. With a fixed-price project, the service provider and the customer both carry some scope-related risk. Any extra work (when clients want to add a totally new feature that was not specified in the documentation) usually goes under an additional agreement. In this case, the client must pay extra.
In this model, it’s important to discuss everything before the actual development in order to estimate the cost of the software product. The fixed-price model ensures that a project is done and delivered within a specific timeframe and budget.
Finalized pricing. After the contract is signed, the client knows the budget. The company cannot overcharge without notice.
Strict deadlines. When the customer understands what features they want in an app, the developers can come up with a clear plan and definite deadlines. Everybody knows what work will be done at any given point in time.
Predictability. When everything has been discussed and planned beforehand, it’s easy to monitor the status of software development and predict if the work will be completed on time.
Little to no management. All project details are defined in the contract, so project management can be passed down to the project manager. No excessive supervision is required on the part of the client.
Rigid terms. After the project starts, it cannot be adjusted during the course of implementation. If market conditions change and some planned feature is no longer needed or a new feature is needed, it’s impossible to accommodate that. Implementation of this new feature has to be negotiated independently. With fixed-price projects, the paperwork and approval of new features take much longer and can potentially stall the whole development process.
Long planning. A fixed-price contract demands in-depth planning. Developers need to discuss every detail and every action along with possible pitfalls.
Miscommunication risks. There’s always a risk that miscommunication may lead to delivering a product that doesn’t exactly correspond with what the client hoped for. Such misunderstandings can happen because the project specifications aren’t clear. Lack of project monitoring can also cause miscommunication, especially when developers need confirmation or feedback on the work that must be done. If the client is working with an offshore company, they need to know how to manage a remote team to avoid project stagnation.
When to use
The fixed-price model works best for small projects with limited features and clear requirements. It’s also good for MVPs and projects with limited budgets and definite deadlines.
What is the time & materials pricing model?
The time & materials model involves regularly paying for work completed. With this model, the customer plays a greater role in the development of the software solution and carries all risks related to the scope of work. The level of responsibility that the client carries for the whole development process with time & materials is much higher than with fixed-price or milestone projects. The customer gets set up with a team and is billed for the actual time spent on development.
Flexible requirements. Work is divided into short sprints and results in an MVP (Minimum Viable Product). To meet the customer’s expectations, features can be added or removed.
Hourly rates. Customers pay a stated hourly rate a given company has.
Product quality. The product is well-tested and brought to near-perfection thanks to multiple iterations, resulting in high-quality software.
Transparency. The time & materials model allows clients to monitor progress as developers present reports on work accomplished.
Uncertain deadlines. Any adjustments to the project can postpone the final release and the project can become overdue.
Undefined budget. The price is approximate, so the client doesn’t know for sure how much money they’ll spend since the timeframe for designing and implementing features is flexible.
Need to manage the process. The product owner needs to manage every iteration as well as every step of development in the time & materials model.
Hard decisions. Since market conditions can change unpredictably, it may become clear that some features or design elements that were originally planned are no longer relevant. In this case, the product owner must act immediately to adjust development to better meet market conditions.
When to use
The time & materials pricing model appeals to customers who want flexible procedures and agile project execution. This model works for projects with changing requirements and fits long-term projects.
This type of contract is applied when there’s no set scope of work and when a lot of flexibility is required. The client must be willing to get really involved in the project since their approval and vision is an important part of development.
What is the milestone pricing model?
With Milestone pricing, the customer is billed when a service provider has implemented a specific scope of work over a certain period of time, achieving a predefined milestone. At that point, the client needs to pay the service provider an amount that depends on the time spent and the things achieved for the given milestone.
Paying on achievement. The customer pays for actual functionality delivered to them.
Control the results. The client becomes the person who approves each milestone.
Criteria. Most IT companies will provide clients with a checklist they need to use when they receive a piece of work for approval. This checklist is supposed to guide them to see if everything works as expected.
No fixed price. Each type of functionality will cost a different amount as different amounts of time were spent to develop them. The customer has to pay the total amount approved for each milestone.
Long disputes. If a client finds something they don’t like or something that doesn’t correspond to the functionality listed in the checklist, the development team will have the right to dispute. This back-and-forth can take a considerable amount of time as the two parties come to terms.
No rigid timeframe. Since planning and project execution is iterative, there’s no specific timeframe for when the project will be completed.
Lack of trust. Some IT companies don’t trust this model and refuse to work with clients who insist on it.
When to use
The milestone model is best when the service provider and client have a good relationship to eliminate the chance of fraud. If the two parties trust each other, it’s less likely that a dispute will arise. The milestone model works best for business partners with established relationships so there’s minimal downtime during acceptance and disputes.
Choosing the right contract model
Customers should choose a pricing model based on the type of project they have. If they have a clear understanding of their project and a limited budget, then a fixed-price model should be used. Clients should avoid including lots of functionality in this case and instead focus only on core features. If the project is quite flexible and requirements change frequently, then the time & materials model should be applied. When the parties have a long-term and trusting relationship, they can work according to the milestone model. In a nutshell, customers must balance their expectations of quality, deadlines, and price.
Ukrainian tech talent is popular on the market. SteelKiwi is a Ukraine-based software development company that’s been on the market since 2011. Our technology stack includes Python/Django, AngularJS, React.js, HTML5, CSS3, Flutter, Swift, Objective-C, Java, and Kotlin. These technologies allow us to implement projects in on-demand services, e-learning, business process automation, entertainment, and more.