DUNNINGFAILED PAYMENTS

Dunning email templates: ready-to-use examples for day 0, 3, 7 and 14

Copy-ready dunning email templates for failed subscription payments: day 0, 3, 7 and 14 emails, subject lines, and how to adjust tone by customer tenure.

Published 8 min read

When a subscription payment fails, the email you send next does most of the recovery work that retries cannot. A good dunning email is short, specific and easy to act on. A bad one reads like a collections notice and sends a loyal customer looking for the cancel button.

Below are four original templates for a standard 14-day sequence, plus subject lines, a hard-decline variant, and guidance on adjusting tone for new versus long-time customers. Copy them, change the bracketed parts, and test them against your own numbers.

The sequence at a glance

The timing below assumes monthly billing and a retry window of about two weeks, which matches the default recommended in Stripe’s Smart Retries settings. If your window is different, keep the same shape and stretch or compress the days.

Day Purpose Length Call to action
0 Inform: the payment failed 60–90 words Update payment method
3 Remind and reassure 60–90 words Update payment method
7 Set a clear deadline 70–100 words Update payment method
14 Final notice 60–90 words Update payment method, or reply

Every email has the same single button. Repetition is fine; customers do not read the sequence as a whole, they read whichever email they open.

Rules that apply to every email

  1. Send from a name. “Maya at Acme” or “Acme Billing”, with a reply-to address someone reads.
  2. Say exactly what happened. Amount, plan name, card brand and last four digits.
  3. One button, one link. It goes straight to a card update page that does not require a password.
  4. No blame. “Your payment didn’t go through”, not “You failed to pay”.
  5. No scare tactics. State consequences once, factually, with a date.
  6. Plain formatting. Short paragraphs, little or no imagery. Plain emails tend to look personal and load fast on phones.
  7. Do not reveal sensitive decline reasons. Stripe’s decline codes reference advises showing a generic message for codes like fraudulent or lost_card.

Day 0: the first notice

Send this within an hour of the first failure. Its job is to inform, not to pressure. Many customers simply have not noticed that their card changed.

Subject line options

  • Your payment for [Product] didn’t go through
  • Quick fix needed for your [Product] subscription
  • We couldn’t charge your [Card brand] ending [1234]
Hi [First name],

We tried to charge [Amount] for your [Plan] plan on [Date],
but the payment on your [Card brand] ending [1234] didn't go through.

This happens for lots of reasons: a new card, a spending limit,
or a bank being cautious. Nothing is wrong with your account.

You can update your payment details here in about a minute:

[Update payment method]

We'll also try the card again automatically over the next few days.

Thanks,
[Sender name]
[Product]

Day 3: the friendly reminder

By day 3, at least one retry has usually run. This email reminds without escalating, and answers the question customers tend to have: “What do I actually need to do?”

Subject line options

  • Reminder: your [Product] payment is still pending
  • Still having trouble with your card?
  • Your [Plan] plan: one small thing to fix
Hi [First name],

Just a reminder that your [Amount] payment for [Product] is still
pending. We tried your [Card brand] ending [1234] again, without success.

The quickest fix is to add a new card or a different payment method:

[Update payment method]

If the card should work, your bank may be blocking the charge.
A quick call to them usually sorts it out.

Have a question? Just reply to this email.

[Sender name]

Day 7: the clear deadline

This is the email where you state the consequence and the date. Stay factual. Customers respond better to a specific date than to vague warnings.

Subject line options

  • Action needed: your [Product] access changes on [Date]
  • Your [Product] subscription will pause on [Date]
  • Keep your [Plan] plan active: update your card by [Date]
Hi [First name],

We still haven't been able to collect [Amount] for your [Plan] plan.

To avoid any interruption, please update your payment method
before [Date]. After that, your account will [be paused /
move to the free plan / lose access to X].

[Update payment method]

Your data and settings are safe. Once the payment goes through,
everything works exactly as before.

If something has changed and you need a different plan,
reply and we'll help.

[Sender name]

Replace the bracketed consequence with what actually happens in your product. Never threaten something you will not do.

Day 14: the final notice

This is the last email before the subscription is canceled, marked unpaid, or downgraded, depending on what you set in your billing tool. Keep it short and respectful. Leave the door open.

Subject line options

  • Final notice: your [Product] subscription ends today
  • Last chance to keep your [Product] account active
  • We’ll pause your [Product] account tomorrow
