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

  1. Do not retry immediately. Immediate retries rarely succeed and can signal aggressive billing behavior to the issuer.

  2. Retry at a different time of day. Issuer risk models evaluate transactions differently throughout the day — a decline overnight often succeeds during business hours.

  3. Use network tokens. They improve issuer authorization rates for recurring subscription charges.

  4. Try a backup payment method if one is on file, after retries have been exhausted.

  5. 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

  1. Do not retry immediately. Immediate retries rarely succeed and can signal aggressive billing behavior to the issuer.

  2. Retry at a different time of day. Issuer risk models evaluate transactions differently throughout the day — a decline overnight often succeeds during business hours.

  3. Use network tokens. They improve issuer authorization rates for recurring subscription charges.

  4. Try a backup payment method if one is on file, after retries have been exhausted.

  5. 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

  1. Do not retry immediately. Immediate retries rarely succeed and can signal aggressive billing behavior to the issuer.

  2. Retry at a different time of day. Issuer risk models evaluate transactions differently throughout the day — a decline overnight often succeeds during business hours.

  3. Use network tokens. They improve issuer authorization rates for recurring subscription charges.

  4. Try a backup payment method if one is on file, after retries have been exhausted.

  5. 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.

FlyCode partnered with Stripe, to turn failed payment intro revenue.

With our newest Stripe app, you can stop chasing your customers about their failed payments and recover more payments with zero development work.

With our newest Stripe app, you can stop chasing your customers about their failed payments and recover more payments with zero development work.

Giving Back

Partnering with organizations that promote women in technology and families in need is something we are proud to do.

Text graphic displaying "SPE CODES; NEXT LEVEL" in a bold, stylized font on a solid background.
Logo featuring a stylized text "Catching" with an orange accent, set against a simple background.

2026 FlyCode © All Right Reserved.

Giving Back

Partnering with organizations that promote women in technology and families in need is something we are proud to do.

Text graphic displaying "SPE CODES; NEXT LEVEL" in a bold, stylized font on a solid background.
Logo featuring a stylized text "Catching" with an orange accent, set against a simple background.

2026 FlyCode © All Right Reserved.