NewNo plan feeNo plan fee. Just 2.9% + $0.30 per card sale, and signing up is free.Try now →

Decline codes

Stripe decline codes: what each one means and how to fix it

Checked

Stripe decline codes tell you why a card payment failed on Stripe. Some come from the card's bank, such as insufficient_funds or expired_card; a few come from Stripe itself, such as fraudulent or merchant_blacklist. Stripe returns them as the decline_code on a card_declined error. Each page below explains one code, says whether a retry can work under card network rules, and shows what PlatformDTC checkout and subscription renewals do with it.

CodeMeaning
authentication_requiredThe bank wants the cardholder to verify the payment, usually with 3D Secure.
authentication_not_handledVerification was required, the shopper skipped it, and the bank declined again.
approve_with_idThe bank could not authorize the payment as sent; one more try may work.
call_issuerThe bank declined without a reason and wants the cardholder to contact it.
card_not_supportedThe card can't be used for this kind of purchase.
card_velocity_exceededThe card's balance, credit limit or amount limit has been reached.
currency_not_supportedThe card can't be charged in the currency of the payment.
do_not_honorThe bank declined the card without saying why.
do_not_try_againDeprecated code: declined for an unknown reason; don't charge this card again.
duplicate_transactionAn identical payment on the same card was submitted moments ago.
expired_cardThe card is past its expiry date.
fraudulentStripe's fraud checks suspected the payment was fraudulent and blocked it.
generic_declineDeclined for an unknown reason, or blocked by Stripe Radar or Adaptive Acceptance.
incorrect_addressThe billing address entered doesn't match the bank's records.
incorrect_cvcThe card's security code (CVC) is wrong.
incorrect_numberThe card number entered is wrong.
incorrect_pinThe PIN entered on a card reader is wrong.
incorrect_zipThe billing postal code doesn't match the bank's records.
insufficient_fundsThe card doesn't have enough money or credit for this payment.
invalid_accountThe card or the account behind it is no longer valid.
invalid_amountThe payment amount is invalid or above what the card allows.
invalid_cvcThe card's security code (CVC) is incorrect.
invalid_expiry_monthThe card's expiry month is invalid.
invalid_expiry_yearThe card's expiry year is invalid.
invalid_numberThe card number is incorrect.
invalid_pinThe PIN entered is incorrect.
issuer_not_availableThe card's bank could not be reached, so the payment was never authorized.
lost_cardThe card has been reported lost. It can't be used; the shopper needs another card.
merchant_blacklistThe payment matched an entry on the store's own Stripe block list.
new_account_information_availableThe card or its account is invalid; the bank may hold newer details for it.
no_action_takenThe card was declined for a reason the bank did not share.
not_permittedThe bank says this payment is not permitted on this card.
offline_pin_requiredIn-person only: the card needs to be inserted and a PIN entered.
online_or_offline_pin_requiredIn-person only: the card needs a PIN, by Online PIN or chip and PIN.
pickup_cardThe card can't be used for this payment; it may have been reported lost or stolen.
pin_try_exceededToo many wrong PIN attempts; the customer must use another card or method.
processing_errorAn error occurred while processing the card. Usually temporary.
reenter_transactionThe bank couldn't process the payment for an unknown reason; try it again.
restricted_cardThe card can't be used for this payment; it may have been reported lost or stolen.
revocation_of_all_authorizationsThe bank declined; typically the cardholder has stopped all future payments.
revocation_of_authorizationThe bank declined; typically the cardholder revoked payments to this store.
security_violationThe bank declined for a reason it did not share; often a security rule.
service_not_allowedThe card was declined for a reason the bank did not give.
stolen_cardThe card has been reported stolen. It can't be used again.
stop_payment_orderThe bank declined; the code's name points to a stop-payment order on the card.
testmode_declineA Stripe test card number was used in a real payment.
transaction_not_allowedThe bank declined; the card does not allow this type of transaction.
try_again_laterDeprecated code: the bank declined for an unknown reason; try again later.
withdrawal_count_limit_exceededThe customer has gone over the balance or credit limit available on the card.
mobile_device_authentication_requiredThe payment needs authentication; the customer should tap their phone again.
card_declinedStripe's error code for any declined card; the decline_code says why.
payment_intent_authentication_failureThe card failed the bank's authentication check (such as 3-D Secure).

