Stripe Decline Codes: What They Mean & How to Fix Them

Last updated: April 14, 2026

When a donation or payment fails, Stripe returns a decline code that tells you why. This guide covers every decline code you might encounter so you can quickly troubleshoot failed charges and help your donors get back on track.


How Decline Codes Work

When a charge fails, Stripe returns a decline code in the API response. These codes expand on the raw issuer response to give you more detail about what went wrong. In some cases, Stripe also includes an advice_code with suggested next steps.

There are two categories of decline codes:

  1. Card decline codes — returned when a credit or debit card payment fails

  2. Local payment method (LPM) decline codes — returned when an alternative payment method fails


Card Decline Codes

Payment Authentication Issues

Code

What It Means

What to Do

authentication_required

The transaction requires authentication (e.g., 3D Secure).

In most cases, Stripe's front end will trigger an authentication flow automatically. For off-session payments, ask the donor to retry and complete authentication. If the decline persists after successful authentication, the donor should contact their card issuer.

authentication_not_handled

Authentication was required but wasn't performed before proceeding.

Run the 3D Secure / SCA authentication flow. For off-session payments, collect authentication on-session first, then fall back if needed.

mobile_device_authentication_required

The transaction requires mobile device authentication.

Ask the donor to retry by tapping their mobile device again.

Incorrect Payment Details

Code

What It Means

What to Do

incorrect_number

The card number is wrong.

Ask the donor to re-enter their card number.

invalid_number

The card number is invalid.

Ask the donor to re-enter their card number.

incorrect_cvc

The CVC is wrong.

Ask the donor to re-enter the correct CVC.

invalid_cvc

The CVC is invalid.

Ask the donor to re-enter the correct CVC.

incorrect_pin

The PIN entered is wrong (card reader payments only).

Ask the donor to try again with the correct PIN.

invalid_pin

The PIN entered is invalid.

Ask the donor to try again with the correct PIN.

incorrect_zip

The postal/ZIP code is wrong.

Ask the donor to re-enter their billing postal code.

incorrect_address

The billing address is wrong.

Ask the donor to re-enter the correct billing address.

invalid_expiry_month

The expiration month is invalid.

Ask the donor to re-enter the correct expiration date.

invalid_expiry_year

The expiration year is invalid.

Ask the donor to re-enter the correct expiration date.

Card Limits & Insufficient Funds

Code

What It Means

What to Do

insufficient_funds

The card doesn't have enough funds.

Ask the donor to use a different payment method.

card_velocity_exceeded

The donor has hit a balance, credit limit, or transaction limit.

The donor should contact their card issuer.

withdrawal_count_limit_exceeded

The donor has exceeded their balance or credit limit.

Ask the donor to use a different payment method.

invalid_amount

The payment amount is invalid or exceeds the allowed limit.

If the amount looks correct, the donor should check with their issuer about purchase limits.

payment_limit_exceeded

(LPM) The order exceeds a limit on the donor's account.

Retry may succeed after the donor resolves the issue with their account.

Card & Account Problems

Code

What It Means

What to Do

expired_card

The card has expired.

Ask the donor to use a different card.

invalid_account

The card or connected account is invalid.

The donor should contact their card issuer.

new_account_information_available

The card or connected account is invalid.

The donor should contact their card issuer.

card_not_supported

The card doesn't support this type of purchase.

The donor should contact their issuer to confirm the card supports this purchase type.

currency_not_supported

The card doesn't support the specified currency.

The donor should check with their issuer about supported currencies.

Fraud & Security Blocks

Code

What It Means

What to Do

fraudulent

Stripe suspects the payment is fraudulent.

Present this to the donor as a generic decline — do not share the specific reason.

merchant_blacklist

The payment matches a value on your Stripe block list.

Present this to the donor as a generic decline.

stolen_card

The card is reported stolen.

Present this to the donor as a generic decline.

lost_card

The card is reported lost.

Present this to the donor as a generic decline.

security_violation

Declined for a security-related reason.

The donor should contact their card issuer.

restricted_card

The card can't be used for this payment (possibly lost/stolen).

The donor should contact their card issuer.

pickup_card

The card can't be used for this payment (possibly lost/stolen).

The donor should contact their card issuer.

Generic & Issuer Declines

Code

What It Means

What to Do

generic_decline

Declined for an unknown reason, or blocked by Stripe Radar.

