Stripe integration
Stripe dunning that recovers more failed payments
Stripe dunning is the process of recovering subscription invoices in Stripe after a card is declined. RevRescue connects to your Stripe account with a restricted key, reads the decline code on every failed charge, times each retry per card, issuer and payday, and sends card update requests by email, SMS and in-app banner until the invoice is paid.
What a Stripe decline code tells you about recovery
Every failed charge in Stripe carries a decline code from the card issuer. That code is the single most useful signal for deciding what to do next, yet many dunning setups treat every failure the same way. RevRescue sorts declines into two families and handles each one differently.
Soft declines are temporary. The card is valid, but the charge did not go through this time, often because of low funds, a velocity limit or an issuer system hiccup. These are worth retrying at a better moment. Hard declines mean the card cannot be charged again as it is, for example a lost or stolen card or a closed account. Retrying those wastes attempts and can hurt your standing with the card networks, so RevRescue skips straight to a card update request. Read more on Stripe failed payments.
| Decline code | Type | What RevRescue does |
|---|---|---|
| insufficient_funds | Soft | Retries near the likely payday in the customer time zone |
| do_not_honor | Soft, often | Retries on a different day and hour, then asks for a new card |
| generic_decline | Soft, often | Limited retries, card update link after the second failure |
| expired_card | Hard | No retry, sends the card update page right away |
| lost_card / stolen_card | Hard | No retry, card update request with neutral wording |
| authentication_required | Action needed | Sends a link so the customer can confirm the payment |
Stripe Smart Retries compared with RevRescue
Stripe Billing includes Smart Retries, which uses machine learning to pick retry times within a window you configure, plus optional reminder emails. It is a solid default and many teams start there. RevRescue builds on the same idea and adds the parts that usually sit outside Stripe: branded multi-channel messages, a human hand-off for valuable accounts and reporting on what is still at risk.
You can run RevRescue with Smart Retries switched off so that one system owns retry timing. That avoids double attempts and keeps you inside the card network retry limits.
| Capability | Stripe built-in | RevRescue on Stripe |
|---|---|---|
| Retry timing | Smart Retries within a set window | Per decline code, card type, issuer, payday and time zone |
| Hard decline handling | Retries follow your rules | No retry, card update request immediately |
| Reminder channels | Email, SMS with consent, in-app banner | |
| Pre-expiry reminders | Basic expiring card email | Timed notes before the next renewal |
| High-value hand-off | Not included | Task for the account owner in your CRM |
| Reporting | Billing reports | Revenue at Risk, Recovered this month, ROI panel |
Restricted key permissions, and why we ask for so little
RevRescue connects through a Stripe restricted key, not your secret key. You create it in the Stripe dashboard, choose the permissions below and paste it into RevRescue. You can revoke it at any moment from the same screen. Details of how keys are stored are on the security page.
- Read on Customers, Subscriptions, Invoices, Charges and Payment Intents, so RevRescue can see failed payments and their decline codes.
- Write on Invoices, so a retry can be attempted at the chosen moment.
- Write on Setup Intents and Payment Methods, so the card update page can attach a new card to the customer.
- Read on Products and Prices, used by Leak Scan to spot stale discounts, unapplied price rises and under-billed seats.
- Webhook endpoint for invoice and payment events, so actions start within seconds of a failure.
Connecting Stripe takes about ten minutes
-
1
Create a restricted key
In Stripe go to Developers, API keys, Create restricted key, and tick the permissions listed above.
-
2
Paste it into RevRescue
Your workspace checks the permissions, imports open past-due invoices and shows them on the Revenue at Risk dashboard.
-
3
Choose who owns retries
Turn off Smart Retries in Stripe Billing settings so RevRescue times every attempt.
-
4
Brand your messages
Add your logo, sender name and tone, then switch the sequence on. The first recoveries usually show up within days.
Beyond retries on your Stripe account
Once Stripe is connected, the same data feeds the rest of RevRescue. Unpaid invoice collection follows up invoices sent for manual payment, win-back campaigns reach customers whose subscription closed after failed payments, and Leak Scan finds revenue leakage such as metered usage that never reached an invoice or renewals that were not billed. Pricing is a flat fee by MRR band, starting at 99 USD a month, never a share of what you recover. See pricing.
Frequently asked questions
Does Stripe have built-in dunning?
Yes. Stripe Billing offers Smart Retries and reminder emails. RevRescue adds retry timing per decline code, SMS and in-app messages, CRM hand-off and reporting on revenue at risk.
Should I keep Smart Retries on with RevRescue?
We recommend turning it off so one system owns retry timing. Running both can cause extra attempts on the same card.
Can RevRescue move money out of my Stripe account?
No. The restricted key has no permission for payouts, transfers or refunds, and you can revoke it at any time.
Which Stripe decline codes should not be retried?
Hard declines such as lost_card, stolen_card and many expired_card cases. The right step is a card update request, not another charge attempt.
Does it work with Stripe Checkout and Payment Links subscriptions?
Yes. Any subscription that creates Stripe invoices is covered, whatever created it.
See what your Stripe account could recover
Enter your MRR and failed payment rate. The estimate takes under a minute and needs no signup.