How to Set Up Failed Payment Recovery Emails (Dunning)

Failed payments are one of the biggest sources of preventable churn in SaaS. The customer didn't decide to leave. Their credit card just didn't work. And yet, if you don't handle it well, they're gone.
The typical scenario: a card expires, hits its limit, or gets flagged by fraud detection. Stripe retries automatically a few times. If all retries fail, the subscription gets cancelled. The customer might not even realize what happened until they try to log in and find their account suspended.
This is involuntary churn, and it's largely recoverable. A good dunning sequence (the industry term for failed payment recovery) can save 20-50% of these at-risk customers. Here's how to build one.
Understanding Why Payments Fail
Before building emails, understand the causes. Most failed payments fall into a few categories.
Expired cards are the most common cause. Credit cards expire, and users forget to update their billing information. This is completely recoverable. The customer wants to continue. They just need to enter new card details.
Insufficient funds or credit limit issues happen when a card is maxed out or the account is low. This is usually recoverable once the user is notified, though they may need a few days to resolve the underlying issue.
Fraud blocks happen when the card issuer flags the charge as potentially fraudulent. This is common with international customers or unusual spending patterns. The customer can usually resolve it by confirming the charge with their bank.
Card cancelled or closed means the card no longer exists. The user needs to provide a completely different payment method. This is still recoverable but requires more effort from the customer.
Technical issues (processor downtime, temporary holds) are rare but happen. Stripe's automatic retries usually handle these without customer involvement.
The key insight is that most failed payments are not the customer's fault and not a signal that they want to cancel. They're administrative issues that can be fixed with a reminder and an easy path to resolution.
The Scale of the Problem
Involuntary churn typically accounts for 20-40% of all churn in SaaS businesses. For a company with 2% monthly churn, roughly 0.4-0.8% of customers are lost each month due to payment failures, not dissatisfaction.
To put that in revenue terms: if you have 1,000 customers at $100/month average revenue, that's $4,000-$8,000 in monthly recurring revenue lost to payment problems. Over a year, that's $48,000-$96,000. A dunning sequence that recovers even half of these failures pays for itself many times over.
This is why dunning is often called the highest-ROI email automation in SaaS. You're not trying to convince someone to buy. You're just helping an existing, happy customer update a credit card number. The conversion rate is inherently high because intent isn't the problem.
How Dunning Fits Into Your Churn Prevention Strategy
Dunning emails address involuntary churn, which is only one part of the churn picture. Your broader churn prevention email strategy should also address voluntary churn through engagement, value demonstration, and relationship building.
The good news is that dunning is the easiest type of churn to fix. Voluntary churn requires you to change how people feel about your product. Involuntary churn just requires you to notify people about a billing issue and make it easy to fix.
When combined with Stripe payment automation, a well-built dunning system operates almost entirely on autopilot, recovering revenue while you sleep.
The Anatomy of a Dunning Sequence
A dunning sequence is a series of emails that alert the customer to a payment problem and guide them toward resolution. Most sequences include 3-5 emails over 7-14 days.
The sequence starts when a payment fails and ends when either the payment succeeds (through retry or manual update) or the subscription is cancelled. As soon as payment succeeds, the customer should be removed from the sequence immediately.
Each email in the sequence serves a different purpose. Early emails inform and assist. Later emails create urgency. The final email warns of consequences.
The tone should be helpful throughout, even as urgency increases. This isn't the customer's fault. Getting angry or accusatory will just drive them away.
Tone Matters More Than You Think
The difference between a dunning email that recovers a customer and one that loses them often comes down to tone. Consider these two approaches to the same message:
Bad tone: "PAYMENT FAILED. Your account will be suspended unless you update your payment method immediately. Failure to act will result in data loss."
Good tone: "Hey Sarah, there was a hiccup with your payment. These things happen, usually it's an expired card or a bank hold. Here's a quick link to update your info, and you'll be all set."
Both communicate the same information, but the second one feels human, helpful, and non-threatening. Customers who feel blamed or threatened are less likely to engage. Customers who feel helped are more likely to take action.
Email 1: The Immediate Alert
Send the first email immediately when a payment fails. Within minutes, not hours. The customer might still be near their computer or phone. They might be able to fix it right now.
The email should be clear about what happened without being alarming. "There was an issue processing your payment for [Product]" is better than "PAYMENT FAILED: ACTION REQUIRED." The first is informative. The second sounds like a scam.
Explain what happens next. Most payment processors (including Stripe) automatically retry failed payments. Tell the customer this is happening. "We'll automatically try again in 3 days" reduces anxiety because they know they don't need to panic.
Provide a way to fix it now. Include a direct link to update their payment method. Don't make them log in and navigate to settings. Deep link them directly to the billing page.
Offer help. Some customers don't know how to update their card, or they're confused about what happened. Include your support email and let them know you're available to help.
Immediate Alert Example
Subject: Issue with your [Product] payment
Hey [Name],
We tried to process your payment for [Product], but it didn't go through. This sometimes happens when cards expire or hit their limit.
We'll automatically try again on [date]. If you want to update your payment method now, you can do that here:
[Button: Update Payment Method]
If you're not sure what happened or need help, just reply to this email and we'll figure it out together.
[Your name]
What to Include in the Payment Update Link
The link in your dunning email should take the customer directly to a payment update page, not your homepage or a generic settings page. Ideally:
- The page should be pre-authenticated (using a secure token) so the customer doesn't need to remember their password
- The current payment method should be visible so they can see what's on file
- The form should be simple: just the new card details and a submit button
- After successful update, show a clear confirmation message
Every additional click between the email and the updated payment is friction that reduces recovery rates. If you're using Stripe integration, Stripe's Customer Portal or a custom billing page with the Stripe.js card element can handle this cleanly.
Email 2: The Follow-Up (Day 3-4)
If the automatic retry fails, send a follow-up email. By now, the customer has had a few days to potentially see the first email and take action. If they haven't, they need another nudge.
This email should reference that this is the second notification. "We tried to process your payment again, but it still didn't go through" makes clear this is ongoing.
Add some urgency, but keep it measured. "Your account is still active, but we'll need to resolve this soon" signals importance without creating panic.
Reiterate the solution. The same link to update payment, the same offer to help. Repetition is fine because some customers just need multiple reminders before they take action.
Consider suggesting specific causes. "This often happens when cards expire. If your card recently got a new expiration date, that's probably the issue." Giving people a likely explanation helps them understand what to do.
Follow-Up Example
Subject: Your [Product] payment still needs attention
Hey [Name],
We tried processing your payment again today, but it still didn't go through.
This usually means your card has expired or been replaced. If you've received a new card recently, that's likely the issue.
Updating your payment takes about 30 seconds:
[Button: Update Payment Method]
Your account is still active and everything is working normally. We just need to get this sorted in the next few days.
Questions? Just reply here.
[Your name]
Email 3: The Urgency Email (Day 7)
By day seven, you're approaching the typical window when subscriptions get cancelled for non-payment. This email needs to communicate real urgency.
Be direct about the timeline. "If we can't process your payment by [date], your subscription will be cancelled." Clear deadlines motivate action.
Explain the consequences clearly. What happens to their data? Their account? Their saved work? Users need to understand what they'll lose. "You'll lose access to your campaigns and subscriber data" is more motivating than "your subscription will be cancelled."
Make the fix as easy as possible. This is your last best chance to recover them. If you can pre-fill anything, do it. If you have a phone number and can offer to process the update over a call, offer that. Remove every possible barrier.
Consider offering to help directly. "If something's preventing you from updating your payment, let me know. I can extend your deadline or help you figure out an alternative." This personal touch can save customers who have legitimate issues.
Urgency Email Example
Subject: Action needed: your [Product] subscription
Hey [Name],
We've been trying to process your payment for the past week, but haven't been able to get it through.
If we can't process your payment by [specific date], your subscription will be cancelled and you'll lose access to:
- Your email sequences and automations
- Your subscriber list (1,247 contacts)
- Your campaign history and analytics
We don't want that to happen, and we know you probably don't either.
[Button: Update Payment Method Now]
If there's something preventing you from updating, reply to this email and I'll do whatever I can to help, including extending your deadline.
[Your name]
Email 4: The Final Warning (Day 10-12)
If you haven't recovered the customer by now, send one final email making clear that cancellation is imminent.
The subject line should be unmissable. "Your [Product] subscription will be cancelled tomorrow" is direct.
The email should be short. By this point, long explanations don't help. State the deadline, state the consequence, provide the link to fix it, and stop.
Don't be angry or guilting. Even at this stage, the tone should be "we want to keep you, here's how to make that happen." Burning bridges doesn't help anyone.
Include a way to reactivate after cancellation. "If your subscription does get cancelled, you can reactivate anytime by signing back in and updating your payment method." This reduces the finality and keeps the door open.
Email 5: Post-Cancellation (Optional)
Some companies send an email after the subscription is actually cancelled. This can recover customers who meant to update their payment but ran out of time.
Keep it simple. "Your subscription was cancelled due to payment issues. If you want to come back, you can reactivate here." Include a link to restart the subscription.
Some companies offer a discount at this stage as a final incentive. This is a judgment call. It can recover additional customers, but it can also train customers to wait for discounts. Know your economics.
If you do offer a win-back discount, limit it. "Reactivate in the next 7 days and get 20% off your first month back" creates urgency around the offer itself.
After the post-cancellation email, the customer moves out of your dunning sequence. If they don't reactivate, they become a candidate for your broader win-back email strategy.
Pre-Dunning: Preventing Failed Payments
The best dunning email is one you never have to send. Pre-dunning, or card expiration reminders, can prevent many payment failures before they happen.
If you know a customer's card expires next month (information available through Stripe's card object), send them a friendly reminder to update their payment method before the charge fails.
Subject: Your card on file expires soon
Body: "Hey [Name], the card we have on file for your [Product] subscription ends in [expiration month]. To avoid any interruption, you can update your payment method now. Takes about 30 seconds."
Pre-dunning emails have very high success rates because:
- There's no urgency or stress, it's a routine maintenance task
- The customer hasn't experienced any disruption
- The tone is purely helpful
If your payment processor provides card expiration data, set up pre-dunning emails 2-3 weeks before the card expires. This alone can reduce payment failures by 10-20%.
Technical Implementation
The technical setup requires tracking payment events and triggering emails appropriately.
Listen for Stripe's invoice.payment_failed webhook (or equivalent from your payment processor). When this fires, add the customer to your dunning sequence.
Build suppression logic immediately. The most important thing is removing customers from the sequence when payment succeeds. Listen for invoice.payment_succeeded and immediately stop the dunning sequence for that customer. Nothing looks worse than asking someone to fix their payment right after they successfully paid.
Handle the subscription cancelled event too. If the subscription is cancelled (either by the customer or automatically due to failed payment), stop the dunning sequence. They're no longer in a recoverable state through dunning, they need a different approach.
Consider the timing carefully. Don't send dunning emails in the middle of the night (customer's timezone). Don't send on weekends if you can't provide support. Time the emails for when customers can actually take action.
Test the sequence end-to-end. Create a test subscription, trigger a failed payment, verify the emails fire correctly, update the payment method, and verify the sequence stops. Do this before going live.
Webhook Events to Track
If you're using Stripe, here are the key webhooks for your dunning system:
| Webhook Event | Action |
|---|---|
invoice.payment_failed | Start dunning sequence |
invoice.payment_succeeded | Stop dunning sequence immediately |
customer.subscription.deleted | Stop dunning sequence, start win-back |
customer.source.updated | Note: payment method updated (may retry soon) |
customer.subscription.updated | Check for plan changes during dunning |
For a detailed guide on integrating these Stripe events with your email platform, see our post on Stripe email automation.
Building the Payment Update Page
Your dunning emails are only as effective as the page they link to. The payment update page should be:
Simple: Just a card input form and a submit button. No navigation, no distractions, no upsells.
Pre-authenticated: Use a secure token in the email link so customers don't need to remember their password. Password recovery friction kills dunning conversion rates.
Reassuring: Show the customer's name, their plan, and a brief confirmation of what will happen when they update ("Your subscription will continue and you'll be charged $X").
Mobile-friendly: Many customers will tap the email link on their phone. The payment form must work perfectly on mobile.
Fast: The page should load in under 2 seconds. Every second of loading time reduces the chance the customer completes the update.
Measuring Dunning Performance
The key metric is recovery rate: what percentage of customers who enter the dunning sequence successfully resolve their payment?
Good dunning sequences recover 25-40% of failed payments. Great ones can hit 50%+. If you're below 20%, there's significant room for improvement.
Track recovery by email. Which email is most effective at driving resolution? This tells you where users are most responsive and where to focus optimization efforts.
Track time to recovery. How quickly do customers fix their payment after entering the sequence? Faster is better. If most recoveries happen after the final warning email, you might be able to accelerate the sequence.
Monitor opt-outs and complaints. Dunning emails should have near-zero spam complaint rates. If customers are marking them as spam, your frequency is too high or your tone is too aggressive.
Dunning Dashboard Metrics
Build a dashboard that tracks these metrics weekly:
| Metric | Target | What It Tells You |
|---|---|---|
| Failed payments (count) | Baseline | Volume of the problem |
| Recovery rate (overall) | 40%+ | Overall sequence effectiveness |
| Recovery rate (by email) | Varies | Which emails are working |
| Time to recovery (median) | < 4 days | How quickly customers respond |
| Pre-dunning success rate | 15%+ | Are expiration reminders working |
| Revenue recovered (monthly) | Track trend | Dollar impact of dunning |
| Spam complaint rate | < 0.01% | Tone/frequency appropriateness |
| Reactivation rate (post-cancel) | 5%+ | Post-cancellation recovery |
Review these metrics monthly. Look for trends: is your recovery rate improving or declining? Are certain customer segments harder to recover? Is a particular email in the sequence underperforming?
Common Mistakes
Waiting too long to start the sequence is the biggest mistake. If your first dunning email goes out days after the payment fails, you've lost the moment. Send immediately.
Being too aggressive hurts more than it helps. Daily emails begging for payment feel desperate and annoying. Space your emails appropriately and maintain a professional tone.
Not removing recovered customers is embarrassing. If someone updates their payment and then gets a "your payment failed" email, they'll question your competence. Build robust suppression logic.
Forgetting to explain the resolution path leaves customers stuck. Every dunning email should include a clear, direct link to fix the problem. Don't assume they know where to go.
Not offering human help misses recoverable customers. Some people have legitimate issues that need personal attention. A "reply to this email" option or a support link can save customers who can't self-serve.
More Mistakes to Watch For
Using a no-reply sender address. Dunning emails should absolutely be replyable. Some customers will have questions, confusion, or legitimate issues that require human help. If they can't reply to your dunning email, they may give up entirely.
Not accounting for multiple failed payments. If a customer has failed payments in consecutive months, they might enter your dunning sequence twice. Make sure your system handles this gracefully. Don't send the same sequence they just completed last month; instead, escalate to a more direct approach.
Treating all failure reasons the same. An expired card requires different messaging than an insufficient funds situation. If your payment processor provides the failure reason, use it to personalize the email. "It looks like your card has expired" is more helpful than "there was an issue with your payment."
Not testing the update flow regularly. Payment pages, authentication flows, and billing systems change. Test your dunning flow quarterly to make sure the links still work, the payment form still functions, and the suppression logic still fires correctly.
The Business Impact
Dunning done well has an outsized impact on revenue. Consider the math.
If you have 1000 paying customers at $50/month, and 3% experience failed payments each month (30 customers), and your default recovery rate without dunning is 30%, you're losing 21 customers per month to involuntary churn. That's $1,050/month in lost MRR.
A good dunning sequence that improves recovery to 50% saves 6 additional customers per month. That's $300/month in recovered MRR. Over a year, that's $3,600 in revenue you would have lost without the sequence.
At larger scale, the numbers get more significant. Dunning is one of the highest-ROI email sequences you can build because every recovery is real revenue saved with no acquisition cost.
The Compounding Effect
The revenue impact of dunning compounds over time. Each customer you recover this month continues to pay in future months. That $300/month in recovered MRR doesn't reset each month. It adds to the customers you recovered in previous months.
If you recover 6 customers per month and their average lifetime is 12 months:
- Month 1: $300 recovered MRR
- Month 6: $1,800 recovered MRR (from 6 months of recoveries, minus natural churn)
- Month 12: ~$3,000+ recovered MRR
Over a year, the cumulative revenue impact can be $20,000-$40,000 for even a modest-sized SaaS. At scale, it's much more.
Invest the time to build it right. Test and optimize it. Track its performance. Your dunning sequence might be the most valuable email automation in your entire system.
Frequently Asked Questions
How soon after a payment fails should I send the first email?
Immediately, within minutes. The customer may still be at their computer or on their phone. The sooner they learn about the issue, the sooner they can fix it. Some companies wait for the first automatic retry to fail before emailing, but I recommend sending after the first failure with a note that you'll retry automatically.
Should I suspend the customer's account during the dunning period?
No. Keep the account fully functional throughout the dunning period. Suspending access gives the customer nothing to lose by not paying, which actually reduces recovery rates. Let them continue using your product so they remember why they're paying for it. Only restrict access after the dunning sequence ends and the subscription is formally cancelled.
How many retry attempts should Stripe make before I cancel?
The standard Stripe Smart Retries configuration works well for most SaaS companies (usually 3-4 attempts over 7-10 days). You can configure this in Stripe's billing settings. Your dunning email sequence should run in parallel with these retries, so the customer has the opportunity to fix the issue manually even as Stripe retries automatically.
Should dunning emails look different from marketing emails?
Yes. Dunning emails should feel transactional and personal, not promotional. Use a plain or simple template, send from a person's name (not a brand), and keep the design minimal. The goal is to feel like a helpful note from a real person, not a marketing campaign. This increases open rates and response rates.
What should I do if a customer replies to a dunning email with a question?
Respond personally and quickly. Dunning replies often contain information that helps you recover the customer: "I got a new card but don't know how to update it," "I'm between jobs, can I pause?", or "I actually want to cancel." Each of these has a different resolution, and a fast, human response can save the relationship.
Can I prevent some payment failures proactively?
Yes. Send pre-dunning emails 2-3 weeks before a card on file expires. Also consider enabling Stripe's automatic card updater feature, which automatically updates card details when banks issue replacement cards. Between pre-dunning emails and automatic card updates, you can prevent 20-30% of payment failures before they happen.
How do I handle dunning for annual subscriptions?
Annual subscription dunning is higher-stakes because the payment amount is larger and the customer loss is more significant. Consider a longer dunning window (14-21 days instead of 7-14), offer to switch to monthly billing as a fallback, and be more proactive about personal outreach. An annual customer is worth 12x a monthly payment, so the recovery effort should reflect that value.
Should I offer a discount to recover a failed payment?
Generally, no. Failed payments are administrative issues, not price objections. The customer isn't unhappy with your product; they just need to update a card. Offering a discount implies that price was the problem, which it wasn't. Save discounts for win-back campaigns targeting customers who voluntarily cancelled. For involuntary churn, focus on making the payment update as easy as possible.