Stripe Decline Codes · 2026 Glossary
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.
Soft Declines
Recoverable. The card is valid — retry logic and customer action can fix these.
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…
60–75% with smart retries
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…
20–35% with smart handling
View →card_declined
card_declined is Stripe's master catch-all decline code — it fires when the issuing bank refuses a transaction but doesn…
25–45%
View →generic_decline
generic_decline is Stripe's ultimate catch-all code — it fires when the issuing bank refuses a transaction without retur…
30–50%
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…
40–60%
View →transaction_not_allowed
transaction_not_allowed fires when the issuing bank or card network has determined that the specific type of transaction…
20–40%
View →card_velocity_exceeded
card_velocity_exceeded fires when the customer has hit a spending ceiling, transaction frequency limit, or credit limit …
45–65%
View →withdrawal_count_limit_exceeded
withdrawal_count_limit_exceeded fires when the customer has hit the maximum number of withdrawals or debit transactions …
50–70%
View →duplicate_transaction
duplicate_transaction fires when Stripe or the issuing bank detects that an identical charge — same card, same amount, s…
call_issuer
call_issuer fires when the customer's bank wants to speak with the cardholder directly before authorizing the transactio…
35–55%
View →new_account_information_available
new_account_information_available is a lifecycle notification decline — the card network or issuing bank is signaling th…
55–75%
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…
65–80%
View →authentication_required
authentication_required fires when the issuing bank or card network requires the cardholder to complete additional ident…
50–70%
View →approve_with_id
approve_with_id fires when the issuing bank's authorization system could not complete an automatic approval for the tran…
40–60%
View →Hard Declines
Non-recoverable via retry. Require customer action or card replacement.
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…
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…
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…
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…
View →
fraudulent
fraudulent is Stripe's most severe decline code — it fires when either Stripe Radar's machine learning engine or the iss…
View →
restricted_card
restricted_card fires when the issuing bank has placed a specific restriction on the card that prevents it from being us…
View →
security_violation
security_violation is a hard decline fired when the issuing bank's internal security rules or fraud detection systems fl…
View →
service_not_allowed
service_not_allowed fires when the issuing bank has determined that the specific service type or transaction category be…
View →
stop_payment_order
stop_payment_order is a deliberate, customer-initiated hard decline — the cardholder has contacted their bank and explic…
View →
not_permitted
not_permitted fires when the issuing bank or card network has determined that the cardholder is specifically not authori…
View →
revocation_of_authorization
revocation_of_authorization fires when the cardholder has specifically revoked the recurring payment authorization they …
View →
revocation_of_all_authorizations
revocation_of_all_authorizations is the nuclear version of revocation_of_authorization — the cardholder has instructed t…
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…
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…
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 …
View →
invalid_account
invalid_account fires when the issuing bank or card network cannot recognize or locate the account associated with the c…
View →
What to do next
You are here
Decline Code Glossary
30 Stripe decline codes explained
Check recoverability
Stripe Failure Lookup
See what's recoverable — and what isn't →
Then
Sign up for Recurflux
Automate recovery for every decline code →
Turn knowledge into recovered revenue
Code-specific retry scheduling, adaptive dunning, Card Health Monitoring, and dispute intelligence — across all 30 Stripe decline codes. Connect in under 5 minutes.