FAILED PAYMENTS

"Do not honor" card decline: what it means and what to do

What a "do not honor" (code 05) decline means, how Stripe, Braintree, Recurly and Chargebee report it, when to retry a renewal, and what to tell the customer.

Published 8 min read

“Do not honor” means the customer’s bank refused the payment without saying why. It is the issuer’s generic “no”: the card number can be valid and the account can have money, but the bank’s own checks (fraud filters, limits, a temporary hold) said no. Only the bank knows the real reason, and it tells it only to the cardholder.

For a subscription renewal, it is usually a soft decline: a later retry can work, and the customer can often fix it with one call to their bank or by using another card. “Do not honour” is the same response, spelled the British way.

This guide uses what payment providers document themselves: Stripe’s decline codes, card declines and network decline codes pages, Braintree’s declines article and Merchant Advice Codes, Recurly’s transaction errors and Chargebee’s error 2000 article. All accessed 7 November 2026.

What does “do not honor” mean exactly?

When a card payment is sent for authorization, the card network passes it to the bank that issued the card. The bank answers with a response code. Code 05, “Don’t honor”, is the bank’s way of saying: declined, no specific reason given.

Stripe’s reference describes do_not_honor as “The card was declined for an unknown reason” and says the customer needs to contact their card issuer for more information. Its card declines guide adds that, for privacy and security reasons, issuers discuss the specifics of a decline only with their cardholders. So neither you nor your payment provider will get a better answer from the bank.

Chargebee’s article on the Braintree version of the code lists typical causes:

  • an incorrect card number or expiry date;
  • insufficient funds;
  • a rejection by the bank’s fraud filters.

Other banks use it for limits, a card blocked for online or foreign payments, or a temporary hold. You cannot tell which from the code alone.

Which code is “do not honor” on each network and provider?

The same decline shows up under different names depending on where you look.

Where What you see
Visa network code 05 “Don’t honor”
Mastercard network code 05 “Don’t honor”, with a Merchant Advice Code (MAC) such as 01, 03 or 21
Discover, JCB, Cartes Bancaires 05 “Don’t honor”
Stripe decline_code: do_not_honor, plus network_decline_code and an advice_code
Braintree Processor response 2000 Do Not Honor, marked soft
Recurly Error temporary_hold, which Recurly says “is known as a ‘Do Not Honor’ response”
Chargebee (Braintree gateway) “Error: 2000 Do Not Honor” in the payment’s gateway error

The network codes come from Stripe’s network decline codes page, which lists code 05 under Visa, Mastercard, Discover, JCB International and Cartes Bancaires. American Express uses its own three-digit codes instead (for example 100 “Deny”).

Billing platforms that sit on top of a gateway, such as Chargebee, Recurly, Zuora or Maxio, usually pass on or translate the gateway’s response. Chargebee’s FAQ says it logs the error message it receives from the gateway. If you sell through a merchant of record like Paddle, Lemon Squeezy or Polar, or through the App Store or Google Play, the platform collects the money and runs its own recovery, so you may only see the result.

Is “do not honor” a soft or a hard decline?

Usually soft, but read the advice code that comes with it.

  • Braintree marks 2000 Do Not Honor as a soft decline, meaning it comes from a temporary issue and a retry can work.
  • Chargebee calls it a soft decline and says the best first step is to retry the card later.
  • Stripe does not label do_not_honor itself as soft or hard. It gives you a separate advice_code on the charge outcome: try_again_later (you can retry), do_not_try_again (do not reuse the card for this transaction) or confirm_card_data (some card details are wrong).
  • Mastercard goes further: Braintree’s guide says Mastercard retries should be based only on the Merchant Advice Code. The same 05 can come with MAC 01 (“New account information available”), 03 (“Do not try again”) or 21 (“Stop recurring payment”).

So the rule is: the decline code tells you the category, the advice code tells you whether to retry. A do_not_honor with MAC 21 is not a soft decline at all: the cardholder or bank wants the recurring payment stopped.

How many times can you retry a “do not honor” payment?

Card networks cap retries and charge fees above the cap. Braintree’s declines article gives the current rules as applied to its merchants:

Network Rule for this decline Fee above the limit
Visa Code 2000 is in Visa retry Category 4: at most 15 retries over a rolling 30 days $0.10 per domestic and $0.15 per international transaction beyond the threshold
Mastercard Follow the MAC. For MAC 03 and 21, more than 10 retries in 24 hours costs a fee $0.10 per reattempt beyond that

Stripe’s own guidance is stricter: its card declines guide recommends a maximum of eight retries for charges that permit retries, and warns that issuers may see extra retries as potential fraud, which can cause more declines on legitimate charges. Stripe Smart Retries, on by default for new accounts, uses up to 8 retries within 2 weeks (Smart Retries docs).

In practice, for a renewal that fails with “do not honor”:

  1. Do not retry right away in a loop. The bank just said no; the same request one minute later is likely to get the same answer.
  2. Space retries over days, not minutes. If the real cause was low funds or a daily limit, a retry after payday or on another day has a better chance.
  3. Stop on a “do not try again” advice code, MAC 03 or MAC 21, and ask the customer for another card instead.
  4. Stop when the customer updates the card. Retry the open invoice with the new card at once.

For how platforms schedule retries, see payment retry schedules compared.

What should you tell the customer?

Not “do not honor”. The phrase means nothing to them and sounds like an accusation. Tell them what happened and give them two ways out:

Your bank declined this month’s payment for [Product]. This is often a temporary block: a quick call or message to your bank usually fixes it, or you can use another card here: [update link]. We’ll try again on [date].

What works in this email:

  • Name the bank, not the customer, as the one who declined.
  • Give the two fixes: contact the bank, or use another card.
  • Link straight to a card update page, with no login if you can.
  • Say when you will retry, so the customer knows they do not need to do anything if the bank lifts the block.

Recurly’s own customer-facing message for this case reads “Your card has a temporary hold. Please use a different card or contact your bank.” Same idea. For full sequences, see dunning email templates.

If the customer is on your site when the payment fails (a checkout or an upgrade), the advice is the same, shorter: show “Your bank declined this card”, and offer another card or payment method right there.

Can you reduce “do not honor” declines?

You cannot remove them, but some of them come from things you control:

  • Send complete data. Stripe’s card declines guide says to collect the CVC and postal code to avoid fraud-related declines, and to look at the CVC and address checks when a card returns a generic or do_not_honor decline.
  • Authenticate where the rules require it. In Europe, renewals set up without the right authentication can fail; Stripe suggests 3D Secure can lower decline rates where it is supported. See SCA and authentication on renewals.
  • Keep card details fresh. Account updaters and network tokens reduce declines from replaced cards; see network tokens and card account updaters.
  • Watch cross-border payments. Stripe notes that cards issued in a different country than your account can see more declines.
  • Use a clear statement descriptor. It does not prevent the decline, but when the customer calls the bank, a recognizable name helps them say “yes, that’s me”. See billing descriptors.

FAQ

What does “do not honor” mean on a credit card?

The card’s issuing bank declined the payment and did not share a reason. It can be fraud filters, a limit, low funds, wrong card details or a temporary hold. The cardholder has to ask the bank to know which.

Is “do not honour” different from “do not honor”?

No. It is the same response code 05; “honour” is the British spelling used by some banks and providers.

Will retrying a “do not honor” payment work?

Often, if you wait. Braintree and Chargebee treat it as a soft decline. Check the advice code first: on Stripe, do_not_try_again means stop; on Mastercard, MAC 03 and 21 mean stop.

Can the merchant find out the real reason?

No. Stripe states that issuers discuss the specifics of a decline only with their cardholders. Your payment provider passes on the codes it gets, nothing more.

Is “do not honor” the same as fraud?

Not necessarily. Fraud filters are one possible cause, but issuers use the same code for many other reasons. Networks also have more specific codes: Stripe’s network codes page lists Visa 41 (lost card), 43 (stolen card) and 59 (suspected fraud), and Visa R0 / R1 for a cardholder who stopped one or all future payments.

What is the difference between “do not honor” and a generic decline?

On Stripe they are separate codes with the same next step: the customer contacts the bank. Both are issuer declines without a specific reason. See Stripe decline codes explained.

How NoChurn helps

NoChurn reads the decline code and history of every failed renewal. For soft declines like “do not honor”, retries land on likely paydays in the customer’s time zone, inside the days and hours you allow; or you keep your provider’s own retries, such as Stripe Smart Retries. Hard declines skip the retries and go straight to the email.

The recovery emails go out on days 0, 3, 7 and 14 by default, each written by AI for that customer and that decline, and checked before it leaves. They never show the raw code. Each email links to a hosted card update page with no login; the new card becomes the default and the invoice is retried.

It connects to Stripe in one click, and works with Chargebee, Recurly, Braintree, Zuora, Maxio and others, or with any billing through the API. Pricing depends only on MRR, with no commission on recovered revenue (a custom sending domain needs a paid plan, from $9). See failed payments.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Stop leaking revenue.

  • Free until $300 MRR
  • No card needed
  • Live in 10 minutes
  • Never a cut of what we recover