Failed payments are the silent killer of SaaS revenue. The average SaaS company loses 9% of MRR to involuntary churn from failed credit card charges. That means if you're at $50K MRR, you're losing $4,500 every single month.
Stripe's built-in Smart Retries help, but they only solve half the problem. Here are 5 dunning best practices that can push your recovery rate above 40%.
1. Send the first email within 1 hour of failure
Timing matters more than copy. Most SaaS companies wait 24-48 hours before their first dunning email. By then, the customer has forgotten about the failed charge.
The first email should go out within 60 minutes. Keep it simple: "Your payment failed. Here's a link to update your card." No upsells, no newsletters, no fluff.
Why this works: the customer likely just got a bank notification about the declined charge. Your email arrives while they're still thinking about it.
2. Use a 4-email sequence with escalating urgency
One email isn't enough. A single dunning email recovers about 15% of failed payments. A well-timed 4-email sequence recovers 35-45%.
Here's the sequence that works:
- Day 0: Friendly notification. "Your payment didn't go through. Update your card here."
- Day 3: Helpful follow-up. "Still having trouble? Here's how to update your payment method."
- Day 7: Urgency. "Your subscription will be paused soon if payment isn't resolved."
- Day 12: Final notice. "Last chance to keep your account active."
The key is escalation. Each email should feel slightly more urgent than the last.
3. Don't fight Stripe Smart Retries -- complement them
A common mistake: building custom retry logic on top of Stripe. Stripe's Smart Retries already use ML to find the optimal retry timing based on billions of data points. You can't beat that.
Instead, focus on what Stripe doesn't do well: communicating with the customer. Stripe retries the charge silently. Your job is to get the customer to update their payment method so the next retry succeeds.
This is the combo that works:
- Stripe handles retry timing (automatic, ML-optimized)
- You handle customer communication (dunning emails)
4. Alert customers BEFORE their card expires
The cheapest failed payment to recover is one that never happens. Stripe provides card expiration data via the card.exp_month and card.exp_year fields.
Send a friendly email 30 days and 7 days before expiration: "Your card ending in 4242 expires next month. Update it now to avoid any interruption."
This alone can prevent 20-30% of future payment failures. It's the highest-ROI dunning tactic because the customer hasn't churned yet -- they're still engaged.
5. Track recovery metrics religiously
You can't improve what you don't measure. Track these metrics monthly:
- Recovery rate: % of failed payments that are eventually paid
- MRR at risk: Total dollar value of currently failed subscriptions
- Time to recovery: Average days between failure and successful payment
- Email open/click rates: Which emails in your sequence perform best
If your recovery rate is below 30%, you have low-hanging fruit. If it's above 50%, you're doing well.
The bottom line
Most SaaS founders focus on acquiring new customers while ignoring the revenue leaking out the bottom. Fixing failed payments is the highest-ROI growth activity because:
- These are customers who already want your product
- Recovery costs almost nothing compared to acquisition
- The revenue improvement is immediate and permanent
If you're running a Stripe-based SaaS and want to automate all of this, Rebill handles smart dunning emails, expiring card alerts, and win-back campaigns starting at $19/mo. It connects to your Stripe account in 30 seconds and starts recovering revenue on day one.
Or you can build it yourself -- the practices above work regardless of the tool you use. The important thing is to start recovering that 9% today.
What's your current recovery rate? Drop a comment below.
Top comments (0)