50 Decline Codes

Stripe Decline Code Directory

Every Stripe decline code explained. Learn what each code means for your SaaS revenue, why payments fail, and proven recovery tactics to reduce involuntary churn.

Card Errors

12 codes
insufficient_fundsRetryable

Insufficient Funds

The customer's card does not have enough available balance to cover the charge. This is the most common decline code for SaaS subscription renewals and often resolves itself within a few days when the customer replenishes their account.

common
expired_card

Expired Card

The customer's card has passed its expiration date and the issuing bank will no longer authorize transactions on it. This is a predictable decline that SaaS businesses can proactively prevent by monitoring card expiration dates and prompting customers to update their payment details before renewal.

common
incorrect_cvc

Incorrect CVC

The card verification code (CVC/CVV) provided does not match what the issuing bank has on file. This typically occurs during initial card entry rather than recurring charges, since CVC is not stored for subscriptions. For SaaS businesses, this usually means a customer mistyped their security code at checkout.

common
card_declinedRetryable

Card Declined

A generic decline where the issuing bank has refused the transaction without providing a specific reason. This is a catch-all code that banks use when they do not want to disclose the exact cause. For SaaS businesses, this is frustrating because it offers limited actionable information.

common
incorrect_number

Incorrect Number

The card number entered does not correspond to a valid card. This is a checkout-time error that prevents the initial transaction from being created. For SaaS businesses, this means a potential customer could not complete their signup or payment update.

occasional
incorrect_zip

Incorrect ZIP/Postal Code

The ZIP or postal code provided does not match the billing address on file with the card issuer. AVS (Address Verification System) checks flag this mismatch. For SaaS businesses, this can indicate a customer moved or made a typo in their billing address.

occasional
invalid_expiry_month

Invalid Expiry Month

The expiration month provided is not a valid value (must be 01-12). This is a data entry error that occurs at checkout when a customer enters an impossible month value. SaaS businesses should catch this client-side before it reaches Stripe.

rare
invalid_expiry_year

Invalid Expiry Year

The expiration year provided is not valid, typically because it is in the past or an unrealistic future date. This checkout-time error indicates the customer entered incorrect expiration details. SaaS businesses should validate expiry dates client-side.

rare
invalid_cvc

Invalid CVC

The CVC value provided is not in a valid format (wrong number of digits or non-numeric characters). Unlike incorrect_cvc which means the value did not match, invalid_cvc means the format itself is wrong. SaaS businesses should validate CVC format client-side.

rare
invalid_number

Invalid Number

The card number is not a valid credit card number, typically failing the Luhn algorithm check or having an incorrect length. This is a checkout-time error that should be caught by client-side validation. SaaS businesses using Stripe Elements will rarely see this.

rare
card_not_supported

Card Not Supported

The card does not support the type of transaction being attempted. This can happen when a card is not enabled for e-commerce, international, or recurring transactions. SaaS businesses may see this with prepaid cards or cards from certain regions.

occasional
currency_not_supported

Currency Not Supported

The card does not support the currency in which the charge was attempted. Some cards are restricted to their home currency or a limited set of currencies. SaaS businesses serving international customers may encounter this when billing in a single currency.

rare

Bank Errors

10 codes
do_not_honorRetryable

Do Not Honor

The customer's bank has declined the transaction without specifying a reason. This is one of the most common and frustrating decline codes because it provides no specific cause. For SaaS businesses, this often requires direct customer communication to resolve.

common
issuer_not_availableRetryable

Issuer Not Available

The card issuing bank could not be reached to authorize the transaction. This is typically a temporary network or system issue on the bank's side. SaaS businesses should retry these transactions as they usually succeed once the issuer is back online.

occasional
new_account_information_available

New Account Information Available

The card has been replaced with a new one and the bank is indicating that updated account information is available. This often happens when a bank proactively reissues a card. SaaS businesses should use Stripe's automatic card updater to fetch the new details.

occasional
no_action_takenRetryable

No Action Taken

The bank did not process the transaction and took no action. This vague response typically means the bank's systems did not fully process the authorization request. For SaaS businesses, this is similar to a do_not_honor and should be retried.

