Email Marketing6 min read

Dunning Email Teardown: 9 Fixes That Recover More Payments (Without Angry Replies)

A practical teardown of failed payment (dunning) emails: reduce phishing vibes, clarify consequences, pick one CTA, and recover more revenue without support blowback.

R

React Emails Pro

February 26, 2026

Failed payments are the worst kind of churn: nobody wanted to cancel, and you still lose the revenue.

The dunning email (a.k.a. “payment failed”, “update billing”, “card declined”) is a transactional email with one job: get the user back to a valid payment method with minimal stress.

The goal isn’t “scare them into paying.” It’s to make the fix effortless and trustworthy.

Why most dunning emails fail (even when the product is great)

Dunning emails often get written like support tickets: vague problem, vague instructions, and a link that looks like it’s going to steal your card.

Users don’t wake up excited to “update billing.” They’re busy. They’re suspicious. And half of them are reading on mobile while their bank’s fraud filter is already on high alert.


A quick teardown: 9 fixes that recover more payments (without angry replies)

1) Name the problem in plain language

“Action required” is useless. “Your payment failed” is clear.

Put the human truth up top: “We couldn’t process your payment.”

2) Reduce the “phishing smell”

Payment emails are prime phishing targets. If your email looks like a scam, users won’t click. If your link goes to a weird domain, users shouldn’t click.

  • Use your main product domain (no link shorteners, no random subdomains).
  • Include a recognizable sender name and a consistent “from” address.
  • Avoid fake urgency and exclamation marks. You’re not a casino.

3) One primary CTA. Not three.

A dunning email is not a menu. The primary CTA should go directly to the billing update screen.

Good primary CTA: Update billing
Bad primary CTA: View invoice (it adds a step)

4) Tell them what happens if they do nothing

Users need a consequence, but not a threat. The best dunning copy sounds like a calm operator, not a debt collector.

  • Clear: “Your subscription may be paused on Mar 3.”
  • Clear: “We’ll retry automatically over the next 3 days.”
  • Too much: “FINAL NOTICE: PAY NOW OR LOSE ACCESS.”

5) Don’t blame the user (or the bank)

“Your card was declined” reads like an accusation. The user didn’t do anything wrong.

Use neutral phrasing: “The charge didn’t go through.” Not “you declined it.”

6) Add a short “common reasons” line (optional)

A single sentence can prevent support tickets and increase conversions.

Example: “This can happen due to expired cards, spending limits, or bank security checks.”


7) Show just enough context to be credible

Show the plan name and the amount. Do not include full card numbers.

  • Include: plan, amount, billing period, next retry date (if relevant).
  • Include: last 4 digits (optional) and card brand (optional).
  • Avoid: long tables, receipts, invoice line items (that’s a different email).

8) Make the “safe exit” obvious

Some users will want to cancel instead of update. If you hide that path, they’ll reply angrily, chargeback later, or mark the email as spam.

Secondary link: Manage subscription (or “Contact support”). This isn’t “losing revenue” — it’s avoiding messy revenue.

9) Use subject lines that feel transactional

Subject lines should be boring, clear, and searchable.

  • Payment failed for {Product}
  • Update your billing to keep {Product} active
  • We couldn’t process your subscription payment
Avoid “Urgent”, “Immediate action required”, and “Final notice” unless it is literally your last retry and you can back it up.

A minimum viable dunning email structure

  1. Headline: Payment didn’t go through
  2. 1-line context: Plan + amount + what will happen next
  3. Primary CTA: Update billing
  4. Support / secondary: Manage subscription, contact support
  5. Trust: domain consistency, footer, and no sketchy links

Ship it: use a dunning template you can customize

If you want a clean base you can drop into React Email, start with our failed payment email template.

And if you’re building the broader billing lifecycle, pair it with a renewal reminder (reduce surprises) and a clean invoice/receipt email (reduce “what is this charge?” tickets).

Production-ready templates for every flow

Pick from 9 template packs built with React Email. One-time purchase, lifetime updates, tested across every major email client.

Browse all templates