Insights · 5 min read
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.
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:
| Item | What it involves | Frequency |
|---|---|---|
| Security patches | Updating libraries and frameworks after CVEs | Monthly at least |
| Dependency updates | Keeping the stack current so upgrades stay cheap | Quarterly |
| Small fixes | Bugs and edge cases users report | Ongoing |
| Hosting and monitoring | Servers, backups, uptime checks, logs | Continuous |
| Small features | Tweaks, new fields, a report, a permission change | As 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.
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:
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.
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.
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.
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.
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.
Tell us what you are building and where you are today. We typically reply within 24 hours.