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

  1. Wait for a retry on Stripe's schedule, or retry manually after a few days, rather than immediately.
  2. Send the customer a neutral email with a card-update link.
  3. If it fails again, ask them to contact their bank: only the issuer can say why.
  4. If the bank confirms it released the hold, retry the payment.
  5. 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 free

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

Contact us
FlowMRR

Let's talk

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