Chapter 1. Breaking down declines before reducing them.
An overall decline rate does not tell you what to fix, because it lumps together causes that have nothing to do with one another. An internal filter set too tight, a customer who abandons authentication, a wary foreign issuer, an expired card sitting in a vault: each one opens a different workstream, with a different owner. The first job is to break the number apart. The second is to put a sales value on each piece.
The minimum breakdown: six dimensions, no fewer
| Axis | Why it separates distinct populations | What it reveals in combination |
|---|---|---|
| Issuing country | An issuer scores its distance from the merchant first. The merchant's country does not change that. | One specific corridor dropping off: the lever is then local acquiring or network tokens. |
| Card product | Debit, credit, prepaid, and commercial cards have different limits and different usage rules. | A wave of declines on prepaid or commercial cards signals a usage restriction, not a risk problem. |
| Channel and method | A manually entered card, a wallet, a stored token, and a direct debit do not travel the same path. | A single channel dropping points to a technical regression, often traceable to the hour. |
| CIT or MIT | Issuers judge customer-initiated and merchant-initiated transactions differently. | Poorly flagged MIT chaining produces declines that neither fraud nor the issuer can explain. |
| Amount band | Limits, exemptions, and score thresholds kick in at set tiers. | A cliff at a round amount gives away a setting, at the merchant or at the issuer. |
| Attempt number | The first attempt and the fifth do not measure the same thing. | The first-attempt rate is the only one you can compare over time and across markets. |
A metric only means something against a baseline, so freeze four weeks of data before you change anything. Keep the raw code of every attempt, untranslated: provider labels change without notice, and a mapping written against a label breaks silently. The before-and-after comparison will use the first-attempt rate, at a constant mix.
Chapter 2. Qualifying a code: hard, conditional, or misclassified.
Everyday jargon splits declines into soft and hard, but that split is a merchant abstraction. The networks do not talk that way. Visa sorts its response codes into four categories and attaches a reattempt rule to each. Mastercard adds a Merchant Advice Code to the response code, addressed to the merchant rather than the acquirer. The provider then layers its own label on top, often translated and sometimes stripped of detail. That makes three vocabularies for a single event.
Four questions that qualify any decline
- Who declined? The merchant's filter, the provider, the acquirer, or the issuer. A decline that never reached the issuer cannot be fixed at the issuer.
- Could the same attempt succeed later? That is the only useful definition of a conditional decline: nothing needs to change except the timing.
- What would have to change for it to go through? A data element, an authentication, a card credential, an entire payment instrument. The answer names the workstream.
- Who owns that change? The merchant, the cardholder, or the issuer. A workstream with no owner will not get done.
- How many retries does the network allow? The cap is not a guideline: it is billed and monitored.
| Code | What the issuer is really saying | Retry | What needs to change, and who does it |
|---|---|---|---|
05 (Do not honor) | Discretionary decline with no reason given. The catch-all of card-not-present sales. | Category 4: retry allowed, low yield | Enrich the data sent, tokenize, authenticate the segment (merchant) |
51 (insufficient funds) | Temporary decline, with no judgment on the merchant or the card. | Category 2: deferred retry | Wait for money to hit the account: only the calendar helps (the cardholder) |
54 (expired card) | The stored credential is out of date. The account itself still exists. | Category 3: only after a fix | Refresh the credential with a network token or an account updater (merchant) |
14 (invalid account number) | The number presented matches no account. Often a card-testing burst. | Category 3: never on the same number | Get another payment method and throttle attempts upstream (merchant and customer) |
41 / 43 (lost or stolen card) | A firm decision. The issuer has blocked the instrument. | Category 1: no retry | Stop, do not ship, and send the case to fraud review (merchant) |
57 (transaction not permitted to cardholder) | The card product does not allow this use: channel, country, or merchant category. | Category 1: no retry | Offer another instrument on this segment (merchant) |
61 (exceeds amount limit) | The amount exceeds a cardholder limit. This is not a risk judgment. | Category 2: retry allowed | Split the amount, defer, or get the limit raised (cardholder and merchant) |
65 (Mastercard) · 1A (Visa, CB) | Not a decline. The issuer requires authentication. | One retry, immediately, with 3-D Secure | Replay the transaction with a challenge (merchant) |
91 (issuer unavailable) | An outage or overload at the issuer or on the network link. | Category 2: short technical retry | Back off, then replay, with rate limiting (provider) |
N7 (CVV2 check failed) | The verification data sent does not match. | Category 3: after a fix | Check how the field is collected and transmitted (merchant) |
05, which most systems classify as a soft decline and replay in a loop. It falls under category 4, and therefore under the shared cap of 15 reattempts in 30 days, and its retry yield is low. Fixing it means changing the data you send, not trying again.At Mastercard, declines arrive already sorted
Mastercard groups its card-not-present declines into three families: 79 lifecycle, 82 policy, 83 security. The Merchant Advice Code then says what to do. 01 signals that updated account information exists. On a 79 or 82 decline it points to the account updater; on an 83 it points to a retry with EMV 3-D Secure. 02 allows a later retry, 03 forbids one, and 21 closes out the payment, while codes 24 to 30 set a specific wait, from one hour to 10 days.
{
"tentative_id": "att_2026_08_07_0001",
"commande_id": "CMD-2026-8842",
"rang_tentative": 2,
"carte_ref": "pan_ref_9f2b", // stable card reference, never the PAN
"pays_emission": "BR",
"produit_carte": "credit",
"instrument": "network_token", // pan | psp_token | network_token | wallet
"initiateur": "MIT_recurring", // CIT | MIT_recurring | MIT_industry
"montant_mineur": 4990,
"devise": "BRL",
"authentification": "3ds_frictionless",
"code_reseau_brut": "51", // NEVER the provider's label
"merchant_advice_code": "02",
"categorie_visa": 2,
"psp": "psp_a",
"acquereur": "acq_br_1",
"horodatage": "2026-08-07T09:14:22Z"
}54 and Merchant Advice Code 01. What is the right sequence?Chapter 3. Retrying without getting billed for it.
A retry is money spent to recover a declined sale. Each attempt costs an authorization fee, draws down a counter the networks monitor, and hurts the reputation of the merchant ID when repeated. So write the retry policy like a budget: a number of attempts, a trigger, and a stop condition.
What the networks count, and how
- The counter runs per card and per merchant, across all providers. Splitting your retries between two providers does not divide anything.
- Visa allows no more than 15 reattempts in 30 days for categories 2, 3, and 4, and none for category 1 (Visa Rules, article AI10325 of September 3, 2020, effective April 17, 2021).
- Beyond that, reattempts incur a fee: $0.10 for domestic transactions and an extra $0.05 for cross-border ones, per the fee schedule documented by Qualpay (2022).
- The networks define excessive attempts as 10 declines in 24 hours or 20 declines in 30 days on the same card (TD Merchant Solutions, November 2025).
- Retrying after Merchant Advice Code
03or21triggers a specific fee. TD Merchant Solutions' November 2025 fee schedule raises it to $0.78 per reattempt as of February 1, 2026. - Code classifications change:
39,52, and53moved from category 4 to category 2, and codeZ5was created in category 2 on April 13, 2024 (Visa, Merchant Business News Digest).
| Card type | Retry trigger | Max attempts | Stop condition |
|---|---|---|---|
Insufficient funds (51) | Calendar, not clock: the next day, then payday in the target market | 3 to 4 in 30 days | Code reclassified to category 1, or advice code 03 |
Out-of-date credential (54, advice code 01) | After the account updater responds or the token is remapped | 1 | No updated information available: contact the customer |
Authentication required (65, 1A) | Immediately, in the same session, with a 3-D Secure challenge | 1 | Challenge failed or abandoned: recover the sale through another channel |
Technical failure (91, 96) | Exponential backoff, a few minutes | 2, with global rate limiting | Issuer outage declared: the queue waits instead of hammering |
Discretionary decline (05) | Only if something has changed: token, authentication, address | 1 | No new data to present |
Firm decision (41, 43, 57, advice code 03 or 21) | None | 0 | Immediate: the payment method comes off file |
# A retry fires only if its expected value exceeds its cost.
# marge : gross margin recovered if the retry succeeds
# p_succes : OBSERVED success rate for this family, on your own data
# cout_essai : authorization fee + reattempt fees beyond the cap
# essais_faits : counter kept PER CARD and PER MERCHANT, across all providers
def reprise_autorisee(avis_mastercard, categorie_visa, essais_faits,
essais_24h, plafond_famille):
if avis_mastercard in ("03", "21"):
return False # hard stop, whatever the schedule
if categorie_visa == 1:
return False # no reattempt allowed
if essais_24h >= 10 or essais_faits >= 20:
return False # excessive-attempt zone
return essais_faits < plafond_famille
def reprise_rentable(marge, p_succes, cout_essai):
return marge * p_succes > cout_essai
# How to read it, not a market measurement:
# a margin of 12 units, an observed success rate of 18%, and an attempt
# cost of 0.3 units give 12 * 0.18 = 2.16 > 0.3. The retry is justified.
# At a 2% success rate, it no longer is: 0.24 versus 0.3.Success rates by family are measured, not assumed. Log every retry with the original code, the attempt number, the time elapsed, and the outcome. After a month, recalibrate the schedule table on those numbers. Families that recover nothing drop out of the retry plan, while those that pay off earn one extra attempt, within the network cap.
51. What does the system do?Chapter 4. Measuring what network tokens actually deliver.
A network token changes what the issuer sees, because the number presented was issued by the network's token service after the cardholder was verified at enrollment. Each transaction carries its own cryptogram. The token is restricted to a domain of use, so it is useless elsewhere if it leaks. The issuer is scoring a transaction of proven origin, so the risk score eases and the authorization rate rises. EMVCo publishes the technical framework, and version 2.4 of its tokenization specification is dated July 9, 2026.
| Market | Measured uplift | What the gap says about the market |
|---|---|---|
| Australia | 7,03 % | Token lifecycle management widely adopted by issuers and merchants: the gap versus the clear card number is at its widest. |
| United States | 4,74 % | A card base with high turnover and a large share of stored credentials: the token keeps cards from dying on file. |
| Bahrain | 3,70 % | A market where accepting foreign traffic weighs heavily in the issuer's risk score. |
| Brazil | 3,23 % | A dense card market competing with Pix, the central bank's instant payment system. Every point of authorization is fought over on the card channel. |
| UK | 2,80 % | A high authorization baseline: the relative gain is smaller, but that does not make it negligible. |
| Advertised average | 2% to 7% | The range, not the average, is the useful information. The result depends on the issuer mix and the type of traffic. |
Three workstreams, one tracking metric
- Become a token requestor, directly or through your provider. The token requestor ID determines the domain of use and future portability.
- Migrate the existing vault: card numbers already on file convert to tokens without the customer reentering anything. It is the part that pays back fastest, and the part people forget.
- Track coverage: the share of stored credentials actually tokenized, by market and by issuer. An average uplift means nothing while coverage is stuck at 40%.
- Handle what cannot be tokenized: nonparticipating issuers and domestic schemes with no token service. That remainder is covered in the next chapter, on refreshing stored credentials.
In some markets the question is moot. The Reserve Bank of India has required stored credentials to be tokenized since October 1, 2022, so a merchant that keeps a card number on file there is in breach. Elsewhere, the decision remains an economic one. Domestic schemes complicate the picture: Elo in Brazil, RuPay in India, Verve in Nigeria, Meeza in Egypt, mada in Saudi Arabia, and TROY in Turkey do not follow the international networks' timeline. Measure coverage scheme by scheme, never in aggregate.
Chapter 5. Refreshing stored credentials: the procedure, not the tool.
A base of stored cards decays on its own, through expirations, reissues after loss, product upgrades, and account closures. Each event turns a scheduled charge into a decline, and then a decline into involuntary churn. The networks' updater services sync the provider's vault with issuer records. The service has been around for a long time. What is usually missing is a procedure for using it.
| Framework | Frequency | What it returns | What it doesn't do |
|---|---|---|---|
| Visa Account Updater | Batch submission, at a frequency the merchant chooses | New card number, new expiration date, account closed, or an instruction to contact the cardholder | Covers only participating issuers and says nothing about cards outside the Visa network |
| Mastercard Automatic Billing Updater | Same principle, for Mastercard cards | Same response classes, with groupings 79 and 82 upstream | Does not replace reading Merchant Advice Code 01 in real time |
| Update at authorization | Synchronous, in the response itself | The update comes back with the decline, with no separate request | Only works once the decline has happened: it repairs, it does not prevent |
| Network token lifecycle | Continuous notifications from the token service | Automatic remapping to the new card number, with no merchant action | Does not cover non-tokenized cards or schemes with no token service |
The weekly procedure, in five steps
- Extract the active credentials, excluding accounts already closed and tokenized cards, which are remapped automatically.
- Submit the batch to the updater service, network by network. Pricing is often per match found.
- Apply the responses in the vault before the next billing date: a fix made after the charge has run is useless.
- Retry just once the charges declined for an out-of-date credential, after the fix is applied.
- Contact the customer when the response says “account closed” or “contact cardholder.” No tool replaces that message.
The return is easy to calculate: multiply the number of matches found by the success rate of the retry that follows, then by the remaining value of a subscription. Compare that with the cost of the batch. If the service costs more than it saves, restrict it to segments with high residual value. Redo this math every quarter, because token coverage keeps growing and the useful scope of the service keeps shrinking.
- Outside cards, there is no equivalent. A direct debit mandate, an Indian e-NACH, an Australian PayTo agreement, or a Brazilian Pix Automático cannot be refreshed through a network service.
- The reject itself serves as the signal: account closed, mandate revoked, insufficient funds. Each reason calls for different handling on the merchant side.
- Treat a mandate revocation as a cancellation, not a technical incident. Retrying a charge on a revoked mandate invites a dispute.
- The vault must know the instrument: a single customer relationship can involve a tokenized card, a local mandate, and a wallet, with three different lifecycles.
Chapter 6. Authenticating where it pays.
3-D Secure is configured segment by segment, with each segment getting its own authentication decision. Authenticating adds a step and costs abandonment. Not authenticating exposes you to declines that the issuer would have approved with authentication, and leaves fraud liability with the merchant. The right setting depends first on the market's regime, then on the transaction profile. EMVCo maintains the specification: versions 2.2.0 through 2.3.1.1 are in force, and a draft of version 2.4.0.0 was published on June 3, 2026.
Three uses that are often confused
| Regime | What the merchant must decide | The regime's specific trap |
|---|---|---|
| Mandatory, with exemptions: European Economic Area, Delegated Regulation (EU) 2018/389 | Which exemptions to request, on which amounts, with what fraud rate at the party requesting them | A declined exemption comes back as 65 or 1A. Without an automatic retry with a challenge, the sale is lost. |
| Mandatory, with no equivalent exemption: India, additional factor of authentication required by the Reserve Bank of India | How to enroll a compliant mandate for recurring payments, since authentication cannot be bypassed | A subscription model designed elsewhere will not transfer as is: you need the local mandate rail. |
| Business decision: markets with no strong customer authentication mandate | Which segments to authenticate voluntarily, accepting the abandonment it causes | Authenticating everywhere costs more than the fraud it prevents. Calibrate the threshold segment by segment, on real data. |
- Fill in the optional fields of the authentication request: billing address, email, phone, customer account age, purchase history. They make the difference between a frictionless flow and a challenge.
- Declare the channel honestly, along with the merchant risk indicator: an incomplete request gets challenged as a precaution.
- Measure the frictionless rate by issuing country, not in aggregate. An issuer that challenges everything is an identifiable problem, and one you can negotiate through your acquirer.
- Measure challenge abandonment separately from authorization declines. They are two distinct leaks, with two distinct fixes.
- Retry codes `65` and `1A` once, with a challenge: they are not declines but demands for authentication.
65 at Mastercard or 1A at Visa and CB. A system that treats that response as a decline records a lost sale without any warning, so the authorization rate drops half a point and nobody knows why. The fix is a single rule: any response in this family triggers an immediate retry with a challenge, in the same session, once. Track the retry rate on these codes as a metric in its own right.Exemption policy is driven by the fraud rate: the PSD2 RTS tier the transaction risk analysis exemption by the fraud rate of the provider requesting it. Slipping above a threshold removes the right to exempt in the higher band. The effect is mechanical: more challenges, more abandonment, fewer sales. The fraud rate therefore becomes a conversion parameter, not just a risk metric.
Chapter 7. Building the decline dashboard.
A decline dashboard answers three questions, and no more: how much are we losing, where, and since when? Any screen that does not help answer them is clutter. Six metrics are enough to run the whole workstream, as long as each one has a written definition and a set level of granularity. A metric without a shared definition produces two different numbers in two meetings.
Six metrics, and nothing more
| Indicator | Exact definition | Granularity | What it triggers |
|---|---|---|---|
| First-attempt authorization rate | Approvals on first attempts, excluding retries | Issuing country × card product | The only series comparable over time: the benchmark for all the others |
| Mix of the top five codes | Each code's share of declines, by count | Market × channel, rolling seven days | A share that doubles in 24 hours triggers an investigation, even if the rate is flat |
| Retry rate on authentication codes | Share of 65 and 1A responses actually retried with a challenge | Market × provider | Below 90%, a retry rule is missing somewhere in the chain |
| Network token coverage | Share of stored credentials that are tokenized | Market × scheme | It determines how to read any observed uplift |
| Recovery after retry | Sales recovered out of sales declined, by code family | Decline family × attempt number | It recalibrates the retry schedule and cuts families that recover nothing |
| Attempt fees | Reattempt and excessive-attempt fees, relative to sales recovered | Provider × network | If fees exceed the value recovered, the retry policy is tightened the same day |
-- 1. Authorization rate on the FIRST ATTEMPT: the only comparable series
SELECT
pays_emission,
produit_carte,
COUNT(*) AS tentatives,
AVG(CASE WHEN code_reseau_brut = '00' THEN 1.0 ELSE 0 END) AS taux_premier_essai
FROM tentatives
WHERE rang_tentative = 1
AND jour >= CURRENT_DATE - 7
GROUP BY 1, 2
HAVING COUNT(*) >= 200; -- below 200 attempts, noise drowns out the signal
-- 2. MIX alert: a code whose share doubles over 24 hours
WITH hier AS (
SELECT code_reseau_brut,
COUNT(*) * 1.0 / SUM(COUNT(*)) OVER () AS part
FROM tentatives
WHERE code_reseau_brut <> '00' AND jour = CURRENT_DATE - 1
GROUP BY 1
),
reference AS (
SELECT code_reseau_brut,
COUNT(*) * 1.0 / SUM(COUNT(*)) OVER () AS part
FROM tentatives
WHERE code_reseau_brut <> '00'
AND jour BETWEEN CURRENT_DATE - 15 AND CURRENT_DATE - 2
GROUP BY 1
)
SELECT h.code_reseau_brut, r.part AS part_reference, h.part AS part_hier
FROM hier h JOIN reference r USING (code_reseau_brut)
WHERE h.part > 2 * r.part
AND h.part > 0.02; -- ignore marginal codes91 signals an issuer incident, while a rising 54 signals an aging base of stored credentials. A 05 that gains five points reveals a change in an issuer's behavior or a regression in the data being sent. The rate measures the outcome; the mix names the culprit.One last habit protects everything else. Roll out every settings change on a fraction of traffic, with a randomly drawn control group, and compare first-attempt rates at a constant mix. Without a control group, seasonality, a shift in product mix, and an issuer decision all get mistaken for the effect of the change. A decline reduction program that does not measure its own gains ends up inventing them.
91 goes from 1% to 9% of declines overnight. What must you conclude?