Skip to content

Mastercard

Mastercard-specific field definitions and requirements for iso8583sim.

Network Detection

Mastercard cards are detected by PAN prefix: - 51-55 (traditional) - 2221-2720 (2-series BINs) - 16 digits

from iso8583sim.core.types import detect_network, CardNetwork

network = detect_network("5500000000000004")
assert network == CardNetwork.MASTERCARD

network = detect_network("2221000000000009")
assert network == CardNetwork.MASTERCARD

Required Fields

Mastercard authorization requests require:

Field Name Format
2 PAN LLVAR (16 digits)
3 Processing Code n6
4 Amount n12
11 STAN n6
22 POS Entry Mode n3
24 NII n3
25 POS Condition Code n2

Note: Field 14 (Expiration) is optional but recommended.

Mastercard-Specific Fields

Field 48 - Additional Data

Mastercard uses Field 48 for additional private data:

Sub-element Description
01 Additional Response Data
14 Transaction Category Code
26 Wallet Program Data

Field 61 - POS Data Extended

Extended point-of-service data:

# Format varies by transaction type
message.fields[61] = "0000000001"

DE127 - Private Data

Mastercard's Data Element 127 contains subfields for network data.

POS Entry Modes (Field 22)

Value Description
010 Manual/Key Entry
051 ICC Read, CVV Reliable
052 ICC Read, CVV Unreliable
071 Contactless M/Chip
072 Contactless Magnetic Stripe
801 E-commerce Manual
812 E-commerce Secure

Response Codes (Field 39)

Code Description
00 Approved
01 Refer to Issuer
04 Pick Up Card
05 Do Not Honor
12 Invalid Transaction
14 Invalid Card Number
41 Lost Card
43 Stolen Card
51 Insufficient Funds
54 Expired Card
55 Incorrect PIN
57 Transaction Not Permitted
58 Transaction Not Permitted to Terminal
61 Exceeds Amount Limit
65 Exceeds Frequency Limit
75 PIN Tries Exceeded
91 Issuer System Error

Example: Mastercard Authorization Request

from iso8583sim.core.types import ISO8583Message, CardNetwork
from iso8583sim.core.builder import ISO8583Builder

message = ISO8583Message(
    mti="0100",
    network=CardNetwork.MASTERCARD,
    fields={
        0: "0100",
        2: "5500000000000004",      # Mastercard PAN
        3: "000000",                # Purchase
        4: "000000010000",          # $100.00
        7: "1225120000",            # Dec 25, 12:00:00
        11: "123456",               # STAN
        14: "2512",                 # Exp Dec 2025
        22: "051",                  # Chip, CVV reliable
        24: "100",                  # NII
        25: "00",                   # Normal transaction
        41: "TERM0001",
        42: "MERCHANT123456 ",
    }
)

builder = ISO8583Builder()
raw = builder.build(message)

Example: Mastercard EMV Authorization

from iso8583sim.demo import generate_emv_auth

# Use a Mastercard PAN
emv_message = generate_emv_auth(
    pan="5500000000000004",
    amount=25000,
    cryptogram="ABCDEF1234567890",
)

print(f"Network: {emv_message.network}")  # CardNetwork.MASTERCARD

MasterCard Payment Gateway (MPG)

Mastercard authorizations route through MasterCard Payment Gateway:

  • Authorization timeouts: 30 seconds standard
  • Reversal required for timeout scenarios
  • Advice messages for offline approvals

SecureCode / 3DS

For e-commerce transactions with 3D Secure:

# Field 48 contains authentication data
# Field 22 = 812 for authenticated e-commerce
message.fields[22] = "812"

Validation

Mastercard-specific validation:

from iso8583sim.core.validator import ISO8583Validator
from iso8583sim.core.types import CardNetwork

validator = ISO8583Validator()
message.network = CardNetwork.MASTERCARD

errors = validator.validate_message(message)
# Validates:
# - All Mastercard required fields present
# - PAN passes Luhn check
# - PAN prefix matches Mastercard ranges
# - Field formats match Mastercard specs

2-Series BINs

Mastercard 2-series BINs (2221-2720) are supported:

# Both are valid Mastercard PANs
"5500000000000004"  # Traditional
"2221000000000009"  # 2-series