Blog
Payment recovery insights and best practices for SaaS companies.
Stripe do_not_honor: The Decline That Tells You Nothing?
do_not_honor is the bank saying no without an explicit reason. Why the standard advice does not work for subscription renewals, and my take on retrying and emailing the customer.
Dunning for Bootstrapped SaaS: The Recovery Setup I'm Building for One Person
A dunning setup sized for a solo founder with no billing team. 46 Stripe decline codes, five action buckets, and when to turn something on, build it, or pay for it.
Recovering expired_card Declines: Why Retrying Never Works and What Does
expired_card is the decline code where retrying is pure wasted motion. The only path that recovers it is getting a new card on file. Here is the card-update flow I am building into RecoverStack.
Stripe insufficient_funds: When and How to Retry Without Annoying the Customer
insufficient_funds is the decline code most worth retrying, but the timing is everything. Here is the payday-aware retry approach I am encoding into RecoverStack, and the parts I am still unsure about.
How Much MRR Is Your Stripe Account Losing to Failed Payments?
A walkthrough of the math behind involuntary churn for SaaS on Stripe, with sourced numbers, a working calculator, and the limits of those benchmarks for your specific account.
Stripe Smart Retries vs Custom Dunning, in Plain English
What Stripe's built-in Smart Retries does well, where it falls short, and when an operator should keep it on, replace it, or run both. From a founder building a dunning tool, not a Stripe insider.
Stripe Decline Codes: What Each One Means and What I Plan to Do About It
I spent two weeks reading Stripe's decline-code documentation and the network reason codes underneath it. Here's the full reference, plus the recovery strategy I'm encoding into RecoverStack, and the parts I'm still unsure about.