Payment Decline Code Lookup
Search Stripe's card decline codes, see whether it's worth retrying, and get a plain-language line to show the customer.
47 of 47 decline codes
authentication_requiredWorth retryingThe payment needs extra verification, usually 3D Secure.
Tell the customer: Your bank needs you to verify this payment. Try again and complete the verification step when it appears.
authentication_not_handledWorth retryingThe customer skipped the required verification step, so the bank declined it again.
Tell the customer: Try the payment again and complete the verification step this time.
approve_with_idWorth retryingThe payment couldn't be authorized as submitted.
Tell the customer: Try the payment again.
call_issuerDon't just retryDeclined for an unspecified reason.
Tell the customer: Contact your bank, or try a different card.
card_not_supportedDon't just retryThe card doesn't support this type of purchase.
Tell the customer: Check with your bank that this card can be used for this kind of purchase, or try another card.
card_velocity_exceededDon't just retryThe customer has hit a balance, credit or transaction-amount limit.
Tell the customer: Contact your bank, or try a different card.
currency_not_supportedDon't just retryThe card doesn't support this currency.
Tell the customer: Try a different card.
do_not_honorDon't just retryDeclined for an unspecified reason.
Tell the customer: Contact your bank, or try a different card.
duplicate_transactionDon't just retryAn identical charge (same amount, same card) went through very recently.
Tell the customer: Check your order history first, this charge may already have gone through.
expired_cardDon't just retryThe card has expired.
Tell the customer: Use a different card.
fraudulentDon't just retryStripe suspects the payment is fraudulent.
Tell the customer: Your card was declined. Try a different card or contact your bank.
generic_declineDon't just retryA generic decline, or blocked by Stripe Radar.
Tell the customer: Your card was declined. Try a different card or contact your bank.
incorrect_addressWorth retryingThe billing address doesn't match.
Tell the customer: Double-check the billing address matches your card statement and try again.
incorrect_cvcWorth retryingThe security code (CVC) is wrong.
Tell the customer: Check the 3 or 4 digit code on your card and try again.
incorrect_numberWorth retryingThe card number is wrong.
Tell the customer: Re-check the card number and try again.
incorrect_pinWorth retryingThe PIN entered was wrong (card-present payments only).
Tell the customer: Re-enter your PIN.
incorrect_zipWorth retryingThe postal code doesn't match.
Tell the customer: Check the billing postal code and try again.
insufficient_fundsDon't just retryNot enough available balance on the card.
Tell the customer: Use a different card or payment method.
invalid_accountDon't just retryThe card, or the account behind it, is invalid.
Tell the customer: Contact your bank to check the card is working, or try another card.
invalid_amountDon't just retryThe amount is invalid or over the card's allowed limit.
Tell the customer: If the amount looks right, check with your bank that you can make a purchase this size.
invalid_cvcWorth retryingThe security code (CVC) is wrong or in the wrong format.
Tell the customer: Check the 3 or 4 digit code on your card and try again.
invalid_expiry_monthWorth retryingThe expiry month is invalid.
Tell the customer: Re-check the card's expiry date.
invalid_expiry_yearWorth retryingThe expiry year is invalid.
Tell the customer: Re-check the card's expiry date.
invalid_numberWorth retryingThe card number is in the wrong format.
Tell the customer: Re-check the card number and try again.
invalid_pinWorth retryingThe PIN is wrong or in the wrong format (card-present payments only).
Tell the customer: Re-enter your PIN.
issuer_not_availableWorth retryingThe card issuer couldn't be reached to authorize the payment.
Tell the customer: Try the payment again in a few minutes.
lost_cardDon't just retryThe card has been reported lost.
Tell the customer: Your card was declined. Try a different card or contact your bank.
merchant_blacklistDon't just retryThe payment matches a value on your own block list.
Tell the customer: Your card was declined. Try a different card or contact your bank.
new_account_information_availableDon't just retryThe card, or the account behind it, is invalid.
Tell the customer: Contact your bank for more information, or try another card.
no_action_takenDon't just retryDeclined for an unspecified reason.
Tell the customer: Contact your bank, or try a different card.
not_permittedDon't just retryThis payment isn't permitted.
Tell the customer: Contact your bank, or try a different card.
offline_pin_requiredWorth retryingThe card needs a PIN (card-present payments only).
Tell the customer: Insert the card and enter your PIN.
online_or_offline_pin_requiredWorth retryingThe card needs a PIN (card-present payments only).
Tell the customer: Insert the card and enter your PIN.
pickup_cardDon't just retryThe card may have been reported lost or stolen.
Tell the customer: Contact your bank, or try a different card.
pin_try_exceededDon't just retryToo many wrong PIN attempts.
Tell the customer: Use a different card or payment method.
processing_errorWorth retryingAn error happened while processing the card.
Tell the customer: Try the payment again. If it keeps failing, contact your bank.
reenter_transactionWorth retryingThe issuer couldn't process the payment for an unspecified reason.
Tell the customer: Try the payment again. If it keeps failing, contact your bank.
restricted_cardDon't just retryThe card may have been reported lost or stolen.
Tell the customer: Contact your bank, or try a different card.
revocation_of_all_authorizationsDon't just retryDeclined for an unspecified reason.
Tell the customer: Contact your bank, or try a different card.
revocation_of_authorizationDon't just retryDeclined for an unspecified reason.
Tell the customer: Contact your bank, or try a different card.
security_violationDon't just retryDeclined for an unspecified reason.
Tell the customer: Contact your bank, or try a different card.
service_not_allowedDon't just retryDeclined for an unspecified reason.
Tell the customer: Contact your bank, or try a different card.
stolen_cardDon't just retryThe card has been reported stolen.
Tell the customer: Your card was declined. Try a different card or contact your bank.
stop_payment_orderDon't just retryDeclined for an unspecified reason.
Tell the customer: Contact your bank, or try a different card.
testmode_declineDon't just retryA Stripe test card number was used.
Tell the customer: This only happens with test cards. Use a real card to complete a real payment.
transaction_not_allowedDon't just retryDeclined for an unspecified reason.
Tell the customer: Contact your bank, or try a different card.
withdrawal_count_limit_exceededDon't just retryThe customer has hit a balance or credit limit.
Tell the customer: Use a different card or payment method.
What a decline code actually tells you
When a card payment fails, Stripe returns a decline_code alongside the generic error, with a more specific reason than the card network's own decline code alone gives you. That code is what should decide your next move: retry the same card, ask for a different one, or just say the payment was declined without more detail.
A few codes (fraudulent, stolen_card, lost_card, merchant_blacklist) are deliberately vague on purpose. Stripe recommends showing the customer the same generic message you'd show for any decline, not the specific reason, since surfacing it can tip off whoever's actually running the card.
Using this on Shopify or WooCommerce
- Shopify: Shopify Payments runs on Stripe under the hood for many regions; check a failed order's timeline or your Stripe Dashboard (if you use Stripe directly through a custom gateway) for the decline_code.
- WooCommerce: the official WooCommerce Stripe Gateway logs the decline code in the order notes and in WooCommerce → Status → Logs. Search there after a failed payment.
Questions people ask
Should I always retry a decline automatically?
No. Some codes (insufficient_funds, expired_card, stolen_card) won't succeed on retry and just annoy the customer or risk a second decline fee from your processor. Only retry the codes marked "worth retrying" here.
Why does Stripe hide the real reason for some declines?
For fraud-related codes, showing the specific reason ("reported stolen") can help someone testing stolen cards learn which ones still work. Stripe recommends a generic message for those instead.
Is this specific to Stripe, or does it cover other processors too?
This list is Stripe's own decline codes. PayPal, Authorize.net and other processors use different (though often similar) code sets.
Does a decline always mean the customer's card is the problem?
Usually, but not always. issuer_not_available and processing_error point at a temporary problem on the bank's or network's side, worth a retry a few minutes later.
Related tools
Last reviewed 30 September 2026.
Sources: Stripe Docs: Decline codes
