Skip to main content
GullySystem
A practical guide

Time and Materials vs Fixed Price vs Retainer for Software Work

Ganesh HSStrategy and Technology, GullySystem
Practical advice · 4 min read

In this guide 6 sections
The short answer

Time and materials suits unclear scope, fixed price suits a well specified build, and a retainer suits ongoing work with steady demand. The better question is what you can record: hours by task, signed change requests, and invoices that match both.

Time and materials bills what was spent, so record it well

The client pays for hours at agreed rates, usually by role, so a senior developer, a tester and a designer each carry their own rate. Invoices follow the timesheet. No timesheet, no invoice.

Everything depends on timesheet quality. Entries need a project, a task or ticket reference and a note a client can read. “Development, 6 hours” invites a challenge, while “Checkout address validation, ticket 412” does not.

Send a weekly burn report covering hours used, hours left against the estimate and what shipped. Clients accept this model when the numbers arrive before they have to ask.

  • Best for: unclear or changing scope
  • Record: timesheets by task and role
  • Invoice: monthly or fortnightly on actuals
  • Risk: client fears an open ended bill

Fixed price moves risk to you and makes change requests the main event

A fixed price rests on a written specification: screens, user roles, integrations, acceptance tests. The sharper the document, the safer the price. Vague wording becomes unpaid work. Tighten it.

Every request that falls outside the document is a change request, and it needs a number, a signature and a revised date before work starts, with no exceptions. Keep a register listing the request, the hours estimated, the approver and the status.

Invoices follow milestones, and each should tie to something testable, such as login and roles working in staging. Still log hours internally. Without them you will never learn whether your estimates were any good, and the next quote repeats the same error.

  • Best for: well specified builds
  • Record: change request register, milestone sign off
  • Invoice: on milestones
  • Risk: scope creep absorbed as loss

A retainer sells capacity and needs a visible ledger

The client pays a fixed monthly sum for a block of hours or a named team slice, and it fits maintenance, small enhancements, hosting oversight and support after launch.

Decide what happens to unused hours: roll over for a month, expire, or convert to a project credit. Pick one, state it in the contract and show the balance on every invoice.

Also state the response expectation. A retainer without a response target feels like a queue, while one with a target feels like a team.

  • Best for: ongoing support and enhancement
  • Record: hours ledger with opening and closing balance
  • Invoice: monthly in advance
  • Risk: unused hours cause friction

Match the model to the stage of the work

Many engagements use all three in sequence. A short time and materials discovery produces a specification, a fixed price build follows, and a retainer takes over after go live.

Check your tooling against that sequence. Can your system hold different rate cards per project, link timesheets to a change request, and carry a block of hours across months? If not, invoices will be assembled by hand in a spreadsheet.

Also watch the handover points, because gaps hide there and the last timesheet of the build and the first retainer ticket should neither overlap nor leave a gap.

Choose by asking five questions

Is the scope written down? Will it change? Does the client have a fixed budget? Do you have good historical estimates? Is the work continuing after launch?

Two or more answers pointing to uncertainty mean time and materials with a cap. Clear scope and a fixed budget mean fixed price. Continuing work means a retainer. Simple.

Write your answers next to your next proposal draft, then check that your timesheet, change register and invoice template can support the choice.

Software contract model decision sheet

Printable sheet with the five questions in rows and the three models in columns, each cell marked fits, partly or no. Below it sit three small tables: a timesheet entry sample, a change request register with request, hours, approver and status, and a retainer hours ledger.

Open a blank worksheet to print

Questions owners ask

Which contract type carries the most risk for the developer?

Fixed price, because the developer absorbs estimation error and any scope that was not written down. A strong change request process reduces that risk.

Can I cap a time and materials contract?

Yes. A not to exceed amount keeps the flexibility of hourly billing while giving the client a ceiling. Report the burn against the cap every week.

What should happen to unused retainer hours?

Agree it upfront. Options are roll over for a limited time, expire at month end or convert to project credit. Show the balance on each invoice.

Do I still need timesheets on a fixed price project?

Yes. Internal hours show whether estimates were right and feed the next quote, even when the client never sees them.

Browse all guidesBack to top ↑
Next step

Have a specific situation to work through?

This article covers the general case. Tell us what you’re actually dealing with and we’ll respond directly.

Share Your Requirements