Stripe decline codes / do_not_honor
Stripe do_not_honor: what it means and how to respond
do_not_honor means the issuing bank refused the payment and gave no specific reason. Despite the wording, it does not necessarily mean the card is bad: banks use it as a catch-all response for many different situations.
- Decline code
- do_not_honor
- Type
- Temporary refusal
- Who can fix it
- The bank (time)
- Will a retry help?
- Likely: let Smart Retries run
What it means
An opaque 'no' from the bank, often a temporary lock, a spending rule or a risk score on their side. Despite the name, retries recover a majority.
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
- A temporary hold, spending limit or velocity rule on the customer's account.
- A risk or fraud score on the bank's side at the moment of the charge.
- A card or account restriction the bank does not disclose.
- A transient issuer-side refusal that clears on a later attempt.
What to do
- Wait for a retry on Stripe's schedule, or retry manually after a few days, rather than immediately.
- Send the customer a neutral email with a card-update link.
- If it fails again, ask them to contact their bank: only the issuer can say why.
- If the bank confirms it released the hold, retry the payment.
- If it keeps failing, request a different card.
Should you retry?
A later retry can succeed when the cause was temporary, but two failures in a row usually mean the customer needs to speak to their bank or switch cards.
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
Why does the bank say do_not_honor without a reason?
Issuers use it as a general-purpose refusal and card networks do not require them to explain. Stripe passes the code along but cannot see the underlying reason.
Is do_not_honor a fraud signal?
Not necessarily. It can come from fraud checks, but it also covers limits and temporary holds. Treat it as unexplained rather than as proof of fraud.