Problems & solutions · Custom Software

Subscription Management Software Problems: The 5 That Cost Real Money, and How to Avoid Them

Subscription Management Software code editor and API illustration showing common problems and fixes.
The short answer

The most expensive failure in this category is the payment vault migration, because a botched token cutover either double charges thousands of subscribers in one billing run or silently loses the cards behind them, and both outcomes hit every subscriber you have on the same morning. The recovery is not technical. It is a support queue you cannot staff, chargebacks that follow for months, and a churn spike among exactly the long tenure subscribers who were the reason the business was worth rebuilding.

Why does the plan data model get underscoped so often?

Briefs in this category are usually written as a list of features the current tool cannot do. Prepaid gifts that convert to monthly. Loyalty pricing that steps down at month four and again at month seven. Build a box with swappable slots. Each is a reasonable request and each gets quoted as a feature, which is precisely the mistake, because they are all the same underlying problem: the plan is not modelled as a thing in its own right.

Off the shelf tools assume one product, one frequency, one discount, and the workarounds you already run on top of that assumption are duplicate product trees per price tier, discount logic layered through storefront functions, or middleware that rewrites line items after the charge. Every one of those creates a place where the price shown, the price charged and the price in your accounts can disagree, and finance finds the disagreement at month close. A custom build that copies the same flat model just moves the workarounds into code you now maintain.

The failure surfaces about four months in, when the retention team asks for an offer that requires a price change to apply to new signups without touching existing contracts, and the answer is that every subscription row holds its own price.

Scope it out in the first design session. Plans, subscriptions, entitlements and orders should be separate objects. Plans should be versioned so pricing changes apply forward without a migration across live contracts. Entitlements should resolve to stock keeping units at fulfilment time rather than at signup, which makes swaps and substitutions native instead of a hack. And scheduled mutations, such as converting a prepaid gift to monthly at renewal six, should execute inside the billing run with an audit trail. If a developer says they store the next charge date on the subscription row and calls that done, they have not run this at scale.

What goes wrong when subscribers and payment tokens are migrated?

This is the workstream that gets underestimated in almost every quote, and it is the one that can genuinely damage the business rather than merely delay it.

In most cases the card tokens live in the underlying gateway rather than in the subscription tool, which means a new platform can reuse them directly. That is the good case and it is common. The bad cases are specific. Where the vault sits with the processor rather than in your own gateway account, tokens have to move through an established provider to provider process with lead times you do not control. Where you have changed processors historically, some subscribers are on tokens from an older relationship that nobody has tested in years. And network tokens do not behave identically to raw card tokens across every gateway, which is discovered during the first real billing run rather than during testing.

The second half of the problem is state, not cards. Paused subscriptions with future resume dates, prepaid balances with remaining shipments, skipped cycles, subscribers mid way through a discount ladder, and anyone with a support promise recorded only in a ticket. Migrating the subscription without the state produces a charge on the wrong date for a customer who thought they had paused until September.

Run it as its own workstream with its own timeline. Migrate a segment first, no more than a few hundred subscribers, and run both engines in parallel across one full billing cycle with a reconciliation report comparing every charge either system intended to make. Build an idempotency guard that makes a duplicate charge structurally impossible during the overlap, rather than relying on operational care. And keep a documented rollback for the first three cycles.

Why do the storefront, lifecycle and fulfilment integrations break after launch?

A subscription platform is a hub, which means it inherits every neighbour's instability.

Webhooks are the usual culprit. Storefront platforms retry, so the same charge or order event arrives twice, sometimes minutes apart and sometimes hours later after a delivery failure. A handler that is not idempotent creates a duplicate order in fulfilment, which becomes a duplicate shipment and a refund. Lifecycle email is the second. If your platform pushes unversioned event payloads into a marketing tool, a schema change silently breaks a flow, and the first symptom is that dunning emails stopped going out three weeks ago and nobody noticed because the charges kept failing normally.

Fulfilment breaks on timing rather than format. Third party logistics providers have cutoffs, and a subscription tool that releases an order the moment a charge clears gives support no window to fix an address, so the shipment goes to the old one and you pay for the reship.

The fixes are all cheap if designed in. Make every webhook handler idempotent on the provider's event identifier and store processed identifiers long enough to catch a late retry. Version your outbound event contracts so a consumer breaks loudly rather than quietly. Alarm on absence, not just error, because a stream that stops arriving looks identical to a quiet week. And put a deliberate hold window between charge and order release so support can amend addresses and swap items before the cutoff. That last one removes a whole category of reshipment cost on its own.

