Stripe decline codes / insufficient_funds
Stripe insufficient_funds: what it means and how to recover the payment
insufficient_funds means the card did not have enough available balance or credit when Stripe tried to charge it. It is one of the more recoverable declines, because the situation often changes on its own.
- Decline code
- insufficient_funds
- Type
- Insufficient funds
- Who can fix it
- The customer
- Will a retry help?
- Likely: let Smart Retries run
What it means
The account did not have enough balance or credit at the time of the charge.
Not enough balance at the moment of the charge. Retrying around payday (Stripe does this) recovers most of these.
Why it happens
- The account balance was below the charge amount at that moment.
- A credit card close to or over its limit.
- Pending transactions reducing the available balance.
- A prepaid or debit card not topped up before the renewal date.
What to do
- Let a retry run a few days later, ideally after a typical pay date. Stripe's automatic retries can do this if enabled.
- Send a friendly note with a link to pay now or switch cards.
- Avoid several retries on the same day.
- If it repeats across billing cycles, ask the customer for a different payment method.
Should you retry?
Usually worth retrying after a few days: the funds problem often resolves itself, and a pay-now link speeds things up. Space the attempts out instead of repeating them back to back.
Customer email template
Neutral wording for this situation. Replace {name}, {product}, {link} and {company}.
Hi {name},
We could not collect the payment for {product} because the card had insufficient funds at the time. We will retry in a few days. If you prefer, you can pay now or switch cards here: {link}
Thanks,
{company}Handling many failed payments? See how FlowMRR helps you prioritize failed Stripe payments by revenue at risk. Want a ranked list from your own account? Try the free failed payment audit.
Try FlowMRR freeFrequently asked questions
How long should I wait before retrying insufficient_funds?
A few days is a common choice, ideally after a typical pay date. There is no universal best delay: Stripe's automatic retries use their own schedule, and you can add manual follow-up for important accounts.
Does insufficient_funds mean the customer wants to cancel?
No. It is usually a timing problem, not a decision to leave. Treat it as revenue at risk and follow up rather than assuming churn.