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:

  1. A calm, clear "your payment didn't go through" email with a fix-it link.
  2. A wait, then a firmer reminder that action is needed.
  3. 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:

  1. Trigger: Stripe event → Payment failed.
  2. Send Email 1 immediately, the calm fix-it.
  3. Wait 2 days.
  4. Send Email 2, the reminder.
  5. Wait 3 days.
  6. Send Email 3, the final notice.
  7. 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, so align it with when Stripe actually retries or cancels.

Start from a template

→ Failed payment / dunning recovery template

Browse all the Stripe automation templates for more Stripe flows. For past-due and cancellation saves alongside this flow, see dunning emails for Stripe.

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.

Last updated: October 8, 2026