What happens when dunning, tax and card handling are not covered?

Three obligations get deferred and each has a direct financial consequence.

Dunning first. A fixed retry ladder treats an insufficient funds decline, a do not honour and an expired card as the same event, which wastes attempts on dead cards and gives up on customers who simply get paid mid month. Route on the decline code instead: insufficient funds waits and retries near the dates accounts refill, expired and lost card declines skip retries entirely and go to an update card flow backed by the network card updater available through your gateway, and annual or prepaid renewals get a pre billing notice ahead of the charge, which prevents both declines and chargebacks. In the retention builds we have shipped, the recoveries came from timing and card updater coverage rather than from sending another email.

Second, card handling. The right posture is that your platform never touches raw card numbers. Gateway hosted fields and stored tokens keep your compliance scope light, every billing change writes to an immutable audit log, and support agents get role based access rather than a shared admin login. Builds that accept card data directly to save a week create an obligation that lasts forever.

Third, tax and consent on recurring charges. Rates change and jurisdictions differ, and a subscription that was priced with tax included at signup will be wrong eventually unless tax is calculated at charge time. Pre billing notices for long cycle renewals are also increasingly expected by card networks and by customers, and they are far cheaper than the disputes they prevent.

Should you build custom or configure what you already own?

Recharge is genuinely the right answer for a lot of brands and we would say so before quoting. Under roughly 10,000 subscribers, with one or two cadences, standard discounts and nobody whose actual job is retention, the platform fees will cost less than any engineering you could buy, and a custom build is an expensive way to feel in control.

A lateral move is also legitimate. Skio, Stay Ai and Loop Subscriptions each relieve specific pains, and if your problem is one flow rather than your whole model, that is a much smaller decision. Understand what you are buying, which is a different vendor's data model rather than your own, and check the specific thing you need before you move rather than after.

The build case is concrete rather than emotional. Percentage based platform fees at your revenue level are now a large annual number that recurs every year. You already maintain middleware around the tool, which means you are carrying custom software while getting none of its advantages. And your retention roadmap contains offers the platform cannot represent that have been carried over for two quarters. If subscriptions are the business rather than a feature and two of those three are true, build. If only one is true, fix that one thing and revisit in six months.

How do hidden costs get into the quote?

Five items sit outside most quotes in this category. Payment vault migration, which is discussed above and which is a workstream, not a task. Historical order import, because cohort analytics only work if several years of history are in the system, and a quote scoped on live subscribers will not include it.

Third, the number of plan permutations modelled on day one, since each unusual construct your commercial team has sold over the years is a rule, and there are always more of them than anyone remembers. Ask for a list before pricing. Fourth, multi entity and multi currency accounting, which changes the ledger design rather than adding a field. Fifth, the parallel run itself, which needs engineering attention across at least one full billing cycle and is real cost that is routinely treated as launch week.

Attach a written exclusion list to a fixed first release. Name the currencies, the storefronts and the plan types in scope. A quote with no exclusions is not cheaper, it is simply less specific about what you will pay for later.

What separates a build that works from one that fails here?

The builds that work are event ledgers from day one. Every state change, created, paused, skipped, plan changed, payment failed, payment recovered, cancelled, is an immutable event streamed to your warehouse as it happens. Recurring revenue, cohort curves and recovery attribution then become queries rather than projects, and finance reconciles gateway payouts against the ledger automatically. Builds that store current state and reconstruct history later never produce trustworthy numbers, and the board deck goes back to depending on whoever maintains the spreadsheet.

The second differentiator is the cutover discipline described above: a segment first, one full billing cycle in parallel, a reconciliation report on every intended charge, and a rollback you have actually tested. Brands that cut over everyone at once on the first of the month are gambling their entire subscriber base on a single billing run.

The third is ownership. Full assignment of the code, the repository and the infrastructure accounts in your company name from the first commit, written into the contract before work starts. You are rebuilding this because you did not want to live inside someone else's data model. Ending up inside your agency's is the same outcome with a smaller support team.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. A 0.1-second improvement in mobile site speed increased retail conversions by 8.4% and average order value by 9.2%; travel conversions rose 10.1%. Source: Deloitte & Google (2020) →
  2. Standish's 2015 CHAOS research found roughly a third of software projects (about 36% by the Modern definition) fully succeed on time, on budget, and on scope, with top success drivers including executive support, user involvement, and clear requirements/business objectives. Source: Standish Group (CHAOS Report) (2015) →
  3. An EY survey found one in five U.S. payrolls contains errors, each costing an average of $291 to remediate, with a typical 1,000-employee organization spending roughly 29 workweeks per year fixing common payroll errors. Source: EY (Ernst & Young) (2022) →
  4. Total US training expenditure rose 4.9% to $102.8 billion; learning management systems were used at 89% of organizations (90% of large, 97% of midsize, 84% of small companies), with average training at 40 hours per employee and $874 spent per learner. Source: Training Magazine (2025) →
Aaradhya R. · Senior Backend Engineer · Python · Delhi

Aaradhya builds Python backends at Digital Heroes, from APIs and scheduled jobs to data processing behind reporting and automation features. Her posts suit readers trying to understand what sits between a business process they want automated and software that can actually run it.

View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

What is the safest way to cut over from Recharge without double charging anyone?
Migrate a segment of a few hundred subscribers first and run both engines in parallel across one full billing cycle, with a reconciliation report comparing every charge each system intended to make. Add an idempotency guard keyed on the subscription and the billing period so a duplicate charge is structurally impossible during the overlap rather than merely unlikely. Keep a tested rollback for the first three cycles, because problems surface on the second run more often than the first.
Do subscribers have to re enter card details when we move platforms?
Usually not, because the tokens typically live in the underlying gateway rather than in the subscription tool, so a new platform can reuse them. The exceptions matter: where the vault sits with the processor, tokens move through a provider to provider process with lead times you do not control, and subscribers still on tokens from an older processor relationship need testing well before cutover. Ask which of these applies to your account before anyone quotes the migration.
Our pause and prepaid states did not survive migration. How is that avoided?
By migrating state rather than subscriptions. Paused subscriptions with future resume dates, prepaid balances with remaining shipments, skipped cycles, subscribers part way through a discount ladder and any promise recorded only in a support ticket all need explicit mapping and explicit test cases. The failure looks like a charge on the wrong date for a customer who believed they had paused until September, which is both a refund and a cancellation from someone who had been staying.
Why did our dunning emails stop without anyone noticing?
Almost certainly an unversioned event contract into your lifecycle email tool, where a payload change broke a flow silently. Charges kept failing normally, so nothing looked wrong from the billing side. Version outbound event contracts so consumers break loudly, and alarm on absence rather than only on error, since a stream that stops arriving is indistinguishable from a quiet period. Add a weekly check that counts dunning messages sent against declines recorded.
Which dunning changes actually recover money?
Routing on the decline code and fixing the timing. Insufficient funds should wait and retry around the dates accounts refill rather than on a fixed ladder, expired and lost card declines should skip retries entirely and go straight to an update card flow, and the network card updater through your gateway refreshes many cards without customer involvement. Long cycle renewals should get a pre billing notice, which prevents both declines and disputes. Additional emails are the least effective lever available.
Do we take on heavy compliance obligations by running our own billing?
Only if you handle raw card numbers, which you should not. Using gateway hosted payment fields and stored tokens keeps your scope at the lightest self assessment tier, because the gateway holds the card data and your system holds a reference to it. Add an immutable audit log on every billing change and role based access for support agents rather than a shared admin login. Any developer proposing to accept card data directly is creating a permanent obligation to save a week.
What is the most commonly missed cost in a custom subscription quote?
Historical order import. Cohort analytics only work if several years of history are in the system on day one, and quotes are routinely scoped against live subscribers only, so the feature that justified the project arrives a year late. After that it is the count of plan permutations your commercial team has sold over the years, which is always larger than anyone remembers, and the parallel run itself, which needs engineering attention across a full billing cycle.
Should we replace the storefront checkout at the same time?
No, and most brands should not do it at all in the first release. Keep the existing checkout handling acquisition while the custom engine takes over recurring billing through your gateway and pushes renewal orders onward. Owning the full purchase path is a later decision, usually worth it only for multi region brands that have hit real constraints. Combining a checkout replacement with a vault migration means two high risk cutovers landing on the same billing run.
How long does it take from first call to software my team can actually use?
Plan for four to six months: two to three weeks of discovery, two to four weeks of design, then a 10 to 16 week build with testing. In Digital Heroes delivery experience the schedule killer is not engineering speed but decision lag; a client who takes two weeks to approve wireframes adds two weeks to launch. Book a weekly 30-minute decision slot before kickoff and most of that risk disappears.
How much should a small business budget for its first custom app or website?
For a focused first build, most small businesses land between $8,000 and $60,000: roughly $8,000 to $45,000 for a custom website and $25,000 to $60,000 for an internal tool or simple web app, based on Digital Heroes delivery across 2,000+ projects. Customer-facing products with payments, logins, or a mobile app start around $40,000. Quotes far below these bands usually mean a template with your logo on it, not software shaped around your workflow.
Is it cheaper to customize Salesforce than to build a custom CRM from scratch?
If you use less than a third of what Salesforce does, a custom CRM is often cheaper by year three. Salesforce Enterprise lists at $165 per user per month, so 25 seats cost about $49,500 a year before admin and consultant fees, while a focused custom CRM runs $60,000 to $100,000 once plus 15 to 20% a year in maintenance. If you genuinely need Salesforce's ecosystem, reporting, and app marketplace, customizing it beats rebuilding it; the mistake is paying enterprise prices to use it as a glorified contact list.
How many people should be working on my software project?
A typical $40,000 to $150,000 build runs on three to five people: a technical lead, one or two developers, a designer, and someone owning QA and project communication, often as overlapping part-time roles. More bodies do not make software arrive faster; past a point they slow it down with coordination overhead. The question that matters more than headcount is whether one named senior engineer is accountable for the outcome.
What happens if I stop paying for maintenance after launch?
Nothing breaks on day one, which is what makes it dangerous. Within 6 to 18 months, unpatched dependencies accumulate known vulnerabilities, an integrated API like Stripe ships a breaking change, and the first fix requires a developer to relearn a stale codebase at full price. Budget 15 to 20% of the build cost per year for upkeep; it is the difference between a $500 patch and a $15,000 emergency.
What is a discovery phase, and is it worth paying for separately?
Pay for it, and treat the output as yours. A discovery phase runs two to three weeks, typically 5 to 10% of the eventual build budget, and produces a written scope, wireframes, and a fixed quote you can take to any vendor, including a competitor of the agency that wrote it. Skipping it is how projects end up quoted from a two-paragraph email and delivered at twice the price.
Couldn't I just build my app in Bubble or another no-code tool instead of hiring an agency?
For validating an idea with real users, yes, and we tell clients that honestly. The walls come later: Bubble apps cannot be exported as code to run anywhere else, performance drops on complex data operations, and usage-based pricing climbs as you grow. A meaningful share of Digital Heroes custom builds are rebuilds of no-code MVPs that proved the business worked, which is the system operating as intended: validate cheap, then build the version that scales.
What questions should I ask a development agency on the first call?
Ask who exactly will build it, what happens when scope changes mid-project, what their maintenance terms are after launch, and what they will need from you every week. Then ask them to describe a project that went wrong and what they changed afterward; teams that have shipped at real volume have war stories, and teams claiming a perfect record are hiding something. The scope-change answer matters most: a disciplined shop describes a written change-order process, not a vague promise to be flexible.
Should I ask for a fixed price or pay the agency hourly?
Fixed price for the first version, hourly or retainer for what comes after launch. A fixed-scope, fixed-price V1 puts the estimation risk on the agency, which is exactly where you want it while trust is unproven; hourly billing on an unscoped greenfield build is a blank check. After launch, flip it, because maintenance and small features arrive unpredictably and fixed-pricing every ticket wastes everyone's time.
What is the biggest mistake first-time software buyers make?
Choosing the lowest quote without asking why it is the lowest. A bid 40% under the field usually gets there by skipping tests, documentation, and code review, which are invisible in a demo and brutal to pay for later; every stalled project Digital Heroes has been asked to rescue tells some version of that story. The second mistake is signing without a written scope, which reliably turns the winning cheap quote into 1.5x to 2x the price by launch.
How much should a small business expect to pay for custom software?
Across 2,000+ Digital Heroes projects, a small business system that replaces spreadsheets or one core workflow typically lands between $40,000 and $80,000, with more complex first versions running up to $150,000. The two levers that move the number most are integrations and user roles, not the team's hourly rate. Any quote under $15,000 for a full production system means the vendor has not understood your scope yet.
How do I calculate whether custom software will pay for itself?
Divide the build cost by the monthly benefit, where benefit is hours saved times loaded hourly cost, plus subscription fees replaced, plus any revenue the software unlocks. Three staff saving 10 hours a week each at a $40 loaded rate is about $62,000 a year, which pays back a $60,000 build in roughly 12 months. Across Digital Heroes internal-tool projects, 12 to 24 months is the normal payback range, and anything projecting under 6 months usually means the spreadsheet is hiding costs.
Who can build a custom software system?

Digital Heroes builds custom software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other software companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?