← Resources

Stripe Decline Codes · 2026 Glossary

Every Stripe decline code.
What they mean. How to fix them.

30 decline codes with plain-English explanations, root causes, optimal retry schedules, recovery benchmarks, and what not to do. Built for SaaS founders and engineers who want to stop guessing and start recovering.

14 soft declines·16 hard declines·May 2026

Soft Declines — Recoverable

insufficient_funds

When Stripe returns insufficient_funds, the customer's bank declined the charge because their account or card doesn't ha

View →

do_not_honor

do_not_honor is the most common and most ambiguous decline code in all of payment processing — the customer's issuing ba

View →

card_declined

card_declined is Stripe's master catch-all decline code — it fires when the issuing bank refuses a transaction but doesn

View →

generic_decline

generic_decline is Stripe's ultimate catch-all code — it fires when the issuing bank refuses a transaction without retur

View →

no_action_taken

no_action_taken is a soft decline returned when the issuing bank received the authorization request but chose not to act

View →

transaction_not_allowed

transaction_not_allowed fires when the issuing bank or card network has determined that the specific type of transaction

View →

card_velocity_exceeded

card_velocity_exceeded fires when the customer has hit a spending ceiling, transaction frequency limit, or credit limit

View →

withdrawal_count_limit_exceeded

withdrawal_count_limit_exceeded fires when the customer has hit the maximum number of withdrawals or debit transactions

View →

duplicate_transaction

duplicate_transaction fires when Stripe or the issuing bank detects that an identical charge — same card, same amount, s

View →

call_issuer

call_issuer fires when the customer's bank wants to speak with the cardholder directly before authorizing the transactio

View →

new_account_information_available

new_account_information_available is a lifecycle notification decline — the card network or issuing bank is signaling th

View →

try_again_later

try_again_later is a temporary, time-bound soft decline — the issuing bank or card network is not rejecting the transact

View →

authentication_required

authentication_required fires when the issuing bank or card network requires the cardholder to complete additional ident

View →

approve_with_id

approve_with_id fires when the issuing bank's authorization system could not complete an automatic approval for the tran

View →

Hard Declines — Non-recoverable via Retry

expired_card

expired_card is one of the most straightforward — and most preventable — decline codes in Stripe: the card on file has p

Hard

View →

incorrect_cvc

incorrect_cvc fires when the 3 or 4-digit security code (CVV/CVC) entered by the customer doesn't match what the card is

Hard

View →

lost_card

lost_card is a hard decline fired when the customer's issuing bank has been notified that the physical card is lost — th

Hard

View →

stolen_card

stolen_card is a permanent hard decline fired when the issuing bank has been notified that the card was stolen — every f

Hard

View →

fraudulent

fraudulent is Stripe's most severe decline code — it fires when either Stripe Radar's machine learning engine or the iss

Hard

View →

restricted_card

restricted_card fires when the issuing bank has placed a specific restriction on the card that prevents it from being us

Hard

View →

security_violation

security_violation is a hard decline fired when the issuing bank's internal security rules or fraud detection systems fl

Hard

View →

service_not_allowed

service_not_allowed fires when the issuing bank has determined that the specific service type or transaction category be

Hard

View →

stop_payment_order

stop_payment_order is a deliberate, customer-initiated hard decline — the cardholder has contacted their bank and explic

Hard

View →

not_permitted

not_permitted fires when the issuing bank or card network has determined that the cardholder is specifically not authori

Hard

View →

revocation_of_authorization

revocation_of_authorization fires when the cardholder has specifically revoked the recurring payment authorization they

Hard

View →

revocation_of_all_authorizations

revocation_of_all_authorizations is the nuclear version of revocation_of_authorization — the cardholder has instructed t

Hard

View →

currency_not_supported

currency_not_supported fires when the customer's card issuer does not support the currency in which your Stripe charge w

Hard

View →

pickup_card

pickup_card is a hard decline with a serious security implication — the issuing bank has flagged this card as one that s

Hard

View →

card_not_supported

card_not_supported fires when the customer's card type is not accepted for this specific type of transaction — the card

Hard

View →

invalid_account

invalid_account fires when the issuing bank or card network cannot recognize or locate the account associated with the c

Hard

View →

Turn knowledge into recovered revenue

Recurflux handles every one of these codes automatically.

Code-specific retry scheduling, adaptive dunning, Card Health Monitoring, and dispute intelligence — across all 30 Stripe decline codes. Connect in under 5 minutes.