A failed payment isn't a churn event. It's a churn risk — a card that expired, hit its limit, or got reissued after a fraud alert. The customer still wants your product. The bank just said no. Whether that turns into a lost subscription depends almost entirely on how fast you reach a human who can fix it.

Full disclosure: I work for ReadySMS, so I have a horse in this race. But the reason I keep writing about dunning is that the email-only version leaks money in a way that's easy to measure and easy to fix, and most SaaS teams never look at the number.

What your dunning emails are actually recovering

Involuntary churn — failed renewals, not cancellations — runs somewhere around 20–40% of total churn for most subscription businesses. Call it a third. That's revenue you already earned and are about to lose to a card-network hiccup.

Email dunning is the default fix. It also underperforms, for boring reasons:

  • Open rates on transactional-but-alarming emails sit around 20–30%. "Payment failed" subject lines get filed next to receipts and ignored, or land in Promotions.
  • The recovery window is short. Your payment processor retries on a schedule — typically day 0, day 3, day 5, day 7 or similar. If the customer doesn't update the card before the final retry, the subscription lapses. An email that gets read on day 6 is often too late to matter.

Blended across those two problems, email-only dunning recovers roughly 10–15% of failed charges for a lot of SaaS teams I've seen. Twelve percent is a fair midpoint. The other 88% either self-recovers on a retry or churns.

Why SMS lands where the email didn't

Texts to opted-in contacts get read — and read fast. Response and read rates on SMS routinely land far above email; a "your card was declined, tap to update" message tends to get opened within minutes, not filed for later.

I've written the fuller version of the recovery-rate comparison in Failed-Payment SMS Recovers 3x More Than Email Dunning — but Only If You Send Inside This Window. The short version: SMS doesn't replace your dunning email, it front-runs it. The email is the paper trail; the text is what actually gets the card updated before the last retry burns.

The other reason SMS works here specifically: a failed-payment alert is the one message where the customer wants the interruption. Nobody's annoyed that you texted them their subscription is about to lapse. The relevance is total.

Timing it against your retry schedule

The whole game is landing your text between the first failed charge and the final retry, while there's still a live subscription to save. Here's the cadence I'd run against a typical day-0/3/5/7 retry schedule:

DayEventChannel
0First charge failsEmail (paper trail) + SMS within a few hours
3Second retry failsSMS — "still declined, tap to fix"
5Third retry failsEmail reminder
7Final retry / lapse imminentSMS — last-call, direct update link

Two texts, bracketing the retry window, is usually enough. More than that and you're nagging someone whose card genuinely won't work — at which point the subscription was going to lapse regardless.

You wire this up as an automation in ReadySMS triggered off your billing webhook (or off a status change synced into GoHighLevel if that's where your CRM lives). Failed-charge event fires, the text goes out, the opt-out and quiet-hours rules apply automatically — more on both below.

One thing worth flagging: a failed-payment text is an account-critical alert, not a marketing blast. That distinction matters both for consent and for where it lands. I dug into that difference in Your In-App Banner for a Failed Payment Is Invisible to a Churned User — the in-app banner never gets seen precisely because the user isn't logging in, which is why the card failed to renew in the first place.

The consent basis for billing texts

This is where SaaS teams get nervous, and it's worth being precise.

A failed-payment notification is a transactional message about an existing account — not marketing. That's a genuinely different consent posture than a promo blast. But "transactional" isn't a magic word that exempts you from everything. You still need:

  • A phone number the customer knowingly gave you for account/billing purposes, with that use disclosed.
  • Recorded opt-in / attestation. ReadySMS captures consent attestation for bulk and API sends, so you've got an audit trail for exactly which numbers agreed to receive account texts.
  • Working opt-out. Even on transactional messages, honor STOP. ReadySMS handles inbound STOP automatically and propagates the opt-out so the contact can't be re-messaged across campaigns.
  • Quiet-hours discipline. ReadySMS holds sends outside permitted local hours based on the recipient's area, which reduces TCPA exposure even on account messages.

None of this makes you immune to a complaint — compliance is ultimately the sender's responsibility, and I won't pretend otherwise. But collecting the billing phone number with clear disclosure, capturing the attestation, and letting the platform enforce STOP and quiet hours is the standard-of-care baseline. If you send transactional SaaS SMS at any real volume, our SaaS 10DLC compliance walkthrough covers the brand and campaign registration side you'll also need in place.

The recovery-rate math

Let's put numbers on it. Say you're a SaaS with 2,000 active subscriptions at a $60/mo average, and a 6% monthly involuntary failure rate — so 120 charges fail each month.

Email only, 12% recovery:

  • 120 × 12% = 14.4 recovered → 14.4 × $60 = $864/mo saved
  • 105.6 subscriptions at risk of lapsing.

Add SMS, lift recovery to ~30%: That's not a promise — it's the kind of blended lift teams see when SMS front-runs the email inside the retry window. I'm using 30% as a conservative-to-moderate figure, not a guarantee.

  • 120 × 30% = 36 recovered → 36 × $60 = $2,160/mo saved
  • Incremental recovery over email alone: 21.6 subscriptions × $60 = $1,296/mo, or ~$15,500/year.

What the SMS costs. Two segments per failed charge (bracketing the window), 120 failures = 240 segments/mo. Some customers only need one text, so call it ~200 segments to be honest about it.

At ReadySMS Standard pricing — $0.02/segment plus the $0.0045 carrier pass-through = $0.0245 all-in:

  • 200 × $0.0245 = $4.90/mo

You're spending under five dollars a month to recover an incremental ~$1,300 in monthly recurring revenue that email was leaving on the table. That's the entire pitch. The math is almost embarrassing.

Even if I'm wrong and SMS only lifts recovery to 20% instead of 30%, that's still 9.6 incremental subscriptions saved — $576/mo — for the same $4.90. Run it against your own failure rate and ARPU with our cost calculator; the ratio holds at basically any scale.

Where SMS doesn't help — and where it does

Honesty section. SMS dunning does nothing for the cards that genuinely can't pay — the customer whose company folded, the trial abuser, the account that was going to cancel anyway. If your involuntary failure rate is mostly voluntary churn wearing a costume, SMS won't fix that, and you should look at product retention instead. Reducing Churn in SaaS with Targeted SMS Campaigns is the better read there.

Where SMS earns its keep is the fixable failures: expired cards, reissued cards, temporary limits, fraud holds. Those are people who'd happily update payment details if someone reached them in time. Email reaches maybe an eighth of them before the final retry. A text reaches most of them.

The same front-running logic applies to renewals, not just failures — a card that's about to expire before an annual renewal is a dunning event waiting to happen. That's covered in The 90-60-14-Day Renewal Text Cadence That Recovers Annual SaaS Subs.

The practical takeaway

Failed-payment recovery is the highest-ROI SMS use case in SaaS, full stop, because:

  1. The revenue is already earned — you're preventing a loss, not chasing a new sale.
  2. The consent basis is clean when you handle it right (account phone number, disclosed use, recorded attestation, working STOP).
  3. The cost is trivial — single-digit dollars a month against four- to five-figure annual recovery.
  4. Timing beats copy — landing the text inside the retry window matters more than what it says.

If you want to test it, wire a two-text sequence to your failed-charge webhook, keep it inside your retry schedule, and measure incremental recovery against your email-only baseline for one billing cycle. ReadySMS starts with 2,500 free credits and no card required, which is more than enough segments to run that test end to end. If the incremental recovery beats $4.90 — and it will — you keep it running.

Start with the SaaS SMS strategy blueprint if you want the wider lifecycle picture, or check pricing to see where your volume lands.