Error codes

Soft decline

Stripe

Decline code `do_not_honor`

“Do not honor” is a generic decline code that the issuing bank sends to the business during a transaction. It means that the bank is not willing to accept the transaction.

What does do_not_honor mean?

The do_not_honor decline code is one of the most common and frustrating responses in payment processing. It is a generic refusal from the cardholder's issuing bank, indicating the transaction has been blocked — but without providing any specific reason. The card itself may be perfectly valid, the customer may have sufficient funds, and they may not even know a charge was attempted.

Is it a soft or hard decline?

do_not_honor is a soft decline. This means the underlying issue is often temporary and the same transaction can succeed on a later retry. Smart retry logic that times reattempts based on issuer behavior patterns recovers a meaningful portion of these payments automatically.

Common root causes

Because the code is generic, the real reason varies. The most frequent underlying causes include:

  • Velocity checks being triggered (too many charges in a short window)

  • Unusual spending patterns that don't match the cardholder's normal behavior

  • Geographic mismatches between the merchant and cardholder location

  • Internal issuer risk thresholds specific to that bank

  • Temporary account flags the cardholder hasn't been notified about

Recommended recovery steps

For subscription businesses, the right response depends on the context:

  1. Retry at an optimized time — not immediately, which can trigger additional issuer flags. Wait several hours or try a different time of day.

  2. Use network tokens to signal the issuer that the merchant-cardholder relationship is verified, reducing false positive declines.

  3. Try an alternate payment method if one is on file, after the first retry fails.

  4. Send a dunning notification only after multiple retries fail, since the issue often resolves without customer involvement.

How FlyCode handles do_not_honor

FlyCode's AI-powered retry engine leverages data partnerships with Visa and Mastercard to analyze issuer authorization patterns at the network level. Rather than retrying on a fixed schedule, FlyCode's models predict the optimal retry window for each individual decline based on the issuer, time of day, transaction history, and aggregate success patterns across millions of transactions.

For do_not_honor specifically, this approach recovers a significant portion of payments that would otherwise be lost to involuntary churn — all without contacting the customer or requiring any changes to your existing Stripe integration.

What does do_not_honor mean?

The do_not_honor decline code is one of the most common and frustrating responses in payment processing. It is a generic refusal from the cardholder's issuing bank, indicating the transaction has been blocked — but without providing any specific reason. The card itself may be perfectly valid, the customer may have sufficient funds, and they may not even know a charge was attempted.

Is it a soft or hard decline?

do_not_honor is a soft decline. This means the underlying issue is often temporary and the same transaction can succeed on a later retry. Smart retry logic that times reattempts based on issuer behavior patterns recovers a meaningful portion of these payments automatically.

Common root causes

Because the code is generic, the real reason varies. The most frequent underlying causes include:

  • Velocity checks being triggered (too many charges in a short window)

  • Unusual spending patterns that don't match the cardholder's normal behavior

  • Geographic mismatches between the merchant and cardholder location

  • Internal issuer risk thresholds specific to that bank

  • Temporary account flags the cardholder hasn't been notified about

Recommended recovery steps

For subscription businesses, the right response depends on the context:

  1. Retry at an optimized time — not immediately, which can trigger additional issuer flags. Wait several hours or try a different time of day.

  2. Use network tokens to signal the issuer that the merchant-cardholder relationship is verified, reducing false positive declines.

  3. Try an alternate payment method if one is on file, after the first retry fails.

  4. Send a dunning notification only after multiple retries fail, since the issue often resolves without customer involvement.

How FlyCode handles do_not_honor

FlyCode's AI-powered retry engine leverages data partnerships with Visa and Mastercard to analyze issuer authorization patterns at the network level. Rather than retrying on a fixed schedule, FlyCode's models predict the optimal retry window for each individual decline based on the issuer, time of day, transaction history, and aggregate success patterns across millions of transactions.

For do_not_honor specifically, this approach recovers a significant portion of payments that would otherwise be lost to involuntary churn — all without contacting the customer or requiring any changes to your existing Stripe integration.

What does do_not_honor mean?

The do_not_honor decline code is one of the most common and frustrating responses in payment processing. It is a generic refusal from the cardholder's issuing bank, indicating the transaction has been blocked — but without providing any specific reason. The card itself may be perfectly valid, the customer may have sufficient funds, and they may not even know a charge was attempted.

Is it a soft or hard decline?

do_not_honor is a soft decline. This means the underlying issue is often temporary and the same transaction can succeed on a later retry. Smart retry logic that times reattempts based on issuer behavior patterns recovers a meaningful portion of these payments automatically.

Common root causes

Because the code is generic, the real reason varies. The most frequent underlying causes include:

  • Velocity checks being triggered (too many charges in a short window)

  • Unusual spending patterns that don't match the cardholder's normal behavior

  • Geographic mismatches between the merchant and cardholder location

  • Internal issuer risk thresholds specific to that bank

  • Temporary account flags the cardholder hasn't been notified about

Recommended recovery steps

For subscription businesses, the right response depends on the context:

  1. Retry at an optimized time — not immediately, which can trigger additional issuer flags. Wait several hours or try a different time of day.

  2. Use network tokens to signal the issuer that the merchant-cardholder relationship is verified, reducing false positive declines.

  3. Try an alternate payment method if one is on file, after the first retry fails.

  4. Send a dunning notification only after multiple retries fail, since the issue often resolves without customer involvement.

How FlyCode handles do_not_honor

FlyCode's AI-powered retry engine leverages data partnerships with Visa and Mastercard to analyze issuer authorization patterns at the network level. Rather than retrying on a fixed schedule, FlyCode's models predict the optimal retry window for each individual decline based on the issuer, time of day, transaction history, and aggregate success patterns across millions of transactions.

For do_not_honor specifically, this approach recovers a significant portion of payments that would otherwise be lost to involuntary churn — all without contacting the customer or requiring any changes to your existing Stripe integration.

Understanding This Decline Code

Extended content body

Frequently Asked Questions

What causes a do_not_honor decline?

Is do_not_honor a soft or hard decline?

It is classified as a soft decline. The card itself is usually valid and can be retried — a payment that fails at one time of day often succeeds later when the issuer's risk model re-evaluates the transaction.

How does FlyCode recover do_not_honor declines?

FlyCode uses network-level data from Visa and Mastercard to determine optimal retry timing for each issuer. AI-optimized retries recover a significant percentage of do_not_honor declines that fixed-schedule retries would 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.