I've been digging into Stripe failed payments lately, and I think a lot of SaaS founders are treating them like one problem when they're actually two very different ones.
Type 1 — Timing problems
Insufficient funds, temporary holds, short-lived issues.
Retries can work here. Just need the right moment.
Type 2 — Customer-action problems
Expired cards, changed card numbers, some issuer declines.
Retrying does nothing. The customer has to update something. Another retry won't change that.
The mistake is treating both the same way: turn on retries, send a generic payment-failed email, and wait.
Type 2 failures just sit there. Unrecovered. Permanently.
Looking at failures this way changed how I think about recovery entirely — the real gap isn't retry timing, it's knowing which failures need communication at all.
Curious how others handle this: do you actually look at decline codes, or mostly rely on Stripe's built-in retries?
(I've been deep in the weeds on this building DunnAI — happy to run this breakdown on your Stripe account if you're curious.)
The timing vs customer-action split is exactly right. I ran into this with a small SaaS last year and our retries looked "reasonable" on paper, but most unrecovered failures were expired cards so no retry cadence was ever going to fix them. Once we split recovery into retryable declines vs update-needed declines and sent a direct card-update link for the second bucket, recovery got a lot better.
@microbuilderco That's exactly the split that matters — and most dunning setups treat both buckets the same way, which is why recovery rates stay low. The card-update link for the second bucket is the right move.
Curious what you're building now — are you still running into this on current projects?
interesting approach. have you thought about giving away a free version to build trust first? i started offering a free sample of my data product and it changed the conversion conversation completely.
Thanks! Actually DunnAI is already free until it recovers $49 for you — no charge before that. The free diagnostic report is also available right after connecting Stripe. Curious what your data product is, if you don't mind sharing.
building in public is underrated as a growth channel. the posts about struggles get way more engagement than the polished ones. keep sharing the real numbers.