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

  1. Read decline_code on the PaymentIntent's last_payment_error (or failure_code on older Charge objects) to find the real reason.
  2. Match that code to the right action: wait for a retry, ask for a new card, or ask the customer to authenticate.
  3. If decline_code is empty, treat it like a generic decline: one spaced retry and a card-update email.
  4. 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 free

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

Contact us
FlowMRR

Let's talk

A question, a technical issue or an idea for a partnership? Write to the FlowMRR team.