Stripe decline codes / card_declined
Stripe card_declined: what it means and how to find the real reason
card_declined is Stripe's general error code for a card payment that was refused. On its own it does not explain why. The useful detail is in the decline_code field that usually accompanies it.
- Decline code
- card_declined
- Type
- Temporary refusal
- Who can fix it
- The bank (time)
- Will a retry help?
- Likely: let Smart Retries run
What it means
Stripe's umbrella error code. The real reason is in `decline_code`; when that is empty, treat it like a generic decline.
The bank said no without a lasting reason. Stripe's Smart Retries recover a large share of these within a few days; a gentle reminder helps.
Why it happens
- The issuer refused the payment for a reason that may appear in decline_code.
- A lasting reason such as an expired, lost or blocked card.
- A temporary reason such as insufficient funds or an issuer-side refusal.
- No further detail at all when the issuer returns none.
What to do
- Read decline_code on the PaymentIntent's last_payment_error (or failure_code on older Charge objects) to find the real reason.
- Match that code to the right action: wait for a retry, ask for a new card, or ask the customer to authenticate.
- If decline_code is empty, treat it like a generic decline: one spaced retry and a card-update email.
- Record the code per customer so repeated declines are easy to spot.
Should you retry?
It depends entirely on the underlying decline_code. Retrying every card_declined blindly is not a good policy; use the specific code to decide.
Customer email template
Neutral wording for this situation. Replace {name}, {product}, {link} and {company}.
Hi {name},
Your bank declined our latest payment for {product}. This is usually temporary. We will retry automatically over the next few days, but you can also update or re-confirm your card here: {link}
Thanks,
{company}Handling many failed payments? See how FlowMRR helps you prioritize failed Stripe payments by revenue at risk. Want a ranked list from your own account? Try the free failed payment audit.
Try FlowMRR freeFrequently asked questions
Where do I find the decline code in Stripe?
In the payment details in the Stripe Dashboard, or in the API as last_payment_error.decline_code on the PaymentIntent (and failure_code on older Charge objects).
Is card_declined the same as generic_decline?
No. card_declined is the broad error; generic_decline is one specific decline reason that can appear within it.