Your payment just failed. The customer does not know. Their subscription is about to cancel. And the only thing standing between you and lost revenue is the email you send next.

That email is called a dunning email, and for most SaaS businesses, it is the single most important email you will ever send. Get it right, and you recover revenue that was about to walk out the door. Get it wrong — or worse, do not send one at all — and you lose a customer who never intended to leave.

This guide covers everything you need to know about dunning email best practices: what they are, the ideal sequence, subject lines that actually get opened, the right tone to strike, common mistakes to avoid, and real examples of what works and what does not.

What Are Dunning Emails?

Dunning emails are the messages you send to customers when their subscription payment fails. The term "dunning" comes from the old practice of making persistent demands for payment of a debt. In the SaaS world, it is less about demanding and more about notifying and making it easy to fix.

When a customer's credit card is declined — whether because the card expired, the bank flagged the charge, or there were insufficient funds — somebody needs to tell the customer what happened and guide them toward a solution. That is what dunning emails do.

Dunning emails are part of a broader failed payment recovery strategy that also includes smart retry logic and payment update pages. Retries handle soft declines (temporary issues where retrying the same card later might work). Dunning emails handle hard declines (situations where the customer needs to take action, like entering a new card number).

The two work together. While your retry system handles the automatic recoveries in the background, your dunning emails handle the cases that need human intervention.

The Ideal 3-Email Dunning Sequence

After testing and seeing data across thousands of subscription businesses, a 3-email sequence over 7-10 days consistently produces the best results. Fewer emails leaves money on the table. More emails annoys customers without meaningful additional recovery. Three is the sweet spot.

Email 1: The Friendly Heads-Up (Day 0 — immediately after failure)

The first email goes out right after the payment fails. The goal is simple: inform the customer, do not alarm them, and give them an easy path to fix it.

This email should be:

Example: Good first dunning email

Subject: Quick heads up — your payment did not go through

Hi [Name],

We tried to process your subscription payment of $49 for [Product Name], but it was not successful. This can happen for a few reasons — an expired card, a temporary bank hold, or just a processing hiccup.

Your account is still active, but we will need an updated payment method to keep things running smoothly.

[Update Payment Method] (button linking directly to payment update page)

If you have any questions, just reply to this email and we will help sort it out.

— The [Product] Team

Notice what is not in this email: no guilt, no threats, no countdown timers, no "WARNING: YOUR ACCOUNT WILL BE SUSPENDED." The customer did not do anything wrong. Their card just hiccupped. Treat them accordingly.

Email 2: The Gentle Reminder (Day 3)

Three days later, send a follow-up. A lot of people saw the first email and meant to deal with it but got busy. Life happens. This email serves as a nudge.

This email should:

Example: Good second dunning email

Subject: Your [Product Name] subscription needs attention

Hi [Name],

Just a friendly reminder that we were not able to process your latest payment of $49. We tried again but it still did not go through.

We would hate for you to lose access to [specific feature/data they use]. Updating your payment method takes less than 30 seconds:

[Update Payment Method]

If your card recently changed, that is probably all it is. A quick update and you are all set.

— The [Product] Team

The key shift in this email is the introduction of what they stand to lose. You are not threatening them — you are reminding them of the value they are getting. There is a big difference between "we will cancel your account" and "we would hate for you to lose access to your dashboards."

Email 3: The Final Notice (Day 7)

A week after the initial failure, it is time for the final email. This one introduces a clear deadline and a sense of appropriate urgency. Not panic. Not aggression. Just clarity about what happens next.

This email should:

Example: Good final dunning email

Subject: Last chance to keep your [Product Name] account active

Hi [Name],

We have tried to reach you a couple of times about a payment issue on your [Product Name] account. Unfortunately, we have not been able to process your subscription payment, and we have not been able to charge the card on file.

If we do not receive a payment update by [specific date], your subscription will be cancelled and you will lose access to your account, including all your saved [data/reports/projects].

Updating takes less than a minute:

[Update Payment Method]

If something else is going on — budget changes, a different card you would prefer to use, or anything at all — just reply here and we will work with you.

— The [Product] Team

That last line matters more than you might think. Sometimes the payment issue is a symptom of something else. Maybe they want to downgrade. Maybe they need to switch to annual billing. By opening the door to a conversation, you give yourself a chance to save the customer even if the standard recovery flow does not work.

Subject Lines That Actually Get Opened

Your dunning email is worthless if it never gets opened. Subject lines are everything. Here are principles that work, followed by specific examples.

Be specific, not vague. "Important account update" gets ignored because it sounds like spam. "Your payment for [Product] did not go through" gets opened because it is specific and relevant.

Use the product name. Customers subscribe to dozens of services. If your subject line does not mention your product by name, they might not even realize which service has the issue.

Avoid all caps and excessive punctuation. "URGENT!!! PAYMENT FAILED!!!" goes straight to spam or straight to the trash.

Keep it short. Under 50 characters is ideal for mobile. Most people read email on their phones.

Subject lines that perform well:

Subject lines that perform poorly:

Tone and Copy Tips: Friendly Wins Every Time

The biggest mistake SaaS companies make with dunning emails is treating them like debt collection letters. Your customer is not a debtor. They are a paying customer who hit a speed bump. The way you communicate during this moment shapes how they feel about your entire brand.

Write like a helpful friend, not a legal department

Your dunning email should sound like it was written by a real person who genuinely wants to help, not by a legal team covering liability. Use contractions. Use short sentences. Write the way you would talk to a colleague.

Never blame the customer

Instead of "you failed to make your payment," say "we were not able to process your payment." The difference is subtle but important. One points a finger. The other describes a situation.

