Back to Blog

How to Write a Failed Payment Email That Recovers Revenue

A failed payment doesn't have to mean a lost customer. Here's what to say, when to say it, and how to automate the recovery — so you stop losing revenue to bad credit cards.

Posted by

Stripe dashboard showing a failed payment email trigger

The silent revenue leak you're probably ignoring

Failed payments are one of the most underrated sources of churn in SaaS. A customer's card expires, a bank declines a charge, or a payment method gets updated — and suddenly you've lost a subscriber who never intended to leave.

Industry estimates put involuntary churn (churn caused by failed payments rather than a deliberate decision to cancel) at 20-40% of total churn for subscription businesses. That's a huge number, and almost all of it is recoverable with one simple thing: a timely email.

Why most SaaS founders don't send one

Failed payment emails require listening to Stripe webhook events, writing the email, setting up a sending pipeline, and making sure it goes out within hours of the failure — not days. For most developers, that's a few hours of plumbing work they keep putting off.

The result: customers quietly lose access, notice their card was declined, and assume they've been cancelled. By the time they check, they've already moved on to a competitor. A 30-second email could have saved them.

What a good failed payment email includes

1. A clear, non-alarming subject line

Avoid "URGENT: Payment Failed" — it sounds like a threat. Instead, try "Action needed: update your payment method" or "We couldn't process your payment." Keep it factual and calm.

2. A brief explanation

Tell them what happened in one sentence. "We tried to charge your card on file but the payment didn't go through." Don't over-explain. Don't blame them. Just state the fact.

3. A single clear call to action

Link directly to wherever they can update their payment method. In most cases this is your billing portal or Stripe's customer portal. Don't make them hunt for it — one button, one link.

4. Reassurance about their data

Customers worry they've lost access and their account is gone. Add a line like "Your account and data are safe — we just need a valid payment method to continue your subscription." This removes anxiety and makes them more likely to update rather than give up.

5. A deadline (optional but effective)

Stripe automatically retries failed payments, and it will eventually cancel the subscription after a number of retries. Let your customer know: "We'll retry your payment in 3 days. Update your card before then to avoid any interruption." A deadline creates urgency without being pushy.

A template you can use today

Here's a plain-text version you can adapt:

Subject: Action needed — we couldn't process your payment

Hi {{customerName}},

We tried to charge your {{planName}} subscription but
the payment didn't go through.

Your account is safe — we just need a valid payment
method to keep your subscription active.

Update your payment details here:
→ [Update Payment Method]

We'll retry the charge in 3 days. If the payment fails
again, your subscription will be paused.

If you have any questions, just reply to this email.

Thanks,
The {{companyName}} Team

With Muli, variables like {{customerName}}, {{planName}}, and {{companyName}} are replaced automatically with real data from Stripe. No manual personalisation needed.

Timing: send it immediately

The single most important thing about a failed payment email is when it goes out. Send it within an hour of the failure — ideally within minutes. The longer you wait, the more likely the customer is to notice their access is broken before you've reached out, and the harder it is to recover.

Stripe fires a invoice.payment_failed event the moment a payment attempt fails. Muli listens for that event and sends your email automatically — so the message lands in their inbox within minutes of the failed charge, every time, without any manual work from you.

How much revenue can you recover?

The numbers vary by business, but a well-timed failed payment email typically recovers 30-50% of failed charges. For a SaaS with 200 paying customers and a 2% monthly payment failure rate, that's 2-4 recovered subscriptions per month — or €500-1,000 per year in recovered revenue from a single email.

Set it up once and it runs forever. That's the compounding value of email automation: you do the work once, and it pays you back every month.

Set it up in Muli in two minutes

In Muli, recovering failed payments is a two-step process:

  • Create a template — Design your failed payment email in the visual editor. Add your brand colors, a clear CTA button that links to your billing portal, and your message.
  • Set the trigger to "Payment failed" — Muli listens to Stripe's invoice.payment_failed event and sends your email automatically the moment it fires.

That's it. Every future failed payment triggers the email automatically — no code, no cron jobs, no manual checking of your Stripe dashboard.

How to Write a Failed Payment Email That Recovers Revenue