> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wegive.com/llms.txt
> Use this file to discover all available pages before exploring further.

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

> WeGive Help Center article: Stripe Decline Codes: What They Mean & How to Fix Them

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. |

### **PIN-Related Declines**

| | | |
| - | - | - |
| 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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.