retries.com | Payment Infrastructure Reference

Mastercard Merchant Advice Codes (MACs)

Mastercard Merchant Advice Codes (MACs) are supplementary signals attached to decline responses that tell you exactly what to do next. A raw decline code like 05 (Do Not Honor) is vague by design. The MAC that accompanies it removes the ambiguity: retry in 24 hours, never retry again, or update your token. If you are only reading the response code and ignoring the MAC, you are flying blind.

What MACs Are and Why They Exist

Every Mastercard decline includes a two-digit response code in Field 39 of the ISO 8583 message. That code tells you what happened. The Merchant Advice Code tells you what to do about it.

Response codes were designed in the 1980s and carry decades of ambiguity. Code 05, for instance, could mean suspected fraud, a temporary hold, or an issuer system glitch. The MAC system, introduced by Mastercard to sit alongside these codes, provides explicit, machine-readable instructions from the issuer. Think of it as the issuer saying: "I declined this, and here is exactly how you should handle the next attempt."

The Full MAC Reference Table

MACNameAction
01New account information availableCard details have changed. Query Account Updater (Visa VAU or Mastercard ABU) for the new PAN or expiry before retrying.
02Cannot approve at this time, try again laterSoft decline. The issuer expects the condition to resolve. Retry after 24-72 hours.
03Do not try againHard stop. The account is closed, blocked, or permanently restricted. Do not reattempt within 30 days. Mastercard enforces this with fees.
04Token requirements not fulfilledThe transaction requires a network token but was submitted with a raw PAN, or the token is stale. Provision or refresh the token and retry.
21Payment cancellationThe cardholder has explicitly canceled the recurring payment mandate with their issuer. Treat this as a hard stop. Continuing to charge is a compliance violation.
22Merchant does not qualify for product codeYour MCC or merchant configuration does not support this card product. Do not retry. This is a setup issue, not a cardholder issue.
24Retry after 1 hourThe issuer explicitly requests a 1-hour delay before the next attempt.
25Retry after 24 hoursWait at least 24 hours. Often tied to daily velocity or spending limits resetting overnight.
26Retry after 2 daysTwo-day hold, commonly seen when the issuer has flagged the transaction for manual review.
27Retry after 4 daysFour-day window. Typical for cases where the issuer needs the cardholder to take an action (e.g., verify identity).
28Retry after 6 daysSix-day delay requested by the issuer.
29Retry after 8 daysEight-day delay. Less common, typically tied to longer fraud investigation timelines.
30Retry after 10 daysTen-day hold. The longest timed retry window in the MAC spec.
40Consumer non-reloadable prepaid cardThis is a prepaid card that cannot be reloaded. If the balance is insufficient, it will never increase. Treat as a hard decline for recurring billing.
41Consumer single-use virtual card numberThis card number was generated for a single transaction. It will never approve a second charge. Prompt the customer for a new payment method.
42Sanctions screening declineThe transaction was declined due to sanctions compliance (OFAC, EU sanctions, etc.). Do not retry. Consult your compliance team.

MAC 24-30: The Most Underused Signal in Payments

MACs 24 through 30 are timed retry codes. The issuer is telling you, in plain terms, when to try again: 1 hour, 24 hours, 2 days, 4 days, 6 days, 8 days, or 10 days. Most billing systems ignore these entirely and fall back to fixed retry schedules (e.g., days 1, 3, 5, 7).

This is leaving money on the table. If an issuer returns MAC 24 (retry after 1 hour), your fixed 24-hour retry delay means you are waiting 23 hours longer than necessary. If they return MAC 27 (retry after 4 days) and you retry after 1 day, you will get declined again and burn one of your limited retry attempts for nothing.

The fix is straightforward: parse the MAC, and if it falls in the 24-30 range, override your default retry schedule with the issuer-specified window. This single change can measurably improve recovery rates on Mastercard volume.

MAC 03 and the Penalty for Ignoring It

MAC 03 means "do not try again." Mastercard enforces this. If you reattempt a transaction that returned MAC 03 within 30 days of the original decline, Mastercard's Transaction Processing Excellence (TPE) program treats each subsequent attempt as an excess retry.

As of January 2025, the fee is $0.50 per excess attempt on MAC 03 violations. For a subscription business processing thousands of recurring payments, ignoring MAC 03 can generate substantial penalty fees. Mastercard also tracks your violation rate at the merchant level, and chronic violators face escalating consequences including mandatory action plans.

The implementation is simple: when you receive MAC 03, mark that payment method as non-retriable for at least 30 days. If the customer wants to continue their subscription, they need to provide a new card.

How to Access MACs via Stripe

Stripe added the network_advice_code field to the Charge object in December 2024 with API version 2024-12-18.acacia. You can find it at:

charge.payment_method_details.card.network_advice_code

This field is only populated on Mastercard declines. For Visa, use network_decline_code combined with Visa's category system (see the Visa Decline Categories guide).

To access it, ensure your Stripe API version is 2024-12-18.acacia or later. If you are on an older version, you can pin the newer version in individual API calls without upgrading your entire integration:

Stripe::Charge.retrieve(charge_id, {}, { api_version: '2024-12-18.acacia' })

The field returns the two-digit MAC value as a string: "01", "03", "24", etc.

MACs and the TPE Program

Mastercard's Transaction Processing Excellence (TPE) program monitors merchants for excessive reattempts on declined transactions. MACs are the primary signal Mastercard uses to determine whether a retry is legitimate or excessive.

TPE tracks two key metrics:

  • Reattempt rate: The percentage of declined transactions that are retried within 30 days.
  • Reattempt violation rate: The percentage of retries that violate MAC guidance (e.g., retrying a MAC 03 decline, or retrying before a MAC 25's 24-hour window has elapsed).

Merchants exceeding TPE thresholds receive notifications from their acquirer with a remediation timeline. Continued violations result in per-transaction fees and, in severe cases, restrictions on retry privileges.

The practical takeaway: build your retry logic around MACs, not around arbitrary schedules. If you honor MAC 03 as a hard stop, respect MAC 24-30 retry windows, and use MAC 01 to trigger Account Updater queries, you will stay well within TPE compliance and recover more revenue in the process.

Related Decline Codes

05 Do not honor Generic refusal from the issuer 51 Insufficient funds The cardholder's available balance is below the transaction amount 54 Expired card The card's expiration date has passed 91 Issuer unavailable The issuer's system is down or unreachable

Related Guides

Visa Decline Code Categories Explained
Visa's 4-category decline system: which codes are retriable, retry limits, excess reattempt fees, and how to map Stripe network_decline_code to Visa categories
Mastercard Transaction Processing Excellence (TPE)
Mastercard TPE fee structure, retry thresholds, MAC 03/21 rules, and how to avoid excess authorization fees
Hard vs Soft Declines: The Complete Guide
How to classify hard and soft declines across Visa, Mastercard, and Amex

See Decline Codes in Action

Watch how response codes flow through a complete ISO 8583 authorization lifecycle.

Open Transaction Simulator