First Failure
Send after the first unresolved payment failure
invoice.payment_failedQuick heads up: we had trouble with your payment
Free Revenue Recovery Resource
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
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.
Send after the first unresolved payment failure
invoice.payment_failedQuick heads up: we had trouble with your payment
Send while the payment remains unresolved
invoice.payment_failedYour [Product Name] subscription needs attention
Send before access is suspended or the subscription is canceled
Unresolved payment failureAction required: your subscription needs attention
Smart recovery
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.
Stripe event
invoice.payment_failedDiagnose
Identify failure reason
insufficient_fundsSoft decline
Retry payment
Allow another attempt before asking the customer to intervene.
expired_cardCustomer action
Update payment method
Skip unnecessary retries and send the customer directly to payment-method recovery.
authentication_requiredCustomer action
Request authentication
Route the customer toward the authentication flow required to complete the payment.
do_not_honorUncertain 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
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
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
The Churn Engine connects Stripe payment events to failure diagnosis, recovery workflows, customer communication, and recovery measurement.
Churn Engine
I help SaaS founders recover up to 50-60% of their “failed payment” churn through technical Stripe & Klaviyo optimization.
Newsletter
Get weekly articles on Stripe optimization, dunning strategies, integration guides, and revenue engineering practices. No spam, just signal.