How to Build a Failed Payment (Dunning) Email Flow with Stripe
A large share of subscription churn isn't customers choosing to leave — it's failed payments: expired cards, insufficient funds, or declines. A dunning flow automatically emails customers when a charge fails and walks them through fixing it, recovering revenue that would otherwise churn involuntarily.
Here's how to build one in Audienceful using your Stripe payment events.
What you'll need
- A Stripe integration connected to your workspace.
- Three short emails.
- A link to your billing / update-payment-method page.
How the dunning flow works
When Stripe reports a payment failed event, the customer enters your automation, which escalates gently over a few days:
- A calm, clear "your payment didn't go through" email with a fix-it link.
- A wait, then a firmer reminder that action is needed.
- A wait, then a final notice before the account is paused.
Because it's repeatable, each failed charge re-arms the flow — so a customer whose card fails again later is recovered again.
Step 1: Connect Stripe
Connect your account from the Integrations tab. The Payment failed trigger then appears in the automation builder.
Step 2: Write your three emails
- Email 1 — the calm fix-it. No alarm — just let them know the payment didn't go through and link to update their card. Example subject: "Your payment didn't go through"
- Email 2 — the reminder. A firmer nudge that action is needed to keep their account. Example subject: "Action needed: update your payment method"
- Email 3 — the deadline. A final notice before access is paused. Example subject: "Final notice before your account is paused"
Personalize with the {{first_name}} merge tag.
Step 3: Build the automation
In the Automations tab, click New Automation:
- Trigger: Stripe event → Payment failed.
- Send Email 1 immediately, the calm fix-it.
- Wait 2 days.
- Send Email 2, the reminder.
- Wait 3 days.
- Send Email 3, the final notice.
- Optionally add a tag like
payment-failed.
Pick your theme and click Run.
Best practices
- Start calm. Most failed payments are innocent (an expired card). A friendly first email recovers the majority without alarm.
- Always link to the fix. Every email should link straight to the update-payment page.
- Set a real deadline. The final notice works because there's a genuine consequence — align it with when Stripe actually retries or cancels.
Start from a template
→ Failed payment / dunning recovery template
Browse the full automation template gallery for more Stripe flows.
Frequently asked questions
Does this replace Stripe's own retry logic? No — it complements it. Stripe retries the charge automatically ("Smart Retries"); this flow is the customer-facing side, prompting them to fix the underlying issue so the retry succeeds.
What if the payment succeeds partway through? Add a conversion goal or a conditional so a customer whose payment recovers stops receiving further dunning emails.