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
- • Shopify billing attempt errorCode: CARD_DECLINED (DO_NOT_HONOR maps to this in Shopify)
- • Stripe Charge outcome.reason: do_not_honor
- • Recharge charge error_type: CARD_DECLINED
- • First retry after 24–48 hours may succeed if cause was a temporary bank hold
- • Repeated failures indicate a persistent bank restriction requiring customer action
How to fix it
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 →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 →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.
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 →