Resources

Do Not Honor Declines: Decoding the Vaguest Code

A do-not-honor decline tells you almost nothing, and that is the point. The issuer has decided not to approve the charge, but it will not tell you, the merchant, why. You get the code, the failed renewal, and a subscriber who may have no idea anything went wrong. How you handle the next few days decides whether that subscriber stays or quietly churns out through a billing exit they never chose.

This guide covers what the do_not_honor code actually means, why issuers hide behind it, the retry posture that gives it a fair chance without wasting attempts, and the point at which you should stop retrying the same card and ask for a different one instead.

What do_not_honor means in plain terms

In most processor mappings, do-not-honor arrives as decline code 05, or as the category code do_not_honor in Stripe-style responses. It is a soft decline, not a hard decline. The card itself has not been reported lost, the account has not necessarily been closed, and the charge has not been flagged as stolen. The issuer simply refused this attempt, at this moment, for a reason it is keeping to itself.

That vagueness is deliberate. Issuers use do-not-honor as a catch-all refusal for situations they do not want to explain to merchants, including temporary risk flags, unusual spending patterns, account holds the customer has not resolved, and internal rules the issuer does not publish. Sharing the precise reason would help merchants work around issuer controls, so the issuer shares nothing. Our decline code cheat sheet places do-not-honor alongside the other common codes so you can compare the action each one deserves at a glance.

For the operator, the practical translation is this: the payment might succeed later, on the same card, with no change from the customer at all — or it might never succeed until the customer resolves something with their bank. You cannot know which case you are in from the code alone. Your recovery sequence has to handle both possibilities without burning trust or attempts.

Why issuers hide behind this code

Understanding the issuer incentives helps you set a sane posture. Three forces push issuers toward vague refusals.

  • Fraud prevention without disclosure. If an issuer suspects a pattern but is not certain, a quiet refusal lets it block the charge without accusing the customer and without teaching fraud actors which signal tripped the system.
  • Customer privacy and internal policy. The real reason may involve the customer account status, a hold, or a restriction the issuer considers the customer business, not the merchant business. The generic code protects that boundary.
  • Simplicity at scale. Issuers process enormous volumes with automated rules. Mapping every edge case to a precise, merchant-facing explanation is work the issuer has little incentive to do. A single vague bucket is cheaper.

None of this is an excuse to treat the decline as meaningless. It does carry one clear signal: this was not a clean technical error, and it was not a definitive hard stop either. It sits in the middle, and middle cases reward patience and spacing, not aggression. Our explainer on Stripe decline codes walks through the wider framework.

Do-not-honor is not a hard decline

The most expensive mistake with this code is misclassification in either direction. Treat it as a hard decline and you give up on subscribers who would have paid on a later, spaced attempt. Treat it as a trivial soft decline and you hammer the card hour after hour, which helps nothing and can make the issuer position harder.

A hard decline means the same card details will not succeed: the card is lost, stolen, closed, or permanently blocked. A do-not-honor decline has no such finality. Many clear with time alone, because the underlying trigger was temporary — a daily limit reached, a travel pattern that looked odd, a hold that lifted. Our guide to hard declines vs soft declines sets out the dividing line in detail, and do-not-honor sits firmly on the soft side of it, with a caveat: soft does not mean certain. It means possible, given time and restraint.

The right retry posture: spaced and limited

Because the trigger is unknown and often temporary, the correct posture is a small number of attempts spaced days apart, not a burst of retries in the first twenty-four hours.

Space the attempts

Give the unknown trigger time to expire. A first retry a few days after the failure, rather than a few hours, clears a large share of the temporary causes: limits reset, holds lift, customers travel home, pay lands and account behaviour normalises. Retrying within the hour tests the same conditions that just failed and predictably gets the same answer.

Limit the total

Restraint matters as much as spacing. Repeated refusals on the same card help no one, and they train both the issuer and the customer to see your charges as a problem. A disciplined sequence runs a limited number of spaced attempts across the recovery window and then changes strategy — it asks the customer for help instead of asking the issuer the same question again. The retry schedule matrix shows how attempt timing and counts vary by decline family, and do-not-honor belongs in the patient, capped group rather than the fast-retry group.

Watch for a change in the answer

If a later attempt returns a different code, believe the new code. A do-not-honor that converts to a hard decline is new information and should end retries at once. A do-not-honor that converts to insufficient funds is also useful: the problem is now named, and the timing playbook for that named problem applies. Classification is not a one-time label; it updates with every response.

What to tell the customer, and when

Your message to the subscriber has to be honest about uncertainty without sounding vague yourself. The customer can often resolve in one phone call what you cannot resolve in six retries, because the issuer will explain the hold to its own customer even when it tells you nothing.

Good outreach does three things. First, it says plainly that the bank declined the payment and gave no specific reason — customers recognise this and it builds credibility. Second, it gives two clear paths: check with their bank, or update to a different payment method on a secure card-update page. Third, it confirms their subscription is held until a clear date, so the message reads as help rather than a threat.

Timing of outreach matters too. Sending the first message alongside the spaced retry plan, rather than after every attempt has failed, brings the customer into the fix early. Some customers will call their bank, the hold will lift, and your next spaced attempt will succeed with no card change at all. That is the best outcome this code offers, and it only happens if you ask.

When to ask for a different card instead

There is a clear point at which persistence stops being patience and becomes waste. Ask for a different card as the primary request when any of these are true:

  • Your spaced attempts are exhausted. The recovery window has run, the issuer answer has not changed, and further attempts are repetition, not strategy.
  • The customer reports a problem with the card. If the subscriber tells you the account is restricted, the card is being replaced, or the bank will not lift the block, believe them and move straight to new details.
  • A retry returns a harder code. Any shift toward a permanent refusal ends the retry conversation immediately.
  • The subscription value justifies speed. For a subscriber who needs uninterrupted service, waiting out a vague issuer block is a poor trade against the thirty seconds it takes to add a second card.

Asking for a different card is not giving up. It routes around information you cannot access, with the one person who can change the inputs: the customer.

How Swipe Again handles do-not-honor

Swipe Again is failed-payment recovery software built for subscription businesses. On a do-not-honor failure, it classifies the decline as soft, runs decline-code-aware smart retries — up to 6 attempts over ~16 days, spaced rather than clustered — and pairs them with branded dunning emails, a branded card-update page, and SMS in the sequence, so the customer can either clear the issue with their bank or supply a different card. If any attempt returns a hard decline, retries stop: hard declines are never retried. On connect, Swipe Again also runs a 90-day backfill on your existing backlog of failed payments. Cancel deflection with Discount, Pause, and Service offers is included, for subscriptions that reach the end of recovery.

Swipe Again works with nine platforms: Stripe, Recharge, Seal Subscriptions, Skio, Loop Subscriptions, Chargebee, Recurly, Braintree, and Paddle. Pricing is $179/mo flat ($1,799/yr), with no percentage of recovered revenue and no MRR tiers. There is a 14-day trial with a card upfront, and connecting takes about 2 minutes. The guarantee is stated in exactly one form: "Recover $179 in 30 days, guaranteed — or Swipe Again is free the next 30 days".

The bottom line

Do-not-honor is the issuer refusing to explain itself. You cannot diagnose it, so do not pretend to. Space a limited number of retries so temporary triggers can expire, tell the customer plainly that their bank gave no reason and give them the bank-check and new-card paths early, and switch to asking for a different card the moment the window has run or the answer hardens. Patient, capped, and honest beats aggressive with this code.

Frequently asked questions

What does a do-not-honor decline mean?

It means the issuer refused the charge without giving a specific reason. In many processor mappings it appears as code 05 or the do_not_honor category. It is a soft decline: the card has not been reported lost or permanently blocked, and a later attempt can succeed, but the merchant is not told what caused the refusal.

Should you retry a do-not-honor decline?

Yes, but with restraint. Use a limited number of attempts spaced days apart, not repeated retries within hours. Spacing gives temporary triggers such as limits and holds time to clear. If the spaced attempts are exhausted or a retry returns a hard decline, stop retrying and ask the customer for a different payment method.

Why will the bank not explain a do-not-honor decline?

Issuers use the code as a catch-all to avoid disclosing fraud rules, account details, and internal policy to merchants. The issuer will often explain more to its own customer than to you, which is why asking the subscriber to check with their bank is a practical and effective step for this code.

When should you ask the customer for a new card?

Ask when your spaced retry window has run without success, when the customer reports the card or account is restricted or being replaced, or when a retry returns a harder decline code. At that point a different card is faster and more reliable than further attempts on the same details.

Is do-not-honor the customers fault?

No. The customer often has no idea the charge was refused and may have done nothing wrong. Temporary risk flags, travel patterns, and issuer holds can all produce this code. Outreach should treat the subscriber as a partner in fixing it, not as someone who caused a problem.

Stop losing subscribers who never meant to leave.

Connect in 2 minutes. Free 14-day trial — Recover $179 in 30 days, guaranteed — or Swipe Again is free the next 30 days. Recovered revenue means every failed payment collected while Swipe Again is active, from any recovery source, as defined in Section 3 of our Terms. How we count: https://swipeagain.com/pages/how-we-count

Start trial
Start today

Stop losing subscribers
who never meant to leave.

Every billing cycle without recovery is revenue you earned and never collected. Connect in 2 minutes — see your first wins inside the trial.

Start trial

Free 14-day trial · No code · Cancel anytime