rare
not_permitted

Not Permitted

The bank does not allow this type of transaction on the card. This can mean the card is restricted from certain merchant categories, online purchases, or international transactions. SaaS businesses should guide the customer to contact their bank or use a different card.

occasional
try_again_laterRetryable

Try Again Later

The issuing bank has returned a temporary error and suggests retrying the transaction later. This is an explicitly retryable decline that usually resolves within hours. SaaS businesses should have automated retry logic to handle this seamlessly.

occasional
withdrawal_count_limit_exceededRetryable

Withdrawal Count Limit Exceeded

The customer has exceeded the maximum number of transactions or withdrawal attempts allowed by their bank in a given period. This is common with debit cards that have daily transaction limits. SaaS businesses should retry on the next business day.

occasional
call_issuerRetryable

Call Issuer

The bank is requesting that the cardholder call them directly to authorize or resolve an issue with the transaction. This is a deliberate block that requires customer action. SaaS businesses need to communicate this clearly to the customer.

occasional
refer_to_issuerRetryable

Refer to Issuer

Similar to call_issuer, the bank is asking the cardholder to contact them about this transaction. The distinction is subtle but generally indicates a less urgent issue. SaaS businesses should treat this the same as call_issuer.

rare
approve_with_idRetryable

Approve with ID

The bank would approve the transaction if the cardholder presented identification. Since this is not possible for online transactions, the bank is effectively declining. SaaS businesses should retry or ask the customer to contact their bank to pre-approve.

rare

Fraud & Security

8 codes
fraudulent

Fraudulent

The issuing bank suspects the transaction is fraudulent and has declined it to protect the cardholder. This is a serious flag that indicates either genuine fraud or an overly sensitive fraud detection system. SaaS businesses should not retry these without customer verification.

occasional
lost_card

Lost Card

The cardholder has reported this card as lost. The bank has deactivated the card and will decline all future transactions. SaaS businesses should stop retrying immediately and contact the customer to provide a new payment method.

rare
stolen_card

Stolen Card

The cardholder has reported this card as stolen. All transactions on this card will be declined permanently. SaaS businesses should stop retrying and flag this account for review, as the person who signed up may not be the cardholder.

rare
pickup_card

Pickup Card

The bank is requesting that the card be physically confiscated, typically because it has been reported as lost, stolen, or is being used fraudulently. For online transactions, this translates to a hard decline. SaaS businesses should treat this as a permanent block.

rare
restricted_card

Restricted Card

The card has been restricted by the issuing bank and cannot be used for this transaction. This can be due to fraud concerns, account standing issues, or geographic restrictions. SaaS businesses should not retry and should contact the customer.

rare
security_violation

Security Violation

The bank has flagged a security violation on this transaction or card. This is a serious fraud indicator suggesting the card or transaction has been compromised. SaaS businesses should stop retries and review the account carefully.

rare
merchant_blacklist

Merchant Blacklist

The card was declined because the cardholder has specifically requested their bank to block charges from your business, or Stripe's own fraud systems flagged the transaction. This is a strong signal that the customer does not want to be charged.

rare
revocation_of_all_authorizations

Revocation of All Authorizations

The cardholder has instructed their bank to revoke all authorizations and block all future transactions on this card. This is a definitive action by the customer and means the card is permanently blocked. SaaS businesses should respect this decision.

rare

Processing Errors

8 codes
processing_errorRetryable

Processing Error

A generic error occurred while processing the transaction. This is usually a temporary issue in the payment network, not related to the customer's card or account. SaaS businesses should retry as these typically resolve quickly.

occasional
duplicate_transaction

Duplicate Transaction

The bank detected this as a duplicate of a recent transaction and declined it to protect the cardholder from being charged twice. This can happen when your system sends the same charge request multiple times. SaaS businesses should verify their billing logic.

occasional
invalid_amount

Invalid Amount

The charge amount is not valid, either because it is negative, zero, exceeds the card's single-transaction limit, or is not in the correct format for the currency. SaaS businesses should verify their pricing and billing calculation logic.

rare
reenter_transactionRetryable

Reenter Transaction

