What a Stripe decline code means, and what to do about it
Paste a decline code or an error message. Get the plain-English meaning, who can fix it, whether a retry will help, and a customer email you can send right away. No key, no signup, unlimited.
- No key, no signup
- Retry or not
- Email ready to send
We look for a known code anywhere in what you paste.
Try:
All decline codes
Grouped by what to do about them
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.
Not enough balance at the moment of the charge. Retrying around payday (Stripe does this) recovers most of these.
The card on file is expired, wrong or closed. Retrying will fail every time; only the customer can replace it.
The bank wants the cardholder to confirm the payment (3-D Secure / SCA). Stripe cannot retry headlessly; the customer must complete it from the hosted invoice.
Lost, stolen, flagged or withdrawn. Do not retry: it can hurt your acceptance rate. Ask for a different card, through a neutral message.
The refusal comes from the amount, currency, card type or your Stripe/Radar setup, not from the customer. Fix the configuration before retrying.
Want these emails sent for you, to the right customers, in the right order?
FlowMRR reads your failed payments from Stripe, scores who to contact first and drafts the recovery email with the right tone for each decline code.
Stripe decline codes, explained
Learn more
Where do I find the decline code in Stripe?
On the failed payment in the Stripe dashboard, under the payment details, or in the API as `last_payment_error.decline_code` on the PaymentIntent (and `failure_code` on older Charges). `card_declined` is the generic error code; the actual reason is in `decline_code`.
Should I retry a declined payment?
It depends on the code. Temporary refusals (generic_decline, do_not_honor, insufficient_funds, try_again_later) recover well with Stripe's Smart Retries. Dead or blocked cards (expired_card, lost_card, stolen_card, fraudulent) never recover by retrying; only a new card helps. Authentication codes need the customer to confirm the payment themselves.
Does retrying hard declines hurt?
Yes. Issuers and networks track repeated attempts on blocked cards, and excessive retries can lower your overall authorization rate and incur network fees. Stop after a hard decline and ask for another card.
Why does do_not_honor recover so often if the bank said no?
It is a catch-all answer from issuers: a temporary lock, a velocity rule, a risk score at that moment. The next attempt, a few days later, often goes through. That is why it is classified as a temporary refusal here.
Is this tool connected to my Stripe account?
No. It is a static reference built from Stripe's documented decline codes and from what we see across FlowMRR accounts. Nothing is sent anywhere; it runs in your browser and is unlimited.