Back

How to Prevent Failed Payments: Dunning Strategies for SaaS Startups

MT
MVPHub Team
4 min read

How to Prevent Failed Payments: Dunning Strategies for SaaS Startups

Failed payments cause involuntary churn — customers who want to keep paying but can't because their card expired, was declined, or hit its limit. This accounts for 20-40% of all SaaS churn. The good news: effective dunning can recover 30-50% of failed payments.


Why Payments Fail

ReasonFrequencyRecoverable?
Card expired40%Yes (card updater or new card)
Insufficient funds25%Yes (retry in a few days)
Card declined by bank20%Maybe (user contacts bank)
Fraud prevention10%Maybe (user verifies)
Card canceled/lost5%Yes (user adds new card)

The Dunning Playbook

Step 1: Configure Stripe's Smart Retries

Stripe offers automatic retry logic called Smart Retries that uses machine learning to pick the best retry times. Enable this in Stripe Dashboard → Settings → Billing → Automatic collection.

Recommended settings:

  • Enable Smart Retries
  • Retry up to 4 times over 3-4 weeks
  • Mark subscription as unpaid after all retries fail

Step 2: Send Dunning Emails

DayEmailSubject Line
Day 0 (payment fails)"Payment failed — please update your card"Action needed: Payment failed
Day 3 (1st retry fails)"We're having trouble charging your card"Your subscription may be interrupted
Day 7 (2nd retry fails)"Update your payment method to keep access"Last chance to update payment
Day 14 (3rd retry fails)"Your subscription will be canceled in 7 days"We don't want to lose you
Day 21 (final)"Your account has been downgraded"Your subscription has been canceled

Email Best Practices

  • Include a direct link to update payment method (Stripe Customer Portal)
  • Be friendly, not threatening — they didn't mean for the payment to fail
  • Show what they'll lose — "You'll lose access to [specific features]"
  • Make it one-click — Minimize steps to update the card

Step 3: In-App Notifications

For users who are logged in but haven't checked their email:

  • Banner at top of dashboard — "Your payment failed. Update your card to keep access."
  • Modal on login — For users past the 7-day mark
  • Billing page alert — Prominent warning with update button

Access During Dunning

ApproachProsCons
Full access during retriesBetter UX, higher recoveryRisk of free usage
Limited access (read-only)Urgency to fix paymentMay frustrate loyal users
Grace period (7 days full, then limited)Balanced approachMore complex to implement

Recommendation: Full access for 7 days, then read-only access for 14 more days, then cancel.


Prevention (Better Than Recovery)

Card Updater

Stripe automatically updates expired cards through card network partnerships. This silently fixes ~30% of expiration-related failures without any user action.

Pre-Expiration Emails

Send an email 30 days before a user's card expires: "Your card ending in 4242 expires next month. Update it now to avoid service interruption."


Measuring Dunning Success

MetricFormulaTarget
Failed payment rateFailed invoices / Total invoices<5%
Recovery rateRecovered payments / Failed payments>40%
Involuntary churn rateUnrecovered failures / Total customers<1%
Time to recoveryAverage days from failure to recovery<7 days

Setting up billing? Read How to Build SaaS Billing With Stripe.

Need a billing-ready template? Browse on MVPHub.


Working products with full source code — live demo, one-time purchase, instant delivery.

Browse the marketplace
GR LIVEecommerce

Groover Multi-Purpose Store

$149

A fully-polished, multi-purpose e-commerce template engineered for brands that need the full feature set on day one — not a minimal starter you outgrow in a month. Groover ships with a live Medusa-backed catalog, category + collection merchandising, search with multi-facet filtering (category, collection, price, sale, stock, sort), product-detail with variant selection + image gallery + stock messaging + related products, Stripe Elements checkout with provider-aware setup panels, account dashboard with guest order lookup and authenticated order history, customer auth with login/register/logout/profile edit, wishlist with guest browser persistence and signed-in customer sync, blog list + detail, store directory, track-order page, branded 404, About/Contact/FAQ/Terms legal shell, GTM-friendly dataLayer wired into PDP/cards/wishlist/cart/checkout/search, locale + RTL foundation with persistent language switcher, PWA installability baseline, theme switching that applies before hydration and persists in both local storage and cookies, header active-route navigation with live mini-cart summary, skip-link / focus accessibility basics, app-level and route-level loading fallbacks, a recoverable error boundary, generated robots.txt and sitemap.xml, shared SEO metadata helpers, and a Playwright / Vitest / Lighthouse test harness. Every copy string lives in a typed content map so rebranding is a find-and-replace pass, not a code rewrite. Deploy it as-is or use it as the most complete starting point you can buy for a serious storefront.

★★★★★0 soldAstro · Medusa
FU LIVEecommerce

Furniture Store

$49

An elegant furniture and home furnishing e-commerce app with a design-forward Next.js storefront for SEO-optimized product pages and server-rendered category browsing. Alternative framework and mobile ports are available on demand. The visual design emphasizes large product imagery, room-based browsing, and material/color variant selection. Built with Radix UI, shadcn/ui, Tailwind CSS, and Framer Motion for a premium feel. Connects to any headless commerce backend — Medusa JS SDK integration is included. Form handling via React Hook Form with Zod validation ensures robust checkout and account flows. Great for furniture brands, interior design shops, or home decor marketplaces.

★★★★★0 soldExpo · Next.js
PE LIVEecommerce

Perfume Store

$49

A luxury-styled perfume and fragrance e-commerce app built for premium brand presentation. The ready-to-buy Next.js storefront features rich product pages with scent profiles, bottle size variants, gift set options, and server-rendered collections. Mobile, backend, and alternative framework ports are available on demand. The design uses shadcn/ui and Tailwind CSS with an elegant, minimalist aesthetic suited for luxury goods. Easy to customize — swap product data, update branding, and deploy. Perfect for perfume brands, fragrance boutiques, or niche scent marketplaces.

★★★★★0 soldMedusa · Expo

Keep reading — popular SaaS guides on MVPHub.

All SaaS articles

Explore other MVP verticals

MVPHub publishes templates and guides for ecommerce, SaaS, marketplaces, AI apps, booking platforms, subscription stores, directory sites, and more. Here are fresh picks from other verticals.