AltorLabFree Scan →
Error CodesINSUFFICIENT_FUNDS
shopifystriperecharge

INSUFFICIENT_FUNDS on Shopify Subscription — Smart Retry Strategy

Root cause

INSUFFICIENT_FUNDS fires when the customer's bank declines the subscription renewal because the account does not have enough funds at the moment of the charge attempt. This maps to Stripe's insufficient_funds decline code. It is a temporary condition — the customer's account balance may increase within days — and is one of the most recoverable failure types. Retrying immediately after an INSUFFICIENT_FUNDS decline almost never succeeds; retrying after 3–5 days, aligned with typical payday cycles, significantly improves recovery rates.

Symptoms

How to fix it

1

Confirm errorCode and do NOT retry immediately

In Shopify Admin, confirm the billing attempt errorCode is INSUFFICIENT_FUNDS. Do not trigger an immediate retry — insufficient funds rarely resolves in less than 48 hours. Immediate retries waste dunning attempts and may trigger additional bank fraud flags.

Open in admin →
2

Configure Recharge dunning to retry on day 3 and day 7

In Recharge Admin > Settings > Dunning, set the retry schedule for INSUFFICIENT_FUNDS to attempt at 3 days and 7 days after the initial failure. This aligns with common bi-weekly payday cycles. Avoid retrying on day 1 or same-day — recovery rates at those intervals are significantly lower.

Open in admin →
3

Send a soft payment reminder after day 3 retry fails

If the day 3 retry fails, send the customer a brief, non-alarming payment reminder. Frame it as a heads-up, not a demand. Include a link to update their payment method as an option. Many customers with temporarily insufficient funds will resolve the issue themselves once they receive a reminder.

4

Send payment update email if retry on day 7 also fails

After the day 7 retry fails, send a direct payment method update email. At this point the customer may have switched banks or be experiencing a longer financial issue. Provide a clear link to update payment in your customer portal. Use Recharge Admin > Customer record > Send Payment Update Email.

Open in admin →

Frequently asked questions

Why is INSUFFICIENT_FUNDS more recoverable than other Shopify subscription decline codes?

INSUFFICIENT_FUNDS indicates a temporary account balance issue, not a card problem. The card is valid, the customer relationship is intact — they simply lacked funds at the moment of billing. Retrying after 3–5 days, when payday cycles typically replenish accounts, recovers a meaningful portion of these failures without requiring any customer action.

How should dunning be configured differently for INSUFFICIENT_FUNDS vs PAYMENT_METHOD_REVOKED?

INSUFFICIENT_FUNDS should retry after 3 and 7 days — the delay aligns with payday cycles and improves recovery without customer action. PAYMENT_METHOD_REVOKED should skip retries entirely and immediately trigger a payment update email — the token is permanently invalid and retrying wastes dunning attempts.

How do I differentiate INSUFFICIENT_FUNDS from CARD_DECLINED in Shopify?

Both appear as errorCode on the Shopify billing attempt, but the codes are distinct: INSUFFICIENT_FUNDS vs CARD_DECLINED. In Stripe, they map to specific decline codes: insufficient_funds vs card_declined. INSUFFICIENT_FUNDS is more recoverable with a timed retry. CARD_DECLINED is the generic refusal and may warrant faster escalation to a payment method update.

Does the customer know their subscription payment failed due to insufficient funds?

Not automatically. Shopify does not notify customers of billing attempt failures. Recharge sends dunning emails only if dunning is configured for this error type. Without configured dunning, the customer has no idea their subscription is failing — which is why configuring Recharge dunning per error type is critical for revenue recovery.

Detect this error automatically

Free cross-stack scan finds all billing errors in 60 seconds.

Run Free Scan →