What is the do_not_honor code?
do_not_honor is the standard ISO 8583 decline code 05. It is one of the most common โ and most frustrating โ decline codes because the card-issuing bank refuses the transaction without explaining why. The literal meaning is simply "do not honor this request."
In Stripe, this appears as decline_code: "do_not_honor" in the error object returned to the merchant.
Why does a bank return do_not_honor?
Banks deliberately withhold the specific reason โ this is by design, so that fraudsters cannot reverse-engineer which parameters to adjust. Common underlying causes include:
- Fraud prevention system. The transaction looks suspicious: unusual amount, unfamiliar merchant, cross-border payment without prior bank notification.
- Insufficient funds. Sometimes banks return
do_not_honorinstead ofinsufficient_funds, especially when foreign exchange fees push the total over the available balance. - Daily or monthly spending limit reached. The card has hit its transaction cap for the period.
- Card temporarily blocked or restricted. The bank may have placed a hold on the card.
- Issuer technical issues. The bank's server processed the request but could not authorize it for internal technical reasons.
- International payments disabled. Some banks disable cross-border transactions by default.
What to do when you see do_not_honor
- Call your bank. This is the most important step. An agent can see the exact internal reason for the decline and help you resolve it.
- Check your balance and limits. Make sure you have enough funds after accounting for foreign exchange fees and any pending holds.
- Confirm international payments are enabled. Check your card settings in your banking app or ask a bank representative.
- Notify your bank of international spending. Many banks require advance notice before you use a card for cross-border transactions.
- Try again later. If the cause is a technical issue on the bank's side, retrying after a few hours often works.
- Use a different payment instrument. Marix virtual cards are purpose-built for international payments and won't be flagged by an issuer's anti-fraud rules as "unusual activity."
FAQ
How is do_not_honor different from generic_decline?
Both codes represent unexplained declines, but do_not_honor is a specific ISO 8583 standard (code 05), while generic_decline is the broader label Stripe applies when no specific sub-code is returned.
Should I be worried if my bank returned do_not_honor? It's worth calling your bank to find out the reason. Sometimes it indicates the bank is protecting you from a transaction that its system flagged as suspicious.
How can I avoid do_not_honor in the future? Notify your bank about international payments in advance, maintain a sufficient balance including FX fees, and use payment instruments optimized for cross-border use โ like Marix virtual cards.
Tired of unexplained declines when paying for international services? Marix virtual cards are built to work where conventional cards often fail.