Hi [First name],

This is our last reminder about the [Amount] payment for your
[Plan] plan. Unless the payment goes through, your subscription
will [end / be paused] on [Date].

[Update payment method]

If you meant to cancel, no action is needed, and thank you for
being a customer. If not, updating your card takes about a minute.

[Sender name]

Variant: hard declines and expired cards

When the decline code shows the card cannot be charged again (for example expired_card, lost_card or incorrect_number), retries will not help, so skip the “we’ll try again” line and ask for a new card on day 0.

Subject line: Your card on file for [Product] needs updating

Hi [First name],

The card we have on file for [Product] can no longer be charged,
so your [Amount] payment on [Date] didn't go through.

Please add a new card or another payment method to keep your
[Plan] plan running:

[Update payment method]

It takes about a minute, and your account stays exactly as it is.

[Sender name]

Variant: authentication required

In the EU and UK, banks may ask the customer to confirm a payment with 3D Secure. Stripe returns authentication_required in that case. The email should send customers to a page where they confirm the payment, not to a card form.

Subject line: Please confirm your [Product] payment

Hi [First name],

Your bank asked for a quick confirmation before approving your
[Amount] payment for [Product].

[Confirm payment]

It usually takes a few seconds in your banking app.

[Sender name]

Adjusting tone by customer tenure

The same template does not fit everyone. A customer in their second month and a customer in their third year have different relationships with you.

Tenure What they need Tone adjustments
First 1–3 months Reassurance the product is worth keeping Remind them of one thing they set up or used; keep it light
3–12 months A low-effort fix Standard templates work; emphasize “about a minute”
1 year or more Recognition Thank them for being a customer; offer a personal reply; consider a longer grace period
Annual plans Clarity on a larger amount State the amount and period clearly; offer to split or switch to monthly if that is an option you actually provide

Example: a long-time customer, day 3

Hi [First name],

You've been with [Product] since [Month Year], so we wanted to
reach out personally. Your [Amount] payment didn't go through
this month, probably because of a card change.

[Update payment method]

If anything about your plan needs to change, just reply.
I read every response.

[Sender name], [Role]

Example: a new customer, day 0

Hi [First name],

Your first renewal for [Product] didn't go through on your
[Card brand] ending [1234].

You've already [set up X / imported Y], so updating your card
keeps all of that in place:

[Update payment method]

[Sender name]

Only reference usage you can actually pull from your data. A personalization line that is wrong reads worse than none.

Subject line checklist

  • States the product name, so the email is recognized in a busy inbox.
  • Says what happened or what to do, in under about 50 characters where possible.
  • Avoids all caps, exclamation marks and words like “urgent” in the first emails.
  • Matches the email body. Do not promise “a quick fix” and then send a wall of text.
  • Has been tested. If you can, A/B test two subject lines on day 0, where volume is highest.

Common mistakes

  • Linking to a login page. Customers who forgot their password drop off. Use a link that opens the update page directly.
  • Sending the same email four times. Each email should add something: reassurance, a tip, a date, a final notice.
  • Ignoring replies. Replies such as “I’ve changed banks” or “please cancel” need a human or a fast, accurate answer.
  • Sending in the wrong language. If your customer signed up in German, the dunning email should be in German.
  • Not stopping the sequence. As soon as the invoice is paid, the remaining emails must stop. Test this.
  • Over-relying on Stripe’s default emails. Stripe can send failed payment and expiring card emails, which is a good baseline, but the copy is generic and not tied to decline reasons or tenure.

For the rest of the recovery process (retries, decline codes, card update pages and measurement), see the complete guide to recovering failed payments on Stripe. If the customer cancels anyway, the next step is a win-back sequence.

How NoChurn helps

NoChurn sends recovery emails on day 0, 3, 7 and 14 by default. They are written by AI in the customer’s language (English, German, French, Italian or Portuguese) and reviewed before sending. Each one links to a hosted card update page where card data stays with Stripe; NoChurn never sees card numbers. Replies are read, sorted, and either answered or sent to your team.

It connects to Stripe in one click, or works through the REST API if you run your own billing. See how failed payment recovery works and pricing.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Stop leaking revenue.

  • Free until $300 MRR
  • No card needed
  • Live in 10 minutes
  • Never a cut of what we recover