Dunning Templates

Email templates that recover failed payments without burning bridges.

Each template is designed for a specific stage of the dunning sequence, triggered by Stripe webhook events, and written to maximize recovery while preserving customer relationships.

Combined recovery rate:35-45%
Day 1

Sent immediately after first retry fails

18-22%

recovery

Subject line

Quick heads up: we had trouble with your payment

Email preview

Hey [First Name], just a quick note that we weren't able to process your latest payment of [Amount] for [Product Name]. This happens sometimes and usually resolves itself. We'll retry automatically, but if you'd like to update your payment method now, just click below. No action needed if your card info is current.

Trigger: invoice.payment_failed (attempt_count: 1)
Tone: Helpful, non-alarming
Day 3

48 hours after first email

12-15%

recovery

Subject line

Your [Product Name] subscription needs attention

Email preview

Hi [First Name], we've tried processing your payment of [Amount] a couple of times now without success. Your subscription is still active, but we want to make sure there's no interruption to your service. The most common fix is simply updating your card on file. Takes about 30 seconds.

Trigger: invoice.payment_failed (attempt_count: 2)
Tone: Friendly urgency
Day 7

4 days after second email

8-12%

recovery

Subject line

Action required: your subscription will pause in 48 hours

Email preview

Hi [First Name], we've been unable to process your payment of [Amount] for [Product Name]. To avoid any disruption to your access, please update your payment method in the next 48 hours. After that, we'll need to pause your subscription until the payment goes through. We'd hate to see you lose access.

Trigger: invoice.payment_failed (attempt_count: 3)
Tone: Direct but empathetic
Smart Retry

Dynamic, based on failure reason

5-8% incremental

recovery

Subject line

[Varies by failure type]

Email preview

This isn't a single email. It's a branching logic sequence that adapts based on the Stripe decline code. Soft declines (insufficient_funds) get a gentle nudge and automatic retry at optimal times. Hard declines (expired_card, stolen) skip retries and go straight to 'update your payment method' with a direct Stripe Customer Portal link.

Trigger: invoice.payment_failed + decline_code routing
Tone: Adaptive, failure-type aware

Get the templates

Ready to implement these in your stack?

The template pack includes all four emails with full copy, subject lines, Stripe webhook trigger specs, and Klaviyo flow configuration guides. Or hire me to build and integrate the entire dunning engine for you.

Is your subscription revenue leaking?

I help SaaS founders recover up to 50-60% of their “failed payment” churn through technical Stripe & Klaviyo optimization.

R
Revenue Engineer – founder & Stripe specialist

Newsletter

Revenue insights delivered to your inbox

Get weekly articles on Stripe optimization, dunning strategies, integration guides, and revenue engineering practices. No spam, just signal.