Skip to content

Stripe decline codeStripe: card declined with do_not_honor

do_not_honor is a Stripe decline code that means the bank declined the card without saying why. It usually isn’t caused by your code, and only the bank knows the reason. Check the CVC and address results first, then ask the customer to call the bank or use another card.

Short answer

Show the customer a plain message that the bank declined the card and ask them to contact the bank or try another card. In the Dashboard, check the payment’s CVC and address checks and the advice code. Don’t retry the same card in a loop, because card networks limit how often one charge can be retried.

Rather not fix it yourself? Stripe Billing Fix and Setup handles it at a fixed price, agreed before work starts.

What do_not_honor means, and what to do

  1. 01

    The bank gave no reason

    “The card was declined for an unknown reason.” Stripe, Decline codes (do_not_honor)

    do_not_honor works like generic_decline. The issuer said no and didn’t say why.

  2. 02

    Only the customer can get the reason

    “The customer needs to contact their card issuer for more information.” Stripe, Decline codes (do_not_honor)

    Banks don’t explain declines to the merchant. Tell the customer to call the number on the back of the card, then try again once the bank clears it.

  3. 03

    Check CVC and address results first

    “For example, if CVC or Address Verification Service (AVS) checks fail when your customer adds a card, ask your customer to verify both of these details before initiating another charge.” Stripe, Card declines

    Open the payment in the Dashboard. If the CVC or postal code check failed, the customer may have typed a detail wrong, and fixing it may be enough.

  4. 04

    Read the advice code before retrying

    The decline code arrives on the error as decline_code. The charge behind it, the PaymentIntent’s latest_charge, can also carry an advice_code: do_not_try_again means stop charging that card for this payment, and try_again_later means a retry can work.

    // after a failed confirm
    console.log(err.decline_code); // 'do_not_honor'
    
    const pi = await stripe.paymentIntents.retrieve(paymentIntentId);
    const charge = await stripe.charges.retrieve(pi.latest_charge);
    console.log(charge.outcome?.advice_code); // e.g. 'try_again_later'
  5. 05

    Retrying renewals too often

    “Stripe recommends a maximum of eight retries for charges that permit retries.” Stripe, Card declines

    For subscriptions, let Smart Retries or a set retry schedule handle it, and email the customer to update the card.

Checked against the vendor’s docs on : Stripe docs: Decline codes; Stripe docs: Card declines.

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

“Working with Simon makes everything run so smoothly and better than I could ask for it. Amazingly communicative, extremely knowledgeable of coding and the backend processes. I strongly recommend.”
A buyer in the United States, January 2026. App development on Fiverr
All 127 Fiverr reviews

Related: Stripe incorrect_cvc · Stripe card declined (generic_decline) · Stripe insufficient_funds · Stripe authentication_required decline

Questions

More on this error

Is do_not_honor a problem with my Stripe account?

Usually not. It is the bank’s answer for that card. If many different cards decline at once, check your Stripe Dashboard for a pattern, such as one country or one product.

Should the customer try again right away?

Only after they fix a wrong detail or talk to the bank. Repeating the same card at once usually gets the same answer.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.