The donor should contact their card issuer.

do_not_honor

Declined for an unknown reason.

The donor should contact their card issuer.

call_issuer

Declined for an unknown reason.

The donor should contact their card issuer.

not_permitted

The payment isn't permitted.

The donor should contact their card issuer.

no_action_taken

Declined for an unknown reason.

The donor should contact their card issuer.

revocation_of_all_authorizations

Declined for an unknown reason.

The donor should contact their card issuer.

revocation_of_authorization

Declined for an unknown reason.

The donor should contact their card issuer.

service_not_allowed

Declined for an unknown reason.

The donor should contact their card issuer.

stop_payment_order

Declined for an unknown reason.

The donor should contact their card issuer.

transaction_not_allowed

Declined for an unknown reason.

The donor should contact their card issuer.

Processing & Retry Issues

Code

What It Means

What to Do

approve_with_id

The payment can't be authorized.

Retry the payment. If it still fails, the donor should contact their issuer.

issuer_not_available

The card issuer couldn't be reached.

Retry the payment. If it still fails, the donor should contact their issuer.

processing_error

An error occurred while processing the card.

Retry the payment. If it still fails, try again later.

reenter_transaction

The issuer couldn't process the payment.

Retry the payment. If it still fails, the donor should contact their issuer.

duplicate_transaction

An identical transaction was submitted very recently.

Check if a recent payment already exists before retrying.

try_again_later (deprecated)

Declined for an unknown reason.

Retry the payment. If it keeps failing, the donor should contact their issuer.

do_not_try_again (deprecated)

Declined for an unknown reason.

The donor should contact their card issuer.

Code

What It Means

What to Do

offline_pin_required

The card requires a PIN.

The donor should insert their card and enter a PIN.

online_or_offline_pin_required

The card requires a PIN.

If the reader supports Online PIN, prompt for it. Otherwise, the donor should insert their card and enter a PIN.

pin_try_exceeded

Too many PIN attempts.

The donor must use a different card or payment method.

Test Mode

Code

What It Means

What to Do

testmode_decline

A Stripe test card number was used.

Use a real card to make the payment.


Local Payment Method (LPM) Decline Codes

These codes apply to alternative payment methods (not standard credit/debit cards).

Code

What It Means

Will a Retry Work?

partner_generic_decline

The payment provider declined the payment.

Possibly.

invalid_customer_account

The donor's account can't be charged.

Possibly, after the donor resolves the account issue.

payment_limit_exceeded

The order exceeds a limit on the donor's account.

Possibly, after the donor resolves the account issue.

invalid_billing_agreement

The donor's billing agreement is invalid.

No.

expired_card (partner)

The card registered with the payment provider has expired.

Possibly, after the donor updates their card.

processing_error (partner)

The payment provider hit a processing error.

Possibly.

insufficient_funds (partner)

The donor has insufficient funds with the provider.

Possibly, after the donor adds funds.

currency_not_supported (partner)

The payment provider doesn't support this currency.

No.

invalid_amount (partner)

The payment provider doesn't allow this amount.

No.

invalid_business_account

The business account is deactivated.

Possibly, if the account is reactivated.

partner_high_risk_customer

The provider labeled this donor as high risk.

Unlikely.

compliance_violation

The payment violates terms of service or applicable laws.

No.

payment_disputed

There's a dispute over the payment.

Possibly, if the dispute resolves in your favor.

invalid_authorization

The authorization is invalid or revoked.

No.

invalid_payment_information

The payment has invalid information.

No.

partner_payment_not_found

The payment provider can't find this payment.

Possibly.

expired_payment_information

The underlying payment instrument is expired.

Possibly, after the donor updates their payment info.

duplicate_transaction (partner)

An identical transaction was submitted recently.

Check for existing payments first.


Quick Troubleshooting Tips

For donors seeing repeated declines: Ask them to contact their card issuer directly. Many "unknown reason" declines are the issuer's fraud prevention flagging an unfamiliar transaction.

For authentication failures: Make sure your integration supports 3D Secure / SCA. Most authentication declines resolve when the donor completes the verification step.

For fraud-related declines: Never share the specific decline reason (fraudulent, stolen_card, lost_card, merchant_blacklist) with the donor. Always present these as a generic decline.

For duplicate transactions: Before retrying, check your dashboard for a recently successful charge with the same amount and card.