← Blog

Dunning email templates for Stripe: a copy-paste sequence that recovers payments

June 3, 2026 · 5 min read

When a Stripe charge fails, the customer almost never knows. The card expired, the bank declined a recurring charge, the balance was short for a day — and unless you tell them, the subscription just quietly lapses. These dunning email templates give you a copy-paste 4-email sequence that informs without alarming, makes fixing the card one click, and tailors the message to the actual decline reason instead of sending one generic body to everyone.

What a dunning sequence has to accomplish

Before you copy a single line, be clear on the job. A good sequence does four things: it tells the customer the payment failed without making them panic, it makes fixing it a single click, it escalates over several days, and it stops the instant the invoice is paid. The first email matters most — it tends to see the highest open and recovery rate because the failure is fresh and the customer still trusts the sender. Get that one right and the later touches are mostly cleanup.

The single most important element in every email is a fresh, one-click update-card link— a hosted, no-login page, not your generic billing settings behind a password. The fewer steps between “my card failed” and a working card, the more you recover. And generic copy underperforms reason-specific copy: an “update your expired card” message lands very differently than “your bank declined the charge,” and customers act faster when the email matches what they already half-suspect.

Email 1 — Day 0: the informational heads-up

Neutral and reassuring. No urgency yet. Subject-line options that get opened:

  • “A quick note about your last payment to {Company}
  • “We couldn't process your {Company}payment — no action needed yet”
  • “Your {Company} payment didn't go through”

Body: “Hi {First name} — we tried to charge your card for your {Company} subscription and it didn't go through. This happens a lot and it's usually quick to fix. We'll automatically try again over the next few days, so you may not need to do anything. If you'd like to sort it now, you can update your payment method here:” followed by the primary CTA button, Update payment method. Close by setting the expectation plainly: you'll retry automatically, and you'll only email again if it keeps failing. Ship both a plain-text and an HTML version — plain text often slips past aggressive filters, and some customers simply trust it more for money matters.

Email 2 — Day 3: the nudge

The automatic retry has run at least once and still failed, so add light urgency. Subject lines:

  • “Still can't process your {Company} payment”
  • “Your {Company} subscription needs a quick fix”

Body: remind them access is at risk soon — “We tried again and your payment still hasn't gone through. To keep your account active, please update your card.” Keep the same one-click link, but refreshed so it points at the current open invoice rather than a stale session. This is also where you can swap copy based on attempt_count: on a first or second failed attempt, stay gentle; by the third, name the consequence (a pause or downgrade of access) more directly.

Email 3 — Day 7: value-loss framing

By now the soft approach hasn't worked, so remind them what they lose if the payment isn't fixed. Be specific and account-aware where you can — reference their plan, their seats, their stored projects, whatever they'd actually miss. “Your {Plan} plan includes {key benefit}, and that access will pause if we can't collect payment.” Use a stronger CTA (Reactivate my account) and add a support fallback: “Reply to this email if the link isn't working or you need a hand.” Subject-line variants:

  • “Action needed: your {Company} access is about to pause”
  • “Don't lose access to {Company}

Email 4 — Final: pre-cancellation notice

An honest deadline, tied to a real event — Stripe's next_payment_attemptor the terminal action your retry schedule ends on. “This is the last automatic attempt. If payment still doesn't go through on {date}, your subscription will be canceled.” Specificity recovers more than vague threats. Last-chance subject lines: “Final notice: your {Company} subscription cancels {date}” or “Last chance to keep your {Company}account.” Offer to help — try a different card, or contact support — rather than just warning. After this email, if it still fails, stop dunning. The next message should be a win-back a few weeks later, not a fifth payment-retry email that trains the customer to ignore you.

Tailoring copy to the decline reason

This is the upgrade most generic templates skip. Stripe tells you why the charge failed; use it.

  • expired_card— “Your card on file expired.” This will never clear on a retry, so lead with a direct update prompt and the one-click link.
  • insufficient_funds— softer tone. These often clear on their own, so frame it as “we'll automatically try again on {date}” and let the retry do the work before you push.
  • generic_decline / do_not_honor— “Your bank declined the charge. It's often easiest to try a different card.” The same card may keep getting flagged, so it's worth steering them to an alternative.

Reason-specific copy beats one generic body for response and trust because it matches reality — the customer reads it and thinks “yes, that's probably what happened,” instead of wondering if it's a phishing attempt. For the codes behind these, see Stripe dunning best practices.

Deliverability so these actually land

A dunning email in the spam folder recovers nothing. Cover the basics:

  • Authenticate the sending domain with SPF, DKIM, and DMARC aligned, not a shared sender. See setting up a custom send domain.
  • Avoid spam-trigger phrasing— payment mail is touchy. Skip all-caps urgency, “ACT NOW,” and money symbols stacked in the subject line.
  • Keep links HTTPSand on a domain the customer recognizes, ideally yours — mismatched or shortened URLs in payment mail read as fraud.
  • Monitor bounces and suppress hard-failed addresses so you protect sender reputation and stop emailing dead inboxes.

Where Backstop fits

Backstop ships and sends this exact sequence on Stripe — the four touches above, tailored by decline reason, so you skip the copywriting entirely. It sends from your own verified send domain for deliverability, keeps the update-card link fresh on each touch, and stops the moment the invoice is paid. Pair it with our guide on reducing involuntary churn, then see pricing or start free— flat $79/mo, a free tier, and 0% revenue share.

Backstop recovers failed Stripe payments and saves canceling subscribers.

Smart retries, a visual cancel flow, and a hosted portal — flat $79/mo, a free tier, and 0% revenue share.