E-commerce SaaS
+12 points of recovery rate, with nobody at the controls
+12pts
Recovery rate
From 48% to 60% on renewals, measured against a 90-day baseline.
307
Subscriptions recovered
Including 65 that the previous setup would not have brought back.
x12
ROI
€9,478 collected over the period.
The context
This customer is an e-commerce SaaS running around €60k MRR, close to €720k annualized. Subscriptions renew monthly, and the user base is worldwide: different time zones, different languages, very different usage.
So a failed payment does not mean the same thing from one account to the next. For a daily user, it is a banking incident to flag fast. For a dormant account, the message has to start by reminding them what the product does for them.
The problem
The company already had a dunning tool in place. The issue was not a lack of outreach but its nature: one generic sequence for everyone, on a fixed schedule, blind to the decline reason and to the user (language, time zone, tenure, usage).
The result: messages landing at the wrong time, sometimes in the wrong language, and heavy users treated exactly like dormant accounts.
What Airdun did
Before / after
| Previous tool | Airdun | |
|---|---|---|
| Logic | One sequence for everyone | One case per failed payment, decided individually |
| Timing | Fixed schedule | Adapted to the user and to Stripe's retries, including staying silent when that works best |
| Language | Generic | User's language (7 languages over the period) |
| Message | Invoice reminder | Product consequence, tied to the user's actual usage |
| Retries | Stripe only | Stripe Smart Retries + Airdun adaptive retries |
| Renewal recovery rate | 48% | 60% |
An audit first, before any outreach
We started with an audit of their Stripe account: recovery rate by decline reason, payment method, country and subscription type. It showed where there was really something to win.
Setup took half a day: a Stripe connection, no engineering on their side, no data migration, nothing to maintain.
Two things were decided together. First, enrichment: Airdun pulls in what the product knows about each user (activity, tenure, usage). Second, the product consequence: what does the user actually lose if they do not update their payment method? We defined it feature by feature and placed it at the right point in the outreach. An invoice reminder asks for effort and offers nothing back. A product consequence gives the user a reason to act now.
One case per failure, several decisions per case
Airdun opens a recovery case for every failed payment. It reads the decline reason, the billing history, the user's language and real activity, then picks the action most likely to work: which channel, at what point in the recovery window. It decides again after every step.
That includes doing nothing. On some cases, the next retry is enough and the customer never needs to be contacted. On others, a heavy user is reached within hours.
A strategy built for one user, not a campaign for a segment
- Stripe's Smart Retries are respected: outreach is organized around them, not on top of them.
- Airdun's adaptive retry completes them, firing attempts when the account is active and when payday has likely landed.
- Email does most of the work; SMS steps in where it adds something.
- Every message goes out in the user's language, from Stripe where available, inferred from the country otherwise.
- Tone and argument follow usage: a daily user and an account dormant for six weeks do not get the same message.
No single recipe
There is no fixed playbook behind these numbers. After each action, the case is reassessed (opens, clicks, the bank's answer on the next retry) and everything stops the moment the payment goes through. What works on one case informs the next. The system adapted to this customer's users, and it adapts the same way to any other customer's.
The results
Over the 51 days following go-live, Airdun recovered 307 subscriptions and collected €9,478 on failed renewals.
The renewal recovery rate went from 48% to 60%: +12 points.
The baseline is consolidated data over the 90 days before Airdun, on renewals, with the previous tool in place.
At equal volume, the previous rate would have brought back 65 fewer customers who would have left without deciding to.
Next: first payments
We are now applying the same mechanics to first payments: users declined at checkout who never became customers, including those who come back later through a new subscription, which Airdun links to the original case.
Update, 88 days after go-live
The system is still running with nobody at the controls: 558 subscriptions recovered and €17,146 collected on failed renewals since go-live.
This customer chose to stay anonymous. The numbers are published with their consent.
