Insights · 5 min read

Software maintenance cost: what you'll actually pay

The build is a one-time bill. Maintenance is the bill that keeps coming. What software maintenance really covers, what it costs, and how to stop it drifting.

By GGP Editorial

Founders plan carefully for the build and then act surprised when the invoices keep arriving. The build is a one-time bill. Maintenance is the bill that keeps coming, and if you did not budget for it, it feels like a leak. It is not optional either. Software that nobody maintains is software that quietly breaks.

What maintenance actually covers

Maintenance is not a euphemism for bugs. Most of it is work you asked for without realising. Here is what a typical month looks like:

ItemWhat it involvesFrequency
Security patchesUpdating libraries and frameworks after CVEsMonthly at least
Dependency updatesKeeping the stack current so upgrades stay cheapQuarterly
Small fixesBugs and edge cases users reportOngoing
Hosting and monitoringServers, backups, uptime checks, logsContinuous
Small featuresTweaks, new fields, a report, a permission changeAs requested

The last row is the one that surprises people. A steady stream of small feature requests is usually the largest single cost, not bug fixing. An admin wants a new export format, sales wants a field added, finance wants a report renamed. Each is small, and together they add up to a real monthly bill.

What it costs

A common rule of thumb is 15 to 20 percent of the original build cost per year. So a product that cost USD 100,000 to build will run somewhere around USD 15,000 to 20,000 a year to keep healthy. That is a baseline for a product in active use, not a number pulled from a contract.

The real driver is how the work is sold to you. There are three models:

  • Time and materials. You pay for hours used. Transparent, but the monthly total moves around.
  • A fixed retainer. You pay a set fee for a set number of hours or a fixed scope. Easier to budget.
  • Ad-hoc. You call when something breaks. Feels cheap until an emergency lands at a bad time, and then it is expensive and slow.

For most products in active use, a retainer with a defined scope is the calm option. You know the number each month and someone is watching the system instead of waiting for you to report a problem.

To make it concrete: a mid-size product with a couple of developers on a retainer might run USD 2,000 to 4,000 a month for a defined scope. Ad-hoc support for the same product can cost less in a quiet month and far more in a bad one, because emergencies are always billed at a premium and always land on a deadline.

Why the cost grows

Maintenance cost climbs for three reasons. The codebase gets bigger every year, so each change touches more of it. The team that wrote it may have moved on, which means new people spend time reading before they can change anything. And the product accumulates integrations, each of which can break when a third-party API changes.

You can slow that growth with small habits. Keep documentation short and current. Insist on tests for the parts that change often. Review dependencies quarterly instead of once a year. None of this is glamorous, but it is what keeps an old system cheap to change.

When maintenance becomes redevelopment

There is a line where paying to maintain stops making sense. If a change to a simple screen takes weeks because the code is tangled, or if the original stack is so old that nobody wants to touch it, you are not maintaining software anymore. You are patching a sinking boat.

The honest test is the cost of a typical change. If a routine update costs a meaningful fraction of what a rebuild would cost over a year, it is time to talk about replacing the system rather than nursing it. A good partner will tell you this instead of quietly billing you forever.

Who should run maintenance

The original team is the cheapest place to start, because they already know the system. The problem is they may not be around. If the original agency handed over the code and disappeared, a new team spends the first weeks just reading. That onboarding cost is real and should be priced into any quote you get.

A new vendor will usually propose a short discovery phase before quoting a retainer. Do not skip it. Anyone who quotes a monthly number without looking at the codebase is guessing, and you will pay for that guess later either in overages or in the system staying half-maintained.

Keeping the number honest

Ask for a maintenance report each month, not just an invoice. It should list what changed, what was monitored, and any risks coming up. That single habit stops most of the drift, because vague hours are hard to hide once you are reviewing them monthly.

We run maintenance for products across finance, property, and retail, and we treat it as a product of its own rather than a side job. If you want to know what your system would actually cost to keep running, send us the details and we will give you a straight number.

Talk to us about your project

Need help applying this?

Tell us what you are building and where you are today. We typically reply within 24 hours.