Stripe Error generic_decline: Generic decline (card_declined)
The issuer declined without giving Stripe a reason. Ask the customer to contact their bank or use another card; check Radar if many cards decline at once.
Identify: does your log match?
{
"error": {
"code": "card_declined",
"decline_code": "generic_decline",
"doc_url": "https://stripe.com/docs/error-codes/card-declined",
"message": "Your card was declined.",
"request_log_url": "https://dashboard.stripe.com/test/logs/req_9aBcD1eFgH2iJk",
"type": "card_error"
}
}- High
Issuer fraud rules, no reason given
Banks often decline cross-border, unusual-amount or new-merchant payments and return a generic reason to avoid tipping off fraudsters.
- Medium
Card not enabled for online payments
Some debit and prepaid cards are blocked for card-not-present or international transactions.
- Low
Radar or merchant block rule
A custom Radar rule can block the payment; then the decline shows outcome.type blocked instead of issuer_declined.
Fix
Inspect the charge outcome before guessing
console.log('declined', err.message);const pi = await stripe.paymentIntents.retrieve(piId, { expand: ['latest_charge'], }); const o = pi.latest_charge?.outcome; console.log(o?.type, o?.network_status, o?.reason, o?.risk_level); // issuer_declined | blocked, declined_by_network, ..., normal|elevated|highest
outcome.type tells you whether the issuer or Radar declined, which decides whether the customer or you must act.
Verify: reproduce it on purpose
$ stripe payment_intents create --amount=2000 --currency=usd --payment-method=pm_card_chargeDeclined --confirm=trueRun it against a dev environment to trigger generic_decline on purpose and test your error handler.
Prevent
- Enable 3D Secure via automatic payment methods to lower declines.
- Pass billing address and email to improve issuer approval.
- Watch decline rate per BIN country in Radar.
FAQ
How do I test generic_decline?
Use card 4000 0000 0000 0002 in test mode. It returns card_declined with decline_code generic_decline.
Can Stripe tell me why the bank declined?
No. generic_decline means the issuer gave no reason; only the cardholder can get details from their bank.
Should I retry a generic decline?
Not automatically with the same card. Visa and Mastercard penalize repeated retries of declined cards.
Related errors
Last verified 2026-10-19 · Source: Stripe OpenAPI spec + decline codes + webhook docs · Official docs ↗ · ~14,800 searches/mo