Published 2026-08-24 by the Regainly team.
Stripe's built-in Smart Retries will keep trying a failed charge on a schedule, but it doesn't tell the customer anything by default. That's fine for a soft decline that clears up on its own — insufficient funds today, funds available next week. It does nothing for a hard decline: an expired or stolen card will fail every single retry, no matter how many times you try, until the customer actually updates their payment method.
A dunning email is what closes that gap. It's the message that turns "the charge failed silently in the background" into "the customer knows their card needs updating and has a direct link to fix it."
The most common failure mode is treating every decline the same way: one generic email, sent on a fixed delay, regardless of whether the decline was a temporary bank hiccup or a card that will never work again. The second most common is over-emailing — five reminders for one failed charge trains customers to ignore the fifth just as much as the first. Decline-code-aware timing and a single well-placed reminder consistently outperform both.