do_not_honormediumAffects MRR

Stripe do_not_honor Error — Causes, Fix & MRR Impact

The Stripe do_not_honor error occurs when the card issuer declines the transaction without providing a specific reason, causing failed charges and MRR risk for SaaS businesses processing subscription payments.

What this means

The bank declined the charge and did not give a specific reason. The customer should try again later, use another card, or contact their bank.

Why it happens

Issuer policy or internal rule

The issuer declined based on internal rules (e.g. risk, velocity) but did not return a specific decline code.

Temporary issuer issue

The bank or network had a temporary problem; a retry later may succeed.

Account or card status

The card or account is in a state that triggers a generic decline (e.g. restricted, under review).

Network or issuer communication

The decline was passed from the network as do_not_honor when the issuer did not specify a code.

MRR Impact

Generic issuer declines reduce MRR; retries and dunning can recover a portion. Customer contact with bank may be needed.

Do not honor is a common generic decline; retries and clear messaging help recover MRR.

Avg. recovery rate: Variable; retries help; some cases require the customer to contact the issuer.

Urgency: within 24h

How to fix it

  1. 1

    Treat as retriable decline

    Include do_not_honor in your retry logic. Schedule a retry with exponential backoff (e.g. 1, 3, 5 days) and use Stripe's advice_code if present.

  2. 2

    Show generic decline message

    Do not display 'do_not_honor' to the customer. Use: 'Your card was declined. Please try again, use another card, or contact your card issuer.'

  3. 3

    Send dunning email

    After the first failure, email the customer that the payment did not go through and ask them to ensure their card is valid and has funds, or to try another payment method.

  4. 4

    Log for analytics

    Track do_not_honor volume and recovery rate. If you see patterns (e.g. one issuer or region), you can tailor messaging or retry strategy.

  5. 5

    Escalate after max retries

    After your max retries, prompt the customer to contact their bank or update their payment method. Consider in-app banner or support outreach for high-value accounts.

Detect do_not_honor automatically

Monitor do_not_honor rate; spikes may indicate issuer or network issues. Track recovery rate over time.

Monitor your Stripe health free →

FAQ

What does Stripe do_not_honor mean?
do_not_honor is a generic decline from the card issuer; the bank did not provide a specific reason. Stripe recommends the customer contact their card issuer. For SaaS, treat like other soft declines: retry with backoff and send a dunning email asking them to try again or use another card.
Should I retry do_not_honor?
Yes, with backoff. Many do_not_honor declines are temporary (e.g. issuer glitch or internal rule). Use Stripe's retry guidance and your own schedule (e.g. retry in 24–72 hours). If retries keep failing, ask the customer to contact their bank or use another card.
How do I message do_not_honor to the customer?
Show a generic message: 'Your card was declined. Please try again later, use another card, or contact your card issuer for more information.' Do not show the raw decline code.
Does do_not_honor affect MRR?
Yes. Any decline can cause failed renewals and churn. Retries and dunning improve recovery; track do_not_honor separately to see if it correlates with certain issuers or regions.

Related errors