Skip to main content
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

Incorrect Payment Details

Card Limits & Insufficient Funds

Card & Account Problems

Fraud & Security Blocks

Generic & Issuer Declines

Processing & Retry Issues

Test Mode


Local Payment Method (LPM) Decline Codes

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

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.