Which Stripe decline codes can be retried

Stripe sorts many declines as generic, so the exact reason is often unclear. As a rule of thumb, funds, limit and temporary codes can clear later; wrong card details need the shopper to re-enter them; lost, stolen, closed, restricted and expired cards need a different card.

Stripe also returns an advice code with some declines: do_not_try_again means do not use the card again for that payment, try_again_later means a retry is allowed, and confirm_card_data means some card details are wrong. Stripe recommends at most eight retries for a charge that permits retries.

On the default fixed schedule (retries 1, 3, 5 and 7 days apart), declines in the last two groups also stop at the first failure: the card is not retried, the subscription is held past due and the customer gets the update-card or confirm-payment email. Only the other groups are retried on that schedule.

GroupExample codesWhat happens
Low fundsinsufficient_fundsRetried on the customer's likely payday, or 2, 5, 8, 13 and 18 days after the first decline: up to 6 attempts (7 on PayPal, 2 on a prepaid card)
Temporaryprocessing_error, issuer_not_available, try_again_later, card_velocity_exceeded, card_decline_rate_limit_exceededRetried 2, 5 and 8 days after the first decline: up to 4 attempts
No reason givendo_not_honor, generic_decline, call_issuer, approve_with_id, no_action_taken, duplicate_transactionOne retry 48 to 72 hours later, then the customer is asked for a new card
Bank confirmation neededauthentication_required, authentication_not_handled, mobile_device_authentication_requiredNo blind retry; the customer is asked to confirm the payment with their bank
Card can't be usedlost_card, stolen_card, expired_card, incorrect_number, incorrect_zip, restricted_card, pin_try_exceeded, do_not_try_againNever retried; the customer gets a one-click link to update the card
How PlatformDTC sorts Stripe decline codes for subscription renewals with Smart retry on

What PlatformDTC does at checkout

The shopper sees Stripe's decline message, plus a plain hint for the common codes, such as "Your card has insufficient funds. Try another card." and an option to try another card straight away. For lost_card, stolen_card, pickup_card, fraudulent and merchant_blacklist the hint is always the generic "Your card was declined. Try another card or contact your bank.", so the shopper is never told a card was reported lost or stolen or flagged.

If the store has chosen PayPal card payments as its backup, a bank refusal with no lasting reason, such as do_not_honor or processing_error, can be tried again through PayPal, where the shopper enters the card again. Funds, 3-D Secure, wrong-details, dead-card and fraud declines are never moved to the backup.

Frequently asked questions

Where do I find the decline code for a Stripe payment?
In the Stripe Dashboard, open the failed payment: the decline reason is shown with a short suggested fix. In the API it is the decline_code on the PaymentIntent's last_payment_error, and the charge's outcome also carries the reason, an advice code and, when the network sent one, the raw network decline code.
What is the most common Stripe decline code?
Stripe says card banks categorize most declines as generic (generic_decline), which leaves the exact reason unclear. If the card information is correct, Stripe advises asking the customer to contact their card bank to learn why the payment was declined.
How many times can I retry a declined Stripe payment?
Stripe recommends a maximum of eight retries for charges that permit retries, and warns that extra retries can look like fraud to card banks. Visa allows up to 20 attempts in 30 days on retryable declines and none at all after a Category 1 decline such as a lost or stolen card.
Should I tell the shopper the exact decline reason?
For most codes, yes: a plain reason like an expired card or a wrong security code helps them fix it. For fraudulent, lost_card, stolen_card and merchant_blacklist, Stripe says not to give details and to show the decline the same way as generic_decline.

Sources

Payments library