Error codes
Soft decline
Stripe
do_not_honor
The card was declined for an unknown reason.
What does do_not_honor mean on Stripe?
do_not_honor is one of the most common decline codes Stripe merchants see. It is a generic refusal from the cardholder's issuing bank — the card was declined, but the bank did not disclose why. The specific reason could be anything from a velocity check to a geographic mismatch to a temporary account flag, but the merchant has no way to know.
Stripe passes this code through directly from the card network response. The customer typically has no idea the transaction was attempted, let alone declined.
Is it a soft or hard decline?
do_not_honor is a soft decline. The card is not blocked, the account is not canceled, and the same transaction often succeeds on a subsequent retry. This makes it one of the highest-leverage declines to recover in a subscription business.
Common root causes
Because the reason is hidden, the underlying causes vary widely:
Issuer velocity limits (too many charges in a short window)
Unusual spending patterns relative to the cardholder's history
Geographic mismatches between merchant and cardholder
Internal risk thresholds specific to that bank or card product
Card-on-file declines for recurring charges that look atypical
Temporary account restrictions the cardholder has not been notified about
Recommended recovery steps
Do not retry immediately. Immediate retries rarely succeed and can signal aggressive billing behavior to the issuer.
Retry at a different time of day. Issuer risk models evaluate transactions differently throughout the day — a decline overnight often succeeds during business hours.
Use network tokens. They improve issuer authorization rates for recurring subscription charges.
Try a backup payment method if one is on file, after retries have been exhausted.
Only escalate to dunning after automated recovery fails — the customer is usually unaware of the decline.
How FlyCode handles do_not_honor
FlyCode's AI-powered retry engine leverages data partnerships with Visa and Mastercard to understand issuer authorization patterns at a network level. Rather than applying a single retry schedule to every do_not_honor decline, FlyCode predicts the optimal retry window for each individual transaction based on the specific issuer, time of day, customer payment history, and aggregate success rates.
For Stripe merchants, FlyCode plugs in directly on top of the existing integration — no code changes, no gateway switch — and recovers a significant portion of do_not_honor declines that Stripe's native retry schedule would miss.
What does do_not_honor mean on Stripe?
do_not_honor is one of the most common decline codes Stripe merchants see. It is a generic refusal from the cardholder's issuing bank — the card was declined, but the bank did not disclose why. The specific reason could be anything from a velocity check to a geographic mismatch to a temporary account flag, but the merchant has no way to know.
Stripe passes this code through directly from the card network response. The customer typically has no idea the transaction was attempted, let alone declined.
Is it a soft or hard decline?
do_not_honor is a soft decline. The card is not blocked, the account is not canceled, and the same transaction often succeeds on a subsequent retry. This makes it one of the highest-leverage declines to recover in a subscription business.
Common root causes
Because the reason is hidden, the underlying causes vary widely:
Issuer velocity limits (too many charges in a short window)
Unusual spending patterns relative to the cardholder's history
Geographic mismatches between merchant and cardholder
Internal risk thresholds specific to that bank or card product
Card-on-file declines for recurring charges that look atypical
Temporary account restrictions the cardholder has not been notified about
Recommended recovery steps
Do not retry immediately. Immediate retries rarely succeed and can signal aggressive billing behavior to the issuer.
Retry at a different time of day. Issuer risk models evaluate transactions differently throughout the day — a decline overnight often succeeds during business hours.
Use network tokens. They improve issuer authorization rates for recurring subscription charges.
Try a backup payment method if one is on file, after retries have been exhausted.
Only escalate to dunning after automated recovery fails — the customer is usually unaware of the decline.
How FlyCode handles do_not_honor
FlyCode's AI-powered retry engine leverages data partnerships with Visa and Mastercard to understand issuer authorization patterns at a network level. Rather than applying a single retry schedule to every do_not_honor decline, FlyCode predicts the optimal retry window for each individual transaction based on the specific issuer, time of day, customer payment history, and aggregate success rates.
For Stripe merchants, FlyCode plugs in directly on top of the existing integration — no code changes, no gateway switch — and recovers a significant portion of do_not_honor declines that Stripe's native retry schedule would miss.
What does do_not_honor mean on Stripe?
do_not_honor is one of the most common decline codes Stripe merchants see. It is a generic refusal from the cardholder's issuing bank — the card was declined, but the bank did not disclose why. The specific reason could be anything from a velocity check to a geographic mismatch to a temporary account flag, but the merchant has no way to know.
Stripe passes this code through directly from the card network response. The customer typically has no idea the transaction was attempted, let alone declined.
Is it a soft or hard decline?
do_not_honor is a soft decline. The card is not blocked, the account is not canceled, and the same transaction often succeeds on a subsequent retry. This makes it one of the highest-leverage declines to recover in a subscription business.
Common root causes
Because the reason is hidden, the underlying causes vary widely:
Issuer velocity limits (too many charges in a short window)
Unusual spending patterns relative to the cardholder's history
Geographic mismatches between merchant and cardholder
Internal risk thresholds specific to that bank or card product
Card-on-file declines for recurring charges that look atypical
Temporary account restrictions the cardholder has not been notified about
Recommended recovery steps
Do not retry immediately. Immediate retries rarely succeed and can signal aggressive billing behavior to the issuer.
Retry at a different time of day. Issuer risk models evaluate transactions differently throughout the day — a decline overnight often succeeds during business hours.
Use network tokens. They improve issuer authorization rates for recurring subscription charges.
Try a backup payment method if one is on file, after retries have been exhausted.
Only escalate to dunning after automated recovery fails — the customer is usually unaware of the decline.
How FlyCode handles do_not_honor
FlyCode's AI-powered retry engine leverages data partnerships with Visa and Mastercard to understand issuer authorization patterns at a network level. Rather than applying a single retry schedule to every do_not_honor decline, FlyCode predicts the optimal retry window for each individual transaction based on the specific issuer, time of day, customer payment history, and aggregate success rates.
For Stripe merchants, FlyCode plugs in directly on top of the existing integration — no code changes, no gateway switch — and recovers a significant portion of do_not_honor declines that Stripe's native retry schedule would miss.
Understanding This Decline Code
Extended content body
Frequently Asked Questions
What does do_not_honor mean on Stripe?
Is do_not_honor on Stripe a soft or hard decline?
Soft decline. The bank's refusal is typically temporary, tied to risk models that re-evaluate the same transaction differently at different times. Smart retries recover a meaningful share of these payments.
How does FlyCode recover do_not_honor declines?
FlyCode uses Visa and Mastercard network-level data to determine the optimal retry window for each issuer. AI-driven timing recovers do_not_honor transactions that fixed-schedule retries miss.

