What Software Maintenance Really Costs Per Year

Sandor Farkas
Founder & Lead Developer
Expert in software development and legacy code optimization
LinkedInMost business owners find out what software maintenance costs the hard way: after they stopped paying for it and something broke. Before that point, maintenance is usually a line item nobody questions too closely, a number a developer quoted once and that everyone has repeated since without checking whether it still makes sense. If you built a custom application, a customer portal, an internal tool, or anything else that runs your business day to day, you need a real number, not a guess, and you need to know what happens if you decide to skip it.
The rule of thumb, and why it holds up
The commonly cited industry range for annual software maintenance cost is 15 to 25 percent of what the original build cost, and in practice that range holds up well for typical business applications once you account for everything maintenance actually covers. If a custom application cost 80,000 euros to build, a reasonable annual maintenance budget sits somewhere between 12,000 and 20,000 euros, or roughly 1,000 to 1,700 euros a month. For a smaller internal tool built for 25,000 euros, that drops to 3,750 to 6,250 euros a year, closer to 300 to 500 euros a month.
These ranges are wide on purpose, because maintenance cost depends on factors that have nothing to do with the original build price: how many third party packages the application depends on, whether it handles payment or personal data, how often the business wants to change the product, and how much technical debt was already baked in during the original build. A rushed MVP that cost 40,000 euros can easily need more monthly maintenance than a carefully built 60,000 euro application, because the rushed one accumulates problems faster.
There's also a ceiling worth knowing about. Past roughly 30 to 35 percent of the original build cost per year, you've usually crossed from maintaining the application into slowly rebuilding it piece by piece, and at that point it's worth asking whether a partial rebuild would actually cost less than another year of patching around the same structural problems.
What the monthly number is paying for
A maintenance budget isn't a single thing. It covers at least four separate categories, and a provider who quotes you one flat number without breaking these out is usually hiding which ones they're skipping.
Security patching is the one that matters most and gets skipped most often. When a vulnerability is disclosed in a framework or a package your application depends on, someone needs to apply the fix, test it, and deploy it, often within days rather than waiting for the next scheduled update cycle. This alone can run 20 to 30 percent of a typical monthly maintenance budget for an application with a moderate number of dependencies.
Routine dependency updates are the predictable part: keeping the language runtime, the framework, and third party packages current so the gap between your version and the latest supported one never grows large enough to become its own project. This is usually the largest single line item, often 40 percent or more of the monthly total, because it's recurring work regardless of whether anything is broken that week.
Bug fixes and small adjustments cover the issues that surface during normal use, things a staging environment didn't catch or edge cases real customers find that a test suite didn't anticipate. Budget for this varies the most by application, but 20 to 30 percent of the monthly total is typical, and it tends to run higher in the months right after a major release.
Monitoring and reporting, the smallest piece, covers uptime checks, error tracking, and a monthly summary that tells you what actually happened rather than a vague assurance that everything is fine. This is often the first thing cut from a budget maintenance contract, and it's also the piece that tells you whether the other three are being done at all. A provider who can't produce a simple monthly report probably isn't tracking the work closely enough to charge you a fair price for it either.
What skipping maintenance for two years costs
Here's where the real cost usually hides. A business that skips maintenance for a year or two doesn't save the 15 to 25 percent, it defers it, and deferred maintenance compounds in a way that's worse than most people expect.
After one year without updates, the gap between your application's dependencies and the current supported versions has usually grown enough that a routine update is no longer routine. A framework upgrade that would have taken a few hours as part of a normal cycle now requires investigating what changed across a year of releases, because nobody tracked it as it happened.
After two years, several things tend to be true at once. The language runtime or framework is likely approaching or past its own end of life date, meaning security patches have stopped entirely for the version you're running. Multiple major versions of key dependencies have been skipped, so upgrading isn't a single step anymore, it's a migration with its own testing burden and its own risk of breaking changes stacking on top of each other. And because nobody has been watching for it, there's a real chance a known vulnerability has been sitting in production the whole time, simply because nobody was checking.
The number that matters here: businesses that let maintenance lapse for two years typically pay 2 to 4 times the deferred maintenance cost to catch up, once you include the migration work, the extended testing needed to make sure nothing silently broke, and the investigation time spent figuring out what changed across two years of untracked updates. A business that would have spent 24,000 euros over two years on steady maintenance can end up paying 50,000 to 90,000 euros to bring the same application current in one push, and that's before counting any downtime or data issues the deferred vulnerabilities caused along the way.
Why the monthly number is cheaper than it looks
Framed as an annual percentage, software maintenance cost sounds like overhead. Framed against the two-year catch-up cost, it looks more like insurance with a predictable premium. The businesses that end up paying the most for maintenance are consistently the ones that tried to avoid paying for it at all, because the work doesn't disappear when you stop paying someone to do it. It just moves later, gets more expensive, and arrives at a moment you didn't choose.
If you're trying to work out what a realistic budget looks like for your own application, the starting point is knowing what you built and what it's still worth maintaining at that level. A short codebase assessment will tell you where your dependencies actually stand against the 15 to 25 percent range, rather than relying on a number a provider quoted you once and never revisited. For applications that have already gone past that point, an ongoing code quality consulting engagement can fold the catch-up work into a plan that gets you back to a sustainable monthly number instead of a one time emergency bill. If the application has outgrown patching entirely, legacy code modernization is the more honest conversation to have before another year of maintenance budget goes into propping up the same structural problems.
If you want a second opinion on what your current maintenance arrangement should cost, or whether a two-year gap in your own stack is already more expensive than it looks, reach out at hello@wolf-tech.io or see what we do at wolf-tech.io.
