Reference

Stripe decline codes

Every Stripe decline code, what it means, whether the payment is recoverable, and the exact retry strategy for each. Use this reference when building or tuning a dunning flow.

Soft declines

Temporary. The card is still valid. Retry with the right timing and most will recover. Examples: insufficient_funds, processing_error, try_again_later.

Hard declines

Permanent. The card cannot be charged. Skip retries and contact the customer. Examples: expired_card, incorrect_number, stolen_card.

Complete reference

CodeMeaning
insufficient_fundsThe card does not have enough available balance or credit to cover the charge at the moment the transaction was attempted.
generic_declineThe card issuer declined the charge but did not provide a specific reason. This is a catch-all soft decline used when the bank will not say why.
card_declinedA generic decline from the card issuer. Very similar to generic_decline: the bank said no without giving a specific reason.
do_not_honorThe issuing bank has flagged the charge, usually for a fraud or risk reason, and will not approve it right now.
expired_cardThe card has passed its expiration date. This is a hard decline: retrying will never succeed until the card is replaced.
incorrect_numberThe card number is not valid. It likely failed the Luhn checksum or does not exist.
invalid_numberThe card number is not a valid card number according to the issuer.
incorrect_cvcThe card verification code (CVC) provided does not match what the bank has on file.
invalid_cvcThe CVC provided is not formatted correctly (wrong length or contains non-digits).
invalid_expiry_monthThe expiration month submitted is not a valid value (not between 1 and 12).
invalid_expiry_yearThe expiration year is invalid, typically because it is in the past or is not a valid 4-digit year.
incorrect_zipThe ZIP or postal code entered does not match the billing address the bank has on file for this card.
authentication_requiredThe card issuer requires Strong Customer Authentication (3D Secure) before the charge can proceed.
fraudulentThe card issuer has flagged this specific card as fraudulent. The card is compromised and cannot be charged.
stolen_cardThe card has been reported stolen to the issuing bank. It cannot be charged.
lost_cardThe card was reported lost to the issuer and has been blocked.
pickup_cardThe card issuer has instructed the merchant to retain the card. The card is blocked.
card_not_supportedThe card does not support this type of transaction.
currency_not_supportedThe card cannot accept charges in the currency you tried to use.
processing_errorA temporary error occurred at Stripe or the card network while processing the charge.
try_again_laterA temporary issue at the issuer side. The charge should succeed if retried soon.
issuer_not_availableThe card issuer could not be reached by the card network. A temporary issue.
reenter_transactionThe issuer returned a generic "try again" response, indicating a transient problem.
call_issuerThe card issuer requires the customer to contact them before approving the charge.
card_velocity_exceededThe card has exceeded a velocity limit (too many transactions or too much amount in a short window).
withdrawal_count_limit_exceededThe card has reached its daily transaction count limit.
transaction_not_allowedThe card issuer has blocked this type of transaction for this card.
not_permittedThe payment type is not allowed by the card issuer.
service_not_allowedThe card issuer does not allow charges for your merchant category or service type.
restricted_cardThe card has been restricted by the issuer for specific use cases or amounts.
invalid_accountThe account associated with the card is not valid or has been closed.
new_account_information_availableThe issuer has newer card information available (new number, new expiration).
pin_try_exceededThe customer has entered an incorrect PIN too many times; the card is temporarily locked.
invalid_amountThe charge amount is invalid (too small, too large, or malformed).
duplicate_transactionThe issuer detected what appears to be a duplicate of a recent transaction.
merchant_blacklistThe card issuer has blocked your merchant account specifically.
approve_with_idThe issuer requests manual verification before approving the charge.

Soft declines

13 codes

Temporary issue. The card is still valid. High recovery rate with proper retry timing.

Hard declines

19 codes

Permanent issue. The card cannot be charged. Customer must provide a new payment method.

expired_card

The card has passed its expiration date. This is a hard decline: retrying will never succeed until the card is replaced.

incorrect_number

The card number is not valid. It likely failed the Luhn checksum or does not exist.

invalid_number

The card number is not a valid card number according to the issuer.

incorrect_cvc

The card verification code (CVC) provided does not match what the bank has on file.

invalid_cvc

The CVC provided is not formatted correctly (wrong length or contains non-digits).

invalid_expiry_month

The expiration month submitted is not a valid value (not between 1 and 12).

invalid_expiry_year

The expiration year is invalid, typically because it is in the past or is not a valid 4-digit year.

incorrect_zip

The ZIP or postal code entered does not match the billing address the bank has on file for this card.

card_not_supported

The card does not support this type of transaction.

currency_not_supported

The card cannot accept charges in the currency you tried to use.

transaction_not_allowed

The card issuer has blocked this type of transaction for this card.

not_permitted

The payment type is not allowed by the card issuer.

service_not_allowed

The card issuer does not allow charges for your merchant category or service type.

restricted_card

The card has been restricted by the issuer for specific use cases or amounts.

invalid_account

The account associated with the card is not valid or has been closed.

new_account_information_available

The issuer has newer card information available (new number, new expiration).

pin_try_exceeded

The customer has entered an incorrect PIN too many times; the card is temporarily locked.

invalid_amount

The charge amount is invalid (too small, too large, or malformed).

merchant_blacklist

The card issuer has blocked your merchant account specifically.

Authentication requireds

1 codes

Bank requires extra verification (like 3D Secure). Recoverable once the customer authenticates.

Automate decline handling

Rebounce classifies every decline automatically

Smart retries for soft declines, immediate customer outreach for hard declines, multi-channel follow-up via email, SMS, WhatsApp, and in-app banners. From $3.50/mo.

Start free trial