Free Revenue Recovery Resource

Stripe dunning emails that recover failed payments without burning bridges.

A practical recovery sequence for subscription businesses, including email copy, Stripe webhook triggers, recovery routing, and the logic behind a smarter dunning system.

Stripe events

Recovery starts from payment events, not arbitrary timers.

Failure-aware routing

Different payment failures can require different actions.

Stop after recovery

Successful payments should automatically exit the recovery flow.

The sequence

Three recovery emails. One recovery system.

These templates are designed as building blocks. The exact timing should follow your Stripe Billing configuration and recovery policy rather than assuming every account uses the same retry schedule.

STEP 01Initial recovery

First Failure

Send after the first unresolved payment failure

invoice.payment_failed
Subject line

Quick heads up: we had trouble with your payment

Email copy
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 continue with the configured recovery process, but if you'd like to update your payment method now, you can do that below. No action is needed if your payment details are already up to date.
STEP 02Recovery escalation

Recovery Reminder

Send while the payment remains unresolved

invoice.payment_failed
Subject line

Your [Product Name] subscription needs attention

Email copy
Hi [First Name], We've tried processing your payment of [Amount] without success. Your subscription may still be active, but we want to make sure there is no interruption to your service. The most common fix is simply updating the card on file. It only takes a moment.
STEP 03Final recovery attempt

Final Warning

Send before access is suspended or the subscription is canceled

Unresolved payment failure
Subject line

Action required: your subscription needs attention

Email copy
Hi [First Name], We've been unable to process your payment of [Amount] for [Product Name]. To avoid an interruption to your access, please update your payment method before your subscription reaches its configured cancellation or pause state. We'd hate to see you lose access because of a payment issue.

Smart recovery

A failed payment should not always trigger the same email.

The useful part of dunning is not just the copy. It is the decision system behind the copy. Diagnose the failure, choose the appropriate recovery action, and stop the workflow when the payment succeeds.

Recovery decision flow

Stripe event

invoice.payment_failed

Diagnose

Identify failure reason

insufficient_funds

Soft decline

Retry payment

Allow another attempt before asking the customer to intervene.

expired_card

Customer action

Update payment method

Skip unnecessary retries and send the customer directly to payment-method recovery.

authentication_required

Customer action

Request authentication

Route the customer toward the authentication flow required to complete the payment.

do_not_honor

Uncertain decline

Limited retry + recovery

Avoid aggressive retrying and move the customer toward a recovery action.

Customer communication

Send the appropriate Klaviyo recovery event

Payment succeeds

Confirm recovery and stop the workflow.

Payment remains unresolved

Continue to the next configured recovery action.

Implementation

The email is only one layer of the recovery system.

A production recovery system needs somewhere to receive the event, diagnose it, persist recovery state, communicate with the customer, and confirm whether the money was actually recovered.

Stripe webhook

Receive and verify payment events.

Recovery state

Persist events, customers, attempts, and outcomes.

Failure router

Choose the recovery path based on payment context.

Klaviyo

Trigger the appropriate customer communication.

Recovery confirmation

Stop the recovery sequence when payment succeeds.

Architecture

Stripe
↓
Webhook
↓
Diagnose decline
↓
Recovery state
↓
Klaviyo event
↓
Recovery flow
↓
Payment succeeds?

YES → Stop

Confirm the recovered payment and close the recovery state.

NO → Continue

Move to the next configured recovery action.

The system behind the templates

Your customers are already failing payments. The question is whether your system recovers them automatically.

The Churn Engine connects Stripe payment events to failure diagnosis, recovery workflows, customer communication, and recovery measurement.

Churn Engine

1
Detect failed payment
2
Diagnose failure
3
Select recovery action
4
Trigger customer communication
5
Confirm payment recovery
6
Measure recovered revenue
Is your subscription revenue leaking?

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

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.