Card decline codes explained: which to retry and which need the customer

insufficient_funds, do_not_honor, expired_card, authentication_required, lost_card and more - what each decline code means and the right recovery action.

Updated:

Dunning for small SaaS on Stripe, Razorpay or Dodo: smarter retries, card-update emails and WhatsApp nudges. Free leak calculator and decline code decoder.

Try Churnivo free

Every failed card payment comes with a decline code. Treating them all the same - retrying everything or emailing everyone - wastes recoveries.

CodeMeaningRetry?Best action
insufficient_fundsNot enough balance or creditYes, in a few daysRetry near typical paydays; gentle email
generic_decline / do_not_honorIssuer declined without a reasonYes, a few timesRetry at a different time; then ask customer to call their bank or use another card
try_again_laterTemporary issueYesAutomatic retry
processing_errorError on the network sideYesAutomatic retry
expired_cardCard past expiryNoCard-update email immediately
incorrect_cvc / incorrect_numberWrong detailsNoAsk for correct details
authentication_requiredBank needs 3-D Secure / OTPNoEmail with a link where the customer authenticates
card_not_supported / transaction_not_allowedCard can't be used for this purchase (e.g. international, recurring)NoAsk for another card or method
lost_card / stolen_card / pickup_cardCard blockedNeverAsk for a new card; don't mention why
revocation_of_authorizationCustomer told their bank to stopNeverTreat as a cancellation; send a respectful win-back
highest_risk_level / fraudulentFraud filterNeverReview the account

Two rules

  1. Don't retry hard declines (lost, stolen, revoked, fraud). Repeated retries can get your merchant account flagged.
  2. Say less about why. "Your payment didn't go through" is better than "your bank says your card was stolen".

Writing the email

  • Subject: Your [Product] payment didn't go through
  • Body: what happened in one line, one button ("Update payment method"), when access ends, a reply-to address.
  • Tone: helpful, not threatening.

Paste your decline codes into the free decline decoder to see which of your failed payments are recoverable.

Recover failed subscription payments: Stripe, Razorpay & WhatsApp

Try Churnivo free

More guides