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 — 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.

Last updated: August 5, 2026