Explain what happened in plain language

Most customers do not know what a "declined transaction" means in technical terms. Explain it simply: "Your card on file did not go through, which can happen when a card expires or when a bank temporarily blocks a charge."

Make the fix feel easy

Do not say "please log in to your account dashboard, navigate to billing settings, and update your payment method." Say "tap the button below to update your card — it takes about 30 seconds." Reduce the perceived effort.

Offer a way out that is not cancellation

Sometimes a failed payment is the customer's subconscious way of churning without actively deciding to. By offering alternatives — downgrade to a cheaper plan, switch to annual billing, pause the subscription — you can save customers who might otherwise drift away.

Common Dunning Mistakes That Kill Recovery Rates

Knowing what to do is only half the battle. Here are the most common mistakes that sabotage dunning email performance:

1. Not sending dunning emails at all

A shocking number of SaaS businesses rely entirely on Stripe's default retry behavior and never send a single email to the customer about a failed payment. Stripe will retry the charge a few times, but if the card is expired or cancelled, no amount of retrying will fix it. The customer needs to know about the problem, and they need a way to solve it.

2. Linking to your login page instead of a direct payment update page

Every extra click between the email and the payment update is a drop-off point. If the customer has to log in, navigate to settings, find the billing section, and then update their card, you will lose a significant percentage of them along the way. Use Stripe's Customer Portal or Billing Portal Sessions to generate a direct link that takes them straight to the payment update form.

3. Sending from a no-reply address

When a customer sees "noreply@yourcompany.com" in the from field, it signals that you do not want to hear from them. Some customers have questions or need help. Send from a real email address that someone monitors, or at minimum, a support address that gets read.

4. Using threatening or aggressive language

Words like "overdue," "delinquent," "suspended," and "collections" belong in debt recovery letters, not SaaS dunning emails. You are not chasing a debt. You are helping a customer fix a billing hiccup. The moment your email feels threatening, you have lost trust, even if the customer does update their card.

5. Sending too many or too few emails

One email is not enough — people miss emails constantly. But seven emails over three days is harassment. The 3-email sequence over 7-10 days strikes the right balance between persistence and respect. Each email should add something new (new framing, new urgency, new information) rather than repeating the exact same message.

6. Forgetting mobile optimization

Over 60% of emails are opened on mobile devices. If your dunning email has tiny text, a buried CTA button, or a payment update page that does not work on phones, your recovery rate will suffer. Test every dunning email on a phone screen before deploying it.

7. Not stopping the sequence when the payment succeeds

If a customer updates their card after the first email and the payment goes through, you absolutely cannot send them the second and third dunning emails. This sounds obvious, but it happens all the time when dunning sequences are not properly integrated with Stripe webhook events. Listen for invoice.payment_succeeded and immediately cancel any remaining dunning emails for that invoice.

What Good vs Bad Dunning Emails Look Like

Let's contrast two approaches to illustrate the difference.

Bad dunning email

From: noreply@example.com

Subject: PAYMENT OVERDUE — Action Required Immediately

Dear Customer,

Your payment of $49.00 (Invoice #INV-29481) is overdue. Failure to remit payment within 48 hours will result in suspension of your account and all associated services. Please log in to your account at https://example.com/login to resolve this matter.

Regards, Billing Department

What is wrong here: threatening tone, no-reply address, vague sender name, links to login page instead of direct payment update, treats the customer like a delinquent debtor, uses invoice numbers nobody remembers, all-caps subject triggers spam filters.

Good dunning email

From: sarah@example.com

Subject: Quick heads up — your Example App payment did not go through

Hi Alex,

Wanted to let you know that we tried to charge your Visa ending in 4242 for your Example App subscription ($49/month), but it did not go through. No worries — this happens sometimes, usually because of an expired card or a temporary hold from your bank.

Your account is still active. To keep it that way, just update your payment info here:

[Update My Card]

Takes about 30 seconds. If anything seems off, just reply and I will help.

— Sarah from Example App

What is right here: friendly human tone, real person's name, product name in subject, specific card details so the customer knows which card to check, direct link to payment update, reassurance that the account is still active, invitation to reply for help.

Timing and Technical Implementation

Getting the content right is critical, but so is the timing and the technical plumbing behind your dunning sequence.

On the Stripe side, your dunning flow starts when you receive an invoice.payment_failed webhook event. Check the last_payment_error.decline_code to understand what went wrong. For hard declines (expired card, card not valid), trigger the dunning sequence immediately because retries will not help. For soft declines (insufficient funds, temporary holds), you might want to let your retry logic attempt recovery first and only trigger dunning if the retries fail.

For sending the emails themselves, you want a system that:

Building this from scratch is doable but takes real engineering time — typically 2-3 weeks for a solid implementation plus ongoing maintenance. If you want to skip the build and just have it work, ChurnShield handles the full dunning sequence automatically. It connects to Stripe via OAuth in about two minutes, sends optimized dunning emails with direct payment update links, and coordinates them with smart retry logic so everything works together. You get a real-time dashboard showing which emails are recovering which payments.

Measuring Dunning Email Performance

Once your dunning sequence is live, track these metrics to optimize it over time:

For more on measuring and reducing churn overall, including both the involuntary and voluntary sides, check out our companion guide on how to reduce SaaS churn rate.

Key Takeaways

Dunning emails are your last line of defense against involuntary churn. Here is what to remember:

A well-crafted dunning sequence is one of the highest-ROI things a SaaS business can implement. It costs almost nothing to maintain, it runs automatically, and it recovers revenue from customers who want to keep paying you. Do not leave that money on the table.