Back to Blog

Failed payments are your quietest churn

Up to 40% of SaaS churn is a card that expired, not a decision. The dunning playbook: retry windows, three emails, and an in-app banner.

Posted by

A life ring thrown to a credit card sinking in waves

Nobody decided to leave

Depending on your customer base, 20–40% of your churn is involuntary: an expired card, a bank's fraud filter, an insufficient balance on billing day. The customer didn't choose to cancel — they often don't know anything happened until your product stops working. This is the easiest churn to fix, because there's no mind to change.

Let the retries run before you email

Stripe's smart retries recover a large share of failures on their own — many declines are transient. Your dunning emails should complement the retry schedule, not race it. A schedule that works:

  • Day 0 — a light heads-up: "your payment didn't go through, we'll retry — or fix it now". Helpful, not alarmed.
  • Day 3 — retries have likely failed; be direct about what stops working and when.
  • Day 7 — final notice with a specific date. Follow through on it: fake deadlines train customers to ignore you.

The link matters more than the copy

The single biggest recovery-rate lever is what the button does. A link to your login page loses half the clickers at the password reset. The button must open a hosted payment-update page directly — no login, no navigation. When Stripe is connected, Churntide's tracked links open a fresh billing-portal session automatically; every click is recorded so you know who tried.

Email is not enough — catch them in-app

Dunning emails go to the address that signed up three years ago; the person using the product every day often never sees them. An in-app banner — "your payment of $49 didn't go through" with an update link — reaches the user at the moment they care, and recovers payments email never could. This is exactly what Churntide's dunning banner does in one script tag: it shows only when that customer genuinely has an open failed payment.

Done properly — retries, three emails, in-app banner, one-click update — recovering 50–70% of failed payments is a realistic target. On most SaaS P&Ls that's several points of ARR for an afternoon of setup.

Failed payments are your quietest churn