Dunning Email Swipe File

Plain-text dunning emails that recover failed payments without sounding like a debt collector. A 3-email sequence for the standard retry window, plus scenario-specific templates for expired cards, soft declines, and 3D Secure.

Replace {name}, {product}, {update_link}, and {founder} with your values. Copy and paste into Stripe Billing, your ESP, or your own dunning script.

The 3-email failed payment sequence

Send these in order, timed to Stripe's smart retry schedule. Together they recover the bulk of involuntary churn.

Day 1: First Notice

Sequence

Sent within an hour of the first failed charge. Calm, non-alarming, single ask: update the card.

Subject: Your last payment for {product} didn't go through

Hi {name},

Just a heads up: your most recent payment for {product} failed.

This usually happens because of an expired card, a new card number, or a quick bank hold. It's almost never deliberate.

If you can update your card here, we'll retry the charge automatically:
{update_link}

No action needed beyond that. Your account stays active.

{founder}

Day 3: Polite Follow-up

Sequence

Sent 72 hours after the first email. Slightly more direct, reminds them of access at stake.

Subject: Quick reminder about {product}

Hi {name},

Following up on the payment that didn't go through. We've retried a couple of times but the charge is still failing.

You can update your card here:
{update_link}

Your access to {product} stays active for another {days_until_cancel} days while we keep trying. After that the subscription will pause automatically. I'd rather not let that happen if it can be avoided.

{founder}

Day 7: Final Reminder

Sequence

Sent before the subscription is auto-cancelled. Clear about the consequence, warm in tone.

Subject: Last reminder: {product} subscription is about to pause

Hi {name},

Last note from me. Your {product} subscription will pause tomorrow if the payment doesn't go through.

Updating your card takes 30 seconds:
{update_link}

If you've moved on from {product}, no worries. Reply and let me know and I'll close it cleanly. But if you still want access, this is the moment to update the card.

{founder}

Scenario-specific templates

Stripe tells you why each charge failed. Match the email to the decline_code and recovery rates climb significantly.

Soft Decline

Generic decline

For generic 'do not honor' or 'try again later' declines. These usually clear on their own, so the tone is light.

Subject: Your bank declined a charge for {product}

Hi {name},

Your card declined a charge for {product} just now. This is almost always a temporary thing: a fraud filter, a daily-spend limit, or a quick bank hold.

Two options:
1. Call your bank and tell them the charge from {product} is legitimate
2. Use a different card here: {update_link}

We'll retry automatically over the next few days either way.

{founder}

Expired Card

decline_code: expired_card

For confirmed expired-card declines. The fix is clear, so the email is just a quick nudge.

Subject: The card on your {product} account expired

Hi {name},

The card on your {product} account expired, so we couldn't process your last payment.

Update it here in 30 seconds and we'll re-run the charge:
{update_link}

Your account stays active in the meantime.

{founder}

SCA / 3D Secure

authentication_required

For European customers when Strong Customer Authentication is required. The customer has to approve the charge in their banking app.

Subject: Your bank needs you to confirm the {product} charge

Hi {name},

Your bank flagged the latest {product} charge for additional confirmation. This is standard for European cards now (SCA / 3D Secure).

To complete the payment, open this link and approve the charge in your banking app when prompted:
{confirm_link}

Takes about 30 seconds. Once approved, the charge goes through and your subscription continues.

{founder}

Final Reminder Before Cancellation

Last chance

Standalone version of the day-7 reminder. Use when you only want to send one email rather than a full sequence.

Subject: {product} will cancel tomorrow

Hi {name},

Quick heads up: your {product} subscription will be cancelled tomorrow because we couldn't collect the last payment.

If you still want to keep using {product}, update your card here:
{update_link}

If you've moved on, no need to do anything. Just wanted to make sure you weren't surprised.

{founder}

Dunning email best practices

What separates dunning emails that recover 50% from ones that recover 15%.

Send from the founder, not billing@

A real person's email gets opened and acted on. A no-reply billing address gets ignored or sent to spam.

Keep them plain text

HTML invoices and big buttons trigger spam filters. Plain text deliverability is dramatically better and the email feels like a real heads-up.

Lead with the cause, not the threat

Customers respond better to 'your card expired' than to 'your account will be cancelled'. Tell them what happened first.

Match the decline reason

Stripe gives you a decline_code on every failed charge. Use it. An expired-card customer needs a different email than a fraud-hold customer.

Time the sequence with retries

Stripe's smart retries hit roughly day 1, 3, and 7. Send an email each time the retry fails so your customer can act before the next attempt.

Don't punish, don't beg

Failed payments are usually involuntary. A guilt-trip drives the customer further away. A helpful nudge gets the card updated.

Copy these manually, or let ChurnNote send them automatically.

ChurnNote watches your Stripe webhooks, fires the right email for the right decline code, and shows you which charges were recovered.

Start recovering failed payments

Frequently Asked Questions

When should I send the first dunning email?

Within an hour of the first failed charge. The customer is most engaged with the product right after the charge fails. Waiting a day or longer means the moment passes and the email feels like an out-of-context billing problem rather than a quick fix.

How many emails should a dunning sequence have?

Three is the standard for SaaS: day 1, day 3, and day 7. That matches Stripe's smart retry cadence. More than four emails starts to feel like harassment, and beyond a week most involuntary churn cases are not coming back regardless.

Should dunning emails be plain text or HTML?

Plain text. HTML billing emails get flagged by spam filters far more often than plain text from a real person. Plain text also feels like a personal heads-up rather than an automated bill, which dramatically improves response rates.

What is SCA / 3D Secure and why does it need its own email?

SCA (Strong Customer Authentication) is a European regulation that requires banks to confirm certain online charges. The customer has to approve the charge in their banking app or via SMS. A normal 'update your card' email is useless here. The customer needs a link to confirm the existing charge, not replace the card.

How do I personalize these templates?

Replace the curly-braced variables: {name} with the customer's first name, {product} with your product name, {update_link} with your Stripe Customer Portal or billing update URL, {founder} with your signoff, and {days_until_cancel} with how long until auto-cancel. Everything else stays as is.

Will ChurnNote handle this for me?

Yes. ChurnNote watches your Stripe and Lemon Squeezy webhooks, picks the right email based on the decline code, sends it from your founder address in plain text, and tracks which charges were recovered. Setup takes about five minutes.

How ChurnNote helps

The right email at the right moment recovers half the failed payments most founders silently lose.

ChurnNote connects to Stripe or Lemon Squeezy and automatically captures cancellation reasons, recovers failed payments, and queues win-back emails. So you stop losing revenue silently.

Start recovering churn

Next step

See how much these emails could recover for you

Plug in your MRR and failed payment rate to estimate the monthly revenue this sequence could bring back.

Stop guessing. Start asking.

ChurnNote automatically emails customers after they cancel and shows you their honest reply. No surveys. No forms.

Try ChurnNote. $12/mo

Cancel anytime. No contracts.