Stripe insufficient_funds — recovery guide

The customer's card didn't have enough money to cover the charge. Often self-resolves within 1–2 weeks. Here's how to time your retries and customer outreach.

TL;DR

The customer is broke right now, not broken. Wait 3–5 days (past most payday cycles), retry once. If still failing, email with a Billing Portal link so they can swap to a different card. Do not retry more than 3 times — it will keep failing until payday.

What does insufficient_funds mean?

insufficient_funds means the customer's card account does not have enough available balance for the charge. This is almost always on debit cards or low-limit credit cards near the end of a billing cycle.

Unlike card_declined, this one is specific: the bank told Stripe exactly why it refused. That's useful — you can time your retries intelligently.

Why it happens

When to retry

Timing matters more here than for any other decline code. Payday patterns in the US:

A reasonable default: retry at +3 days, +7 days, +14 days. Catches all three payday cadences with three tries.

What to tell the customer

Be kind. This customer is usually not churning by choice. The email script that works best:

Hi [name], your payment of $[amount] didn't go through this time. No stress — we'll try again in a few days. If you'd like to switch to a different card or update your info, you can do it here in 20 seconds: [Billing Portal link].

Do not say "insufficient funds." That embarrasses the customer and they'll churn from shame. "Didn't go through" is neutral and equally accurate.

Should you offer to move to a cheaper plan?

If this is a recurring pattern with the same customer (2+ insufficient_funds failures in 3 months), yes — offer a downgrade before they churn completely. A $9/mo customer is worth more than a $49/mo cancellation. RecoverKit's AI can detect this pattern and auto-include a downgrade offer in the second email.

Related decline codes

Want payday-aware retries to run themselves?

RecoverKit spaces retries intelligently across payday cycles and emails customers with the right tone at each step. $19/mo.

Start Free Trial →