insufficient_funds: Stripe Subscription Fix
Root cause
Stripe returns insufficient_funds when the issuer declines the subscription charge because the cardholder's linked account does not have enough available balance at the moment of the renewal attempt.
Symptoms
- • Stripe shows decline_code: insufficient_funds on the failed invoice or charge
- • Shopify billing attempts fail while the subscription contract stays active
- • Recharge keeps the subscription in dunning with no permanent card error
- • A retry several days later often succeeds without the customer changing cards
How to fix it
Stop same-day retry attempts immediately
Do not retry the renewal on the same day. This decline is usually caused by temporary account balance timing, so immediate retries rarely recover revenue. Pause aggressive dunning and note the customer's normal billing day before scheduling the next attempt.
Open in admin →Retry near the customer's payday window
Schedule the next attempt 3-5 days later, ideally aligned with when the customer is likely to be paid. That timing materially improves recovery rates for debit-heavy subscriber bases. Use one controlled retry instead of multiple rapid attempts.
Send update email after repeated failures
If the planned retry still fails, send a payment reminder that includes a payment method update link. Explain that the charge did not go through and they can either wait for funds to become available or switch cards. Do not cancel immediately after the first failure unless your dunning policy requires it.
Open in admin →Frequently asked questions
Why should insufficient_funds retries be aligned with payday timing?
Because this code means the account balance was too low at the exact moment of billing, not that the card itself is invalid. Many subscription merchants see better recovery when they retry 3-5 days later, especially around common payroll cycles. Same-day retries usually fail again and waste dunning attempts that could be used more strategically.
Should the customer always replace their card after insufficient_funds?
No. insufficient_funds is usually a temporary cash-flow issue, so the stored card may still be perfectly usable. First try a delayed retry and a reminder email. Ask for a new payment method only if the scheduled retry also fails or the customer tells you they no longer use that account for subscription payments.
Detect this error automatically
Free cross-stack scan finds all billing errors in 60 seconds.
Run Free Scan →