Stripe · Decline codes
What does the Stripe do_not_honor decline code mean?
Checked
Stripe's do_not_honor decline code means the card was declined for an unknown reason. The card's bank refused the charge and did not tell Stripe why, so Stripe advises the customer to contact their card issuer. Stripe's guide points to suspected fraud, card-type restrictions and cross-border use as frequent reasons. The shopper can call the bank or use another card. Retrying the same card repeatedly usually fails again and can hurt your decline rate with that bank.
- Type
- Soft decline (refer to issuer)
- Who declined
- The card's bank
- Retry
- Once at most, after a gap or after the customer contacts the bank
- Shopper action
- Call the bank on the number on the card, or pay another way
- Merchant action
- Offer another payment method; avoid repeated retries
What PlatformDTC does
At checkout PlatformDTC adds "Your bank declined the charge. Try another card or contact your bank." and, when the store chose PayPal card payments as its backup, offers to try the card through PayPal. With Smart retry on, a renewal gets one retry 48 to 72 hours later; a second refusal asks the customer for a new payment method. If the raw Visa code underneath is 59 (suspected fraud), it is never retried.
Why it happens
Issuers decide in their own systems using spending habits, balance, card data and risk models, and many simply answer "do not honor" rather than give a reason. Stripe's card-declines guide lists suspected fraud (large purchases or many purchases in a short time), card-type restrictions and cross-border use as frequent reasons for unexplained declines.
What the shopper can do
Call the bank on the back of the card, confirm the purchase is yours, and try again. Or use a different card, PayPal or another method straight away.
What the store can do
Collect CVC and postal code at checkout, which Stripe says helps avoid fraud-related declines, and consider 3D Secure. Do not loop retries on the same card: Stripe warns issuers may read extra retries as potential fraud.
For developers
Stripe's do_not_honor is a normalisation; the bank's real answer is in charge.outcome.network_decline_code. On Visa, 05 is "Don't honor" (Category 4, reattempt permitted) while 59 is "Suspected fraud". Mastercard sends 05 with a Merchant Advice Code; MAC 03 and 21 mean do not retry. Also read outcome.advice_code.
Frequently asked questions
- Is do_not_honor a hard or soft decline?
- It is usually treated as soft, because the card is not reported dead. But the bank refused on its own judgement, so one retry at most is sensible; a second refusal means the customer should use another card.
- Why does do_not_honor happen when the customer has money?
- Funds are only one factor. Banks also decline over fraud checks, card restrictions or unusual activity, and they don't share the reason with merchants.
- Can I see the real reason behind do_not_honor?
- Sometimes. The raw network code from the bank, shown by Stripe as the network decline code, can be more specific, for example Visa 59 for suspected fraud.
Sources
- Stripe decline codes — Stripe
- Card declines and retries — Stripe
- Network decline codes — Stripe
- Visa Core Rules and Visa Product and Service Rules (24 October 2026), Table 7-2 — Visa
- Merchant Advice Codes — Braintree (PayPal)
Related
- generic_decline — Declined for an unknown reason, or blocked by Stripe Radar or Adaptive Acceptance.
- call_issuer — The bank declined without a reason and wants the cardholder to contact it.
- card_declined — Stripe's error code for any declined card; the decline_code says why.
- fraudulent — Stripe's fraud checks suspected the payment was fraudulent and blocked it.
- insufficient_funds — The card doesn't have enough money or credit for this payment.
- do_not_try_again — Deprecated code: declined for an unknown reason; don't charge this card again.
- duplicate_transaction — An identical payment on the same card was submitted moments ago.
- expired_card — The card is past its expiry date.