AltorLabFree Scan →
Error CodesDO_NOT_HONOR
shopifystriperecharge

DO_NOT_HONOR Stripe Decline on Shopify Subscriptions — Cause and Fix

Root cause

DO_NOT_HONOR (Stripe decline code: do_not_honor) is the issuing bank's generic refusal with no specific reason disclosed. The bank instructs Stripe to decline without explanation. Common triggers include suspected fraud flags, account restrictions, card blocked for recurring transactions, or temporary bank system issues. The merchant cannot determine the exact reason — only the customer can by contacting their bank. This is the most opaque decline code and may be temporary or permanent.

Symptoms

How to fix it

1

Confirm do_not_honor in Stripe Dashboard

In Stripe Dashboard, locate the failed charge for the affected subscription. Under Charge details, check the outcome.reason field for do_not_honor. Shopify surfaces this as CARD_DECLINED in the billing attempt errorCode — checking Stripe directly gives the specific decline code.

Open in admin →
2

Retry once after 24–48 hours

DO_NOT_HONOR is sometimes a temporary bank hold that clears within 24–48 hours. Attempt one retry after this delay. Use subscriptionBillingAttemptCreate in Shopify or the retry action in Recharge Admin. If the first retry succeeds, continue normal billing.

Open in admin →
3

If second retry fails, send customer communication

After two failed attempts with do_not_honor, the restriction is likely persistent. Send the customer an email explaining that their payment was declined and asking them to contact their bank or provide an alternative payment method. Keep the message neutral — do not imply fraud.

4

Send payment method update email if customer cannot resolve with bank

If the customer's bank cannot resolve the restriction, request they provide a different card. Use Recharge Admin > Customer record > Send Payment Update Email. Include a direct link to the customer portal payment method page.

Open in admin →

Frequently asked questions

What does DO_NOT_HONOR mean on a Stripe subscription charge?

DO_NOT_HONOR is the issuing bank's generic refusal code with no specific reason given. The bank declined the charge but did not tell Stripe or the merchant why. It may indicate suspected fraud, account restrictions, or a temporary system error. Only the customer — by calling their bank — can learn the specific reason.

Should I retry after a DO_NOT_HONOR decline?

Once after 24–48 hours. DO_NOT_HONOR can be temporary — bank holds and system errors often clear within this window. If the second attempt also fails with do_not_honor, the restriction is likely persistent and further retries are unlikely to succeed without customer action to resolve the issue with their bank.

Why don't banks give merchants a specific reason for DO_NOT_HONOR declines?

Banks deliberately keep decline reasons opaque to prevent fraud pattern exploitation. If merchants knew the exact rule that triggered a decline, fraudsters could reverse-engineer bank fraud detection systems. DO_NOT_HONOR is intentionally vague — the bank refuses without providing enough information to work around its decision.

How is DO_NOT_HONOR different from CARD_DECLINED in Shopify?

In Shopify, both map to the CARD_DECLINED errorCode on the billing attempt. The distinction appears at the Stripe level: CARD_DECLINED errorCode covers multiple Stripe decline codes including do_not_honor, insufficient_funds, and others. Check the underlying Stripe charge to get the specific decline code and choose the correct retry strategy.

Detect this error automatically

Free cross-stack scan finds all billing errors in 60 seconds.

Run Free Scan →