Stripe decline codes, explained
When a payment fails, Stripe returns a decline code. That code tells you whether retrying is worth it, and whether the customer needs to update their card. Here is every code churnguardian recognises, what it means, and how to recover the payment.
Hard decline
A hard decline means the card cannot be charged again as-is. The customer has to update their payment method before a retry has any chance of succeeding.
- card_not_supportedCard type not supported→
- currency_not_supportedCurrency not supported by card→
- expired_cardCard has expired→
- incorrect_cvcCVC check failed→
- incorrect_numberCard number is incorrect→
- incorrect_zipZIP/postal code check failed→
- invalid_cardCard is invalid→
- invalid_expiry_monthExpiration month is invalid→
- invalid_expiry_yearExpiration year is invalid→
- merchant_blacklistMerchant blacklisted→
- restricted_cardCard has restrictions→
Soft decline
A soft decline is usually temporary. The card can often be charged successfully again shortly, without the customer changing anything.
- amount_too_highAmount too high→
- amount_too_lowAmount too low→
- call_issuerCall issuing bank→
- card_declinedGeneric decline by issuer→
- card_velocity_exceededCard velocity exceeded→
- do_not_honorDo not honor→
- generic_declineGeneric decline→
- high_riskHigh risk transaction→
- insufficient_fundsInsufficient funds→
- pin_try_exceededPIN tries exceeded→
- risk_declinedRisk declined→
- rule_declinedRule-based decline→
- transaction_not_allowedTransaction not allowed→
- withdrawal_limitWithdrawal limit exceeded→
Retryable decline
A retryable decline means the request failed for a transient reason. It is worth attempting again with spacing.
- authentication_required3D Secure authentication required→
- configuration_errorConfiguration error→
- duplicateDuplicate transaction→
- issuer_unavailableIssuer temporarily unavailable→
- network_errorNetwork error→
- processing_errorPayment processor error→
- rate_limitRate limited by processor→
- system_errorSystem error→
- temporarily_unavailableService temporarily unavailable→
- three_d_secure_required3D Secure required→
- timeoutRequest timeout→
Fraud decline
A fraud decline means the issuer flagged the charge as risky. This is not a normal payment failure and should not be retried.
Recover your first failed payment this week
Join bootstrapped and early-stage SaaS teams winning back thousands in MRR every month, on autopilot.
14-day free trial · No credit card required