The bank is requesting that the transaction be submitted again. This is similar to try_again_later but specifically suggests resubmitting the same transaction. SaaS businesses can safely retry this charge.

rare
generic_declineRetryable

Generic Decline

The bank declined the transaction without providing any specific reason. This is the most common decline code and acts as a catch-all when the bank does not categorize the decline. SaaS businesses need robust dunning flows to handle these effectively.

common
testmode_decline

Test Mode Decline

A test mode card number was used in a live mode transaction, or vice versa. This is a development error, not a customer issue. SaaS businesses should ensure their environment configuration separates test and live API keys.

rare
live_mode_test_card

Live Mode Test Card

A Stripe test card number was used in live mode. This happens when developers or testers accidentally use test card numbers against the live API. It can also occur when a customer enters a test card number they found online.

rare
card_velocity_exceededRetryable

Card Velocity Exceeded

Too many transactions have been attempted on this card in a short period, exceeding the bank's velocity limits. This can be triggered by your retry logic or by the customer using the card at many merchants. SaaS businesses should space out retry attempts.

occasional

Authentication

6 codes
authentication_requiredRetryable

Authentication Required

The bank requires the cardholder to complete 3D Secure (3DS) authentication before the transaction can be approved. This is increasingly common due to Strong Customer Authentication (SCA) regulations in Europe and other regions.

common
offline_pin_required

Offline PIN Required

The card requires an offline PIN for authorization, which is not possible for online transactions. This typically occurs with certain debit cards, especially in European markets. SaaS businesses should suggest an alternative card.

rare
online_or_offline_pin_requiredRetryable

Online or Offline PIN Required

The card requires either an online or offline PIN for verification. For e-commerce, the online PIN option may be satisfied through 3D Secure. SaaS businesses should implement 3D Secure or ask the customer to use a different card.

rare
pin_try_exceeded

PIN Try Exceeded

The maximum number of PIN entry attempts has been exceeded for this card. The card is now temporarily or permanently locked until the cardholder contacts their bank. For online SaaS businesses, this means someone previously failed PIN verification at a physical terminal.

rare
revocation_of_authorization

Revocation of Authorization

The cardholder has specifically revoked authorization for this charge or merchant. Unlike the blanket revocation_of_all_authorizations, this targets a specific transaction or recurring agreement. SaaS businesses should stop charging and reach out to the customer.

rare
service_not_allowed

Service Not Allowed

The card or account is not permitted to use this type of service or make this type of transaction. This is similar to not_permitted but specifically relates to the service category. SaaS businesses may see this with cards restricted from online subscriptions.

rare

Account Issues

6 codes
invalid_account

Invalid Account

The card number does not correspond to a valid account. This can mean the account has been closed, was never opened, or the card number is wrong. SaaS businesses should ask the customer to verify their card details or use a different card.

rare
transaction_not_allowed

Transaction Not Allowed

The bank does not allow this specific transaction on the account. This is an account-level restriction that may be related to the transaction type, amount, or merchant category. SaaS businesses should ask the customer to contact their bank.

occasional
invalid_pinRetryable

Invalid PIN

The PIN entered was incorrect. While this is primarily a point-of-sale decline code, it can appear in online transactions for certain card types that require online PIN verification. SaaS businesses rarely encounter this for standard e-commerce.

rare
card_account_closed

Card Account Closed

The account associated with this card has been permanently closed by the bank or customer. No further transactions will be authorized. SaaS businesses must obtain a new payment method to continue billing.

occasional
debit_not_authorized

Debit Not Authorized

The debit transaction was not authorized by the cardholder or account holder. This typically appears for ACH or debit card transactions where the bank requires explicit prior authorization. SaaS businesses should verify the customer agreed to the charge.

rare
account_closed

Account Closed

The bank account linked to the payment method has been closed. This is similar to card_account_closed but may apply more broadly to bank accounts used for ACH or direct debit. SaaS businesses need to collect a new payment method.

rare
Free Tool

How healthy is your Stripe account?

Get a free churn health report. Find pending cancellations, failed payments, and expiring cards putting your MRR at risk.

Run Free Audit