NewNo plan feeNo plan fee. Just 2.9% + $0.30 per card sale, and signing up is free.Try now →

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

Related

Payments library