retries.com | Payment Infrastructure Reference

Mastercard Transaction Processing Excellence (TPE)

Mastercard's Transaction Processing Excellence (TPE) program identifies and penalizes excessive authorization attempts. If you retry declined transactions without tracking your total attempt count, you are likely already incurring TPE fees. The program has been tightening every year since its October 2022 launch, and the penalties are about to get worse.

Fee Escalation History

Mastercard has increased the TPE fee every year since the program launched:

DateFee per excess attempt
October 2022$0.10
November 2023$0.15
January 2024$0.30
January 2025$0.50

For EU-based transactions, the fee is EUR 0.55 per excess transaction as of August 2024.

The trend is clear. Mastercard views excessive retries as a network abuse problem and is pricing merchants out of brute-force retry strategies.

Thresholds That Trigger Fees

TPE fees apply when you exceed either of these thresholds:

  • 10 declined attempts on the same card number within a rolling 24-hour window.
  • 35 retries on the same card + same acceptor (merchant) + same amount within a rolling 30-day window.

These thresholds count all authorization attempts, not just the ones your retry system sends. If a cardholder manually retries 4 times at checkout and your system retries 7 more times, you have hit 11 attempts and crossed the 24-hour threshold.

Mastercard counts attempts at the BIN level. Test cards and production cards are both counted.

Hard Stop Codes: MAC 03 and MAC 21

Mastercard Advice Codes (MACs) are returned alongside the response code and carry binding instructions.

MAC 03 (Do Not Try Again) means the issuer has made a final decision. Any retry within 30 days incurs the TPE fee immediately, regardless of whether you are under the 10/35 thresholds. There is no grace period and no exceptions.

MAC 21 (Payment Cancellation) means the cardholder has explicitly cancelled the payment arrangement with their issuer. Same rule: any retry within 30 days triggers the fee.

These are not suggestions. They are contractual obligations. If your retry system does not check for MAC 03 and MAC 21, it is generating fees on every single reattempt after these codes appear.

The Multi-System Trap

This is where real-world merchants get burned. If you use multiple retry systems, the combined retry count can exceed TPE thresholds without any single system knowing it has crossed the line.

A common setup: Stripe Smart Retries handles initial reattempts, then a third-party recovery tool (Churnkey, Butter, Gravy, etc.) takes over for further dunning attempts. Stripe does not know what the recovery tool is doing. The recovery tool does not know what Stripe already attempted. Mastercard counts all of them.

This is not a theoretical risk. It happens to merchants running dual-stack recovery. If Stripe retries 6 times and your recovery tool retries 5 times, you have hit 11 attempts on the same card in what might be well under 24 hours.

The fix: maintain a centralized retry counter per card across all systems. If you cannot do that, at minimum share the network_advice_code between systems so MAC 03 and MAC 21 are respected everywhere.

How to Protect Yourself

Concrete steps:

  • Track total retry counts per card across all systems. Not per-system counts. Total counts. Store the card fingerprint (or last 4 + BIN), the timestamp of each attempt, and the response received.
  • Respect MAC 03 and MAC 21 immediately. When either code appears, stop all retry activity on that card for 30 days. No exceptions.
  • Monitor network_advice_code via Stripe. As of API version 2024-12-18.acacia, Stripe surfaces the Mastercard Advice Code in the latest_charge.payment_method_details.card.network_advice_code field. If you are on an older API version, you are flying blind.
  • Set hard caps below the thresholds. Limit yourself to 7-8 attempts per card in 24 hours and 25-30 attempts in 30 days. Leave margin for cardholder-initiated retries you cannot control.
  • Log and audit monthly. Pull your Mastercard billing statement and look for TPE line items. If they are present, your retry logic is too aggressive.

Upcoming Changes: July 2025

Mastercard has announced revised TPE fee rates effective July 2025. The per-attempt fee structure shifts to a percentage-based model: 0.25% of the transaction amount with a $0.04 minimum per excess attempt.

Additionally, Mastercard is changing how it handles "undefined" authorizations, which are attempts that fall outside current TPE categorization. The details are still being finalized, but the direction is toward broader coverage and fewer exemptions.

If you are currently just under the thresholds, the July changes may catch transactions that were previously exempt.

The Bigger Picture: Network Fee Convergence

Mastercard is not alone. Visa runs its own excessive reattempt program with fees of $0.10 for the first excess attempt and $0.15 for subsequent ones within the same cycle.

The combined effect: unintelligent retries now carry real financial cost on both networks. A merchant retrying a Mastercard decline 15 times in 24 hours pays $0.50 x 5 excess attempts = $2.50 in TPE fees alone, on top of the per-transaction processing fees for each attempt.

Scale that to thousands of failed subscription renewals per month and the numbers get large fast. The days of "retry 8 times and hope" are ending. Retry logic needs to be informed by the decline code, the network advice code, and the total attempt count across all systems. Anything less is leaving money on the table in network penalty fees.

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

Related Guides

Mastercard Merchant Advice Codes (MACs)
Complete reference for Mastercard MACs: MAC 01-42, retry windows, Stripe integration, TPE penalties, and how to use MACs to optimize payment retries
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

See Decline Codes in Action

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

Open Transaction Simulator