The half-million dollars we had already earned
Written by Codeway
Listen to this article
4:26
Introduction
Nobody churned on purpose. A card expired, a bank declined a routine renewal, and the revenue left anyway — until we started treating failed payments as a system rather than an accident.
There are two kinds of cancellation. In the first, somebody decides your product is not worth the money — that one is a product problem, and it is the honest kind. In the second, a card expires, a bank declines a renewal it has approved eleven times before, or a payment retries at three in the morning on a Sunday and fails. Nobody decided anything. The subscription ends anyway.
The industry has a bloodless name for the second kind: involuntary churn. It is worth being blunter. That is revenue you already earned from a customer who still wants the product, lost to plumbing.
What we inherited when we left the App Store
For most of our history the platform stores handled this for us. When you sell through the App Store, Apple runs the payment, the retries, the tax and most of the billing support, and takes a commission for it. Moving subscriptions to the web changed the economics in our favour and handed us the entire back office at the same time.
At the scale we operate — more than sixty products, users in effectively every market — that back office is not a task, it is a department. Payment processing, subscription state, tax registration and filing in dozens of jurisdictions, billing questions in dozens of languages. All of it real work, none of it work that makes any of our apps better.
“The time we spent on operational tasks could have been better allocated to growth initiatives.”
So we did not build it. Paddle acts as merchant of record: the payments, the subscription lifecycle, the tax compliance and the billing support sit with them, under one integration, and our engineers and finance team went back to the portfolio.
Retrying like it matters
The part we underrated was retry logic. A failed charge is not one event with one cause. It is an expired card, or a daily limit, or an issuer’s fraud heuristic having a bad afternoon, or a soft decline that would clear on Tuesday. Retrying all of those the same way, on the same schedule, is how you convert a temporary decline into a permanent cancellation.
Retain retries against the specifics: the failure code, the card type, where the payment came from, the day and time most likely to clear. Alongside it runs the unglamorous half — email, in-app and SMS prompts asking the customer to update a card, which only works if the messages are clear about what is being charged and when.
- recovered from failed payments
- $500K+
- of failed payments recovered
- 36%
- products on one billing stack
- 60+
Thirty-six percent of the payments that had already failed came back. That figure lands differently once you know the industry backdrop: billing failures are commonly cited as driving twenty to forty percent of subscription churn, with around a tenth of subscription revenue lost to failed payments before anyone tries to recover it. This is not a rounding error hiding in the payments layer. For a subscription business it is one of the largest single line items nobody owns.
“It’s been a remarkable boost to our bottom line.”
The lesson we would pass on
Growth teams instrument the funnel obsessively up to the moment of purchase and then stop. Everything after the first successful charge — renewals, declines, retries, dunning, disputes — tends to belong to nobody in particular, which is exactly why it leaks. Half a million dollars was sitting in that gap. It was not new revenue. We had already earned it.



