Operated function · payment recovery

They did not cancel. Their card did, and nobody told them.

A meaningful part of most subscription churn is not a decision. It is an expired card, a reissued number after a fraud alert, a bank that declined a foreign merchant, or a limit reached on the wrong day — and the customer usually finds out when the service stops, if they notice at all.

What happens between a decline and a customer disappearing

The charge fails. Somewhere a retry schedule starts, usually the one the payment processor ships with, usually the same three attempts on the same three days regardless of why the charge failed. A card that expired and a card that hit a limit are treated identically, and only one of those is likely to succeed on a retry.

An email goes out. It is written in billing language, it comes from a no-reply address, and a good share of it lands in a promotions tab or a spam folder — because a message about a payment failure looks, to a filter, exactly like the messages that impersonate one.

The customer is busy. They are not ignoring you; the service still works for a while, nothing blocks them, and the email did not reach the top of an inbox. Then access stops, and the moment they notice is the moment the relationship is hardest to repair, because now you are asking them to re-enter a card after an outage you caused.

Internally the number lands in churn. It is reported alongside the customers who evaluated the product and decided against it, which makes the churn figure a blend of two completely different problems with two completely different fixes, and the blend hides both.

And the recovery work, where it exists, is a batch job somebody runs monthly. By then the group that was easy to recover has stopped thinking of themselves as customers.

One retry schedule cannot serve reasons that behave differently

Decline reasons have materially different recovery odds and different correct actions, and most operations apply a single retry cadence and a single message to all of them.

An expired card needs a new number and no amount of retrying produces one. A hard decline needs a different instrument. A soft decline for insufficient funds frequently succeeds on a different day of the month, and retrying on day two is close to the worst timing available. Treating those as one queue guarantees that most of the effort is spent where it cannot work.

Separating them is most of the gain, and it requires only the decline reason, which the processor already returns. Once the reason is on the record, the retry becomes conditional and the message becomes specific — and a specific message reaches a person, because it does not read like a template.

The second half is reachability. If the only route to updating a card is an email that filters badly to a billing screen behind a login, then the operation depends on the least reliable link in the chain. Reaching the customer on a channel they actually answer, with a route that takes seconds, is what converts an identified failure into a recovered one.

And the recovered customer should be counted separately from the retained one, because a business that cannot tell involuntary churn from voluntary churn is measuring its product on a number that is partly about banks.

What moves, and how you would know

Involuntary churn, separated from voluntary for the first time — measured by cancellations attributable to a payment failure versus a customer decision, split rather than blended.

Recovery rate by decline reason — measured by recovered subscriptions per reason code against your own prior period, rather than one blended figure.

Wasted retries against reasons that cannot succeed — measured by retry attempts on expired-card and hard-decline reasons, before and after.

Whether the customer was ever actually reached — measured by delivery and open evidence per channel, against the previous email-only route.

Time from failure to recovery — measured by elapsed hours from first decline to a successful charge, and the tail of that distribution.

Repeat failures on the same customer — measured by accounts failing again within two cycles, which is the signal that the cause was never addressed.

that customers who chose to leave are recovered, and no card is stored, handled or entered on a customer’s behalf. Payment instruments stay with your processor. Nothing here touches card data, and any operation that offered to would be creating a compliance problem rather than solving a revenue one.

Beside your processor, never holding a card

This reads subscription and payment state from your billing system, including the decline reason your processor already returns and most operations discard. It does not hold, transmit or enter a payment instrument, and the update route always terminates in your own processor’s hosted surface.

That boundary is deliberate and it is not negotiable by configuration. Card data belongs inside your processor’s scope, and an operation that pulled it out would move your compliance boundary in exchange for a small convenience.

Outbound goes through channels you already own, from your domain, so the message a customer receives about their payment comes from the business they pay.

What is touched, and what is never touched

No card number, no security code, no bank credential — not stored, not transmitted, not typed on a customer’s behalf, and not read from your processor. What is read is state: that a charge failed, when, and the reason code.

Every contact carries a receipt naming the channel, the message sent, the time and the outcome. A customer who says they were contacted too often, or not at all, is answered from a record rather than from memory.

Frequency is bounded by your rule rather than by what performs. A recovery sequence that maximises contact will recover marginally more and cost you the customers it annoyed, and the operation should not be measured in a way that rewards that.

Operational access is not permission to train. Customer, subscription and payment-state data does not become material improving anything serving another organisation.

Payments, security, and whoever owns the customer relationship

The first question from security is always about card data, and the answer is that none is reached. The scope document states that before anything is connected, because a payment operation that is vague on this point deserves the longer review it will get.

Marketing or customer-success will want the frequency cap and the message tone, and they are right to — a recovery sequence is an outbound campaign to paying customers, and it should be governed like one.

Where an obligation attaches through your processor agreement, your card-network rules or a jurisdiction, it is marked applicability-gated rather than presented as standing.

One month of declines, classified, with nobody contacted

A single trailing period of failed charges — read-only, no retries changed and no customer contacted — classified by decline reason and by what happened next.

Observation contacts nobody and changes no retry schedule. It produces the split most subscription businesses have never seen: how much of last month’s churn was a decision, how much was an instrument, and which reason codes dominate.

That number decides whether there is anything here worth doing. If involuntary churn is a small share, stop — you have a product or pricing question and a recovery operation would be treating the wrong thing.

If it is large, the first change is the cheapest one available and it is not outbound at all: stop retrying the reasons that cannot succeed, and time the ones that can. Messaging comes after that, on approved language, with the frequency cap set first.

Questions buyers actually ask

Our processor already does dunning.

It retries and it emails, both on a schedule that does not vary by reason — which is the specific thing this addresses. If your current setup can tell you recovery rate by decline reason, and is skipping retries on reasons that cannot succeed, then it is doing the work and you should not buy this. Most default configurations do neither, and the observation phase settles it in a week without changing anything.

This is just churn. The real fix is a better product.

For voluntary churn, yes, and nothing here improves a product. The argument is that the two are reported as one number, so the product conversation is being had over a figure that is partly about banks. Splitting them makes the product problem smaller and clearer, which usually makes it more actionable rather than less.

We are not giving anyone access to our payment data.

No cardholder data is reached — not stored, not transmitted, not entered on a customer’s behalf, and not read from your processor. What is read is state: a charge failed, when, and the reason code your processor already returns. The update route always finishes inside your processor’s own hosted surface. That is written into the scope before anything connects, and if your security team wants it narrower, narrower is available.

Chasing customers about money will make more of them leave.

It can, which is why frequency is capped by your rule rather than tuned for recovery, and why the operation should not be measured on recovery alone. The distinction that makes this different from a collections sequence is that these customers still want the service — they have not decided anything. A clear, specific, once-or-twice message about a card that expired reads as helpful. Six reads as harassment, and the cap is what prevents the second.