Help Stripe SaaS recover revenue lost to failed payments — smart retries + dunning, pay only on recovery. Building Lirova solo · NestJS/Prisma · pre-launch
SaaS founders obsess over cancellations.
Meanwhile 20-40% of churn is involuntary - cards that expired, banks that declined. The customer never chose to leave. Their payment just failed and the subscription died.
Expired cards alone cause 42% of failed payments.
Stripe recovers ~35% of these by default. The other 65%? Gone.
That's the leak I'm building Lirova to fix - smart retries + dunning that recover the rest, before they churn.
Pre-launch, looking for early users on Stripe. Demo (sample data): https://t.co/gKtMZE2PYY
#buildinpublic #SaaS
@mddanishyusuf 65 paid on Stripe is a real milestone, congrats 👏 the jump from "first users" to "they keep paying next month" is the fun part. what's your retention looking like so far at this size?
yeah, you're right - blind retry on a hard decline is mostly wasted. that's the whole point imo. retry only helps on soft stuff (insufficient_funds near payday, temp processing errors).
the bank-says-no cases (do_not_honor, declines that need the customer to act) - retrying just burns attempts. those need a different path: email the customer to update the card or contact their bank, not another charge.
so it's less "retry harder" and more "read the decline code and only retry the ~10% that's actually retryable. the rest is dunning, not retries."
high churn is usually two things mixed together. some people actually leave. but some just had their card fail on renewal - they never decided to go. that second part you can recover without touching the product.
are you retrying failed renewals or do they just lapse? with 453 subs that adds up fast
@optimalfocus Ha, honestly — English is not my native language, so I rely on tools to keep from sounding broken. but this failed payment thing is literally something I create, that part is my fault
Day 175 consistency is the real flex here 👏 (and rest up after the teeth 🦷)
At $2.1k MRR with a steady install flow, you've got enough renewal volume now that failed payments start nibbling - expired cards, declines, the customer never chose to leave. Quiet few % of MRR. Worth watching as you push for that $9k. Tracking it separately yet?
@BrianMRey Honestly the screenshots are the better content — real numbers beat opinion tweets every time. $946 with 94 subs and 11 trials is a healthy shape. Are those 11 trials converting clean, or losing any to failed first-charges?
18% → 12% is a solid target. One thing that changes the math though: split that number into voluntary vs involuntary first.
If a chunk of your 18% is failed renewals (expired cards, declines) rather than people choosing to leave, that part isn't a "convince them to stay" problem — it's recoverable with retries. Worth knowing which half you're fighting before setting the goal. What's your failed-payment share look like?
62 subs and ~$940 is real traction for day 49 👏
Heads up as you push past $1k: with 62 active subs you've now got enough renewals that some will start failing (expired cards, declines) — quiet MRR leak that looks like churn but isn't. Cheap to watch early. Are you tracking failed renewals separately yet?
Building in public: a dunning / payment-recovery tool for SaaS on Stripe. Solo, pre-launch.
The thing that surprised me most while building it: "just retry the failed card" is a trap.
- Retry a card reported lost or stolen > you annoy a real customer and the bank flags you
- Retry too aggressively > the card network starts throttling you
- Retry without idempotency > you double-charge someone, now you're refunding and apologizing
So most of the engineering wasn't "retry the payment." It was deciding when NOT to - reading the decline code first, and stopping on the ones you should never touch.
Involuntary churn (expired cards, declines on renewal) eats a few % of MRR for most subscription businesses, and the customer never even chose to leave. Felt like a problem worth solving.
Anyone else here dealing with failed renewals? Curious how you handle it today - ignore, manual, or something built-in.
$5k solo is the milestone most people quit right before - congrats 👏
Quiet thing that shows up around here: at $5k you've got enough renewal volume that failed payments (expired cards, declines) start costing real money - customers who never chose to leave. Recovering that is usually the cheapest MRR you'll ever add, because you already earned it once. Worth a look before the next 5.
This is the whole reason I'm building Lirova — recover the renewals that fail silently, before they count as churn. Pre-launch, on Stripe. Demo (sample data): https://t.co/cCCkDyc9FY
Hot take: most "churn reduction" advice solves the wrong problem.
It's all about convincing people who want to leave to stay — better onboarding, exit surveys, win-back emails.
But the cheapest retention win isn't about changing anyone's mind. It's the customers who already wanted to stay, whose card just failed on renewal. They didn't churn. The payment did.
Fixing that is billing logic, not persuasion — and almost nobody treats it as a separate problem.
What % of your "churn" do you think is actually just failed payments?
Love this — the 10-year arc makes it hit harder. Congrats on the $500.
Heads up for the next stretch: as renewals stack up, expired cards start silently killing a slice of that MRR — the customer never decides to leave, the card just fails. Cheap to plug early, annoying to backfill later. Worth a glance at your failed-payment rate.
+256% is serious momentum 👏
If you're chasing a 2x, don't sleep on the revenue you already "won" but are leaking: failed renewals. At this growth rate you've got a real renewal base now, and recovering involuntary churn (expired cards/declines) is pure upside — no new acquisition needed. Often a quiet few % of MRR. Easiest lever before your deadline.
Day 21 to $2.5k is a fast ramp 👏
One thing that creeps in once you've got renewal volume like this: weekly subs fail a LOT (cards decline, funds timing) — and on weekly billing it compounds quietly. Worth watching your failed → recovered rate now, not at $5k. Are you retrying failed weeks or letting them lapse?
@PedroGuiti Anytime 🙏 The "is it conversion or silent payment failure" split trips up a lot of people early — worth checking both before you touch pricing.