The code that explains nothing
`do_not_honor` — ISO response code 05 — is the issuer declining the transaction without telling you why. It is the catch-all bucket for risk decisions, internal limits, unrecognised recurring merchants, travel flags, velocity rules and a dozen other conditions the bank considers none of your business.
Because the reason is hidden, every downstream decision you make is a probability bet rather than a diagnosis. That is uncomfortable, but it has a clear strategic implication: stop trying to fix the current card and start offering a different path.
Recovery on this code sits well below the others, commonly 30-45% within fourteen days. Teams that treat it like insufficient funds — patient retries, reassuring copy about trying again — consistently land at the bottom of that range.
What is usually behind it
The most common real causes, in rough order: an issuer risk rule triggered by a merchant descriptor or country mismatch; a card-level limit on recurring or online transactions; a temporary hold after suspicious activity; a soft block the cardholder can lift with one phone call; and occasionally a genuine account problem.
Notice that several of these are lifted by the cardholder rather than by you. That is unusual among decline codes and it changes what the message must accomplish: it needs to prompt a human action at the bank, not just at your checkout.
It also explains why the same card often succeeds two days later with no change on your side. Some holds simply expire.
Retry policy: two attempts, then change strategy
One retry at roughly 36 hours is worth making, because temporary holds do expire and a modest share of these recover with no intervention at all.
A second retry several days later is defensible on high-value subscriptions. A third is not. Grinding authorisations against an issuer that is actively declining you accumulates failed-authorisation ratios that acquirers and card networks monitor, and in the worst case it degrades approval rates on your healthy traffic.
Set a hard cap in code rather than in a runbook. Cadence limits that live in someone's head are always exceeded during a revenue-pressure week.
Lead with the alternate card
Because you cannot diagnose the block, the fastest reliable fix is a different credential. Say so immediately, in neutral language that assigns no fault: 'Your bank declined the renewal without giving a reason. This is usually a temporary hold — trying a different card is the quickest fix, or your bank can lift it in a two-minute call.'
That sentence does three things at once. It sets accurate expectations, it removes the implication that the customer did something wrong, and it offers two concrete actions with different effort levels.
Put the update-payment-method link as the primary action. Unlike short balances, waiting is not a strategy here, so the passive option should not be the highlighted one.
Where SCA and frictionless authentication help
Some do-not-honor declines on European and UK cards are the issuer signalling that it wants a strong customer authentication challenge rather than refusing outright. Re-presenting the transaction with 3-D Secure — where your platform supports on-session authentication — converts a portion of these.
The practical route is to send the customer to a hosted payment page where the charge can be completed on-session, so the issuer can challenge them directly, rather than retrying off-session and receiving the same silent refusal.
Frictionless flow matters here: an authentication that resolves without a challenge screen keeps the conversion, while a heavyweight redirect on a mobile browser loses a meaningful share of customers mid-flow.
Multi-channel sequencing
Send email plus WhatsApp on this code, and send them close together. Unlike short balances there is no future moment that is obviously better; you want reach, not timing.
WhatsApp earns its place here specifically because the required action is non-trivial. A customer who reads at 90%+ and replies within fifteen minutes can ask a question — 'which card should I use?' — and a reply that resolves it recovers a subscription that email would have lost silently.
Keep the total sequence to three touches. This code has a lower ceiling than the others, and pushing past three converts almost nobody while generating the majority of your complaint volume.
How much of your involuntary churn is recoverable?
Compares a 40% single-channel baseline against the 63.8% RRLabs platform average.
- At risk / month
- $5,600
- Extra recovered / month
- $1,333
- Annualised, less $3,000 plan
- $12,994
RRLabs vs legacy dunning tools
Churn Buster, Baremetrics Recover, Stripe native dunning and Gravy compared with Revenue Recovery Labs.
| Feature | Legacy tools | Revenue Recovery Labs |
|---|---|---|
| Recovery channels | Email and basic SMS only | Native Meta WhatsApp Cloud API (your number) + email |
| Pricing architecture | $129–$629+/mo, or a percentage cut of recovered cash | Flat $100 / $250 / $500 per month — you keep 100% |
| Retry logic | Fixed calendar dunning (day 1, 3, 7) | Retry window derived per decline code, persisted at ingestion |
| Copy engine | Static templates you edit by hand | 4-tier cascade: cache → primary model → fallback model → deterministic templates |
| White-label | Unavailable or enterprise-only | Flat +$300/mo with custom domain and no vendor watermark |
| Audit trail | Send logs at best | Tier, model, latency and recovery score on every message |
When to escalate to a human
Escalation is economic. Above roughly a few hundred dollars of annual value at risk, a personal message from a real account owner materially outperforms automation on this code, because the customer often needs reassurance rather than a link.
Below that threshold, automation plus an alternate-card prompt is the right ceiling, and the correct response to a non-recovery is a graceful downgrade or pause rather than continued pursuit.
Whatever the threshold, decide it in advance and encode it. Ad hoc escalation always concentrates on the loudest customers rather than the most valuable ones.
Measuring a code with a low ceiling
Do not judge your recovery programme on blended numbers that include this code without segmentation — it drags the average down and hides genuine wins elsewhere.
Track it separately with its own target. A 30-45% band is the realistic range; consistently exceeding it usually means your alternate-card prompt is early and prominent, and consistently missing it usually means your copy is apologising instead of instructing.
Also track how many of these recover on the first passive retry with no message. That share is your free recovery, and it should shape how aggressive the first touch needs to be.
Descriptor hygiene as prevention
A meaningful slice of do-not-honor declines trace back to the merchant descriptor. If the string on the statement does not resemble the product the customer bought, issuers see an unrecognised recurring merchant and cardholders dispute charges they do not recognise.
Set the descriptor to your product name, keep it stable, and include a support contact where the processor allows a second descriptor field. Changing a descriptor mid-life resets the recognition you have built, so pick one and leave it alone.
Descriptor fixes are unglamorous and they reduce both this decline code and your chargeback rate at the same time, which is a rare combination.
Chargeback risk on aggressive retries
Every additional authorisation against a card the issuer is blocking raises the chance the cardholder disputes the eventual successful charge. Disputes are far more expensive than a lost subscription: fees, evidence work, and a ratio that acquirers watch.
That asymmetry is the real reason to cap this code at two attempts. It is not politeness, it is risk management.
Where a customer has already contacted support about the charge, suspend automated attempts entirely and let the human thread finish. Automation racing a support conversation is the most reliable way to produce a dispute.
Where RRLabs fits
Revenue Recovery Labs treats do-not-honor as its own routing bucket: a single retry at roughly 36 hours, an alternate-card prompt in the first message on both email and WhatsApp, and a hard cap enforced in code rather than in policy.
Every generated message is logged with its tier, latency and recovery score, so you can see exactly how this code performs against the others instead of hiding it inside a blended average.
Flat pricing at $100, $250 or $500 per month means the lowest-recovering decline code does not cost you more to attempt than it returns.