{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/citi/main/json-schema/citi-notification-request-schema.json",
  "title": "notificationRequest",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/citi-notification-api-openapi.yml#/components/schemas/notificationRequest",
  "required": [
    "AcquirerCountryCode",
    "AcquirerInstitutionID",
    "AuthIDCode",
    "BillingAmount",
    "CardAcceptorIDCode",
    "CardAcceptorNameLocation",
    "CardAcceptorTerminalID",
    "CardExpiryDate",
    "CurrencyCodeBilling",
    "CurrencyCodeTransaction",
    "LocalTransactionDate",
    "LocalTransactionTime",
    "MCCMerchantType",
    "MessageTypeID",
    "POSConditionCode",
    "POSEntryMode",
    "PrimaryAccountNumber",
    "ProcessingCode",
    "ResponseCode",
    "RetrievalReferenceNumber",
    "SystemTraceAuditNumber",
    "TransactionAmount",
    "TransmissionDateAndTime"
  ],
  "type": "object",
  "properties": {
    "MessageTypeID": {
      "maxLength": 4,
      "minLength": 4,
      "type": "string",
      "description": "ISO Message Type Identifier - 0100 for Auths/0120 for Advices/0400 or 0420 for Reversals"
    },
    "PrimaryAccountNumber": {
      "maxLength": 19,
      "minLength": 19,
      "type": "string",
      "description": "Primary Account Number - this contains the (Real) Card Number"
    },
    "ProcessingCode": {
      "maxLength": 6,
      "minLength": 6,
      "type": "string",
      "description": "Processing Code"
    },
    "TransactionAmount": {
      "maxLength": 13,
      "minLength": 1,
      "type": "string",
      "description": "Transaction Amount"
    },
    "BillingAmount": {
      "maxLength": 13,
      "minLength": 1,
      "type": "string",
      "description": "Cardholder Billing Amount"
    },
    "TransmissionDateAndTime": {
      "maxLength": 10,
      "minLength": 10,
      "type": "string",
      "description": "Date and Time - MMDDHHMMSS format"
    },
    "SystemTraceAuditNumber": {
      "maxLength": 6,
      "minLength": 6,
      "type": "string",
      "description": "Number assigned by the message initiator that uniquely identifies a cardholder transaction and all message types that comprise it"
    },
    "LocalTransactionTime": {
      "maxLength": 6,
      "minLength": 6,
      "type": "string",
      "description": "Transaction Local Time HHMMSS"
    },
    "LocalTransactionDate": {
      "maxLength": 4,
      "minLength": 4,
      "type": "string",
      "description": "Transaction Local Date - MMDD"
    },
    "CardExpiryDate": {
      "maxLength": 4,
      "minLength": 4,
      "type": "string",
      "description": "Card Expiration Date - YYMM"
    },
    "MCCMerchantType": {
      "maxLength": 4,
      "minLength": 4,
      "type": "string",
      "description": "Card acceptor business code / merchant category code [MCC]"
    },
    "AcquirerCountryCode": {
      "maxLength": 3,
      "minLength": 3,
      "type": "string",
      "description": "Acquiring Institution Country Code is the code of the country where the acquiring institution is located"
    },
    "POSEntryMode": {
      "maxLength": 4,
      "minLength": 4,
      "type": "string",
      "description": "indicates the method used for PAN entry to initiate a transaction and the PIN entry capabilities"
    },
    "POSConditionCode": {
      "maxLength": 2,
      "minLength": 2,
      "type": "string",
      "description": "(Visa only) Code identifying transaction conditions at the point-of-sale or point of service - for MC, refer to F61 fields below"
    },
    "AcquirerInstitutionID": {
      "maxLength": 11,
      "minLength": 6,
      "type": "string",
      "description": "Identifies the acquiring institution (for example, merchant bank) or its agent"
    },
    "RetrievalReferenceNumber": {
      "maxLength": 12,
      "minLength": 12,
      "type": "string",
      "description": "Reference number supplied by the system retaining the original source document of the transaction and assists in locating that source document or a copy thereof"
    },
    "AuthIDCode": {
      "maxLength": 6,
      "minLength": 6,
      "type": "string",
      "description": "Authorization code provided by the issuer when a transaction is approved"
    },
    "ResponseCode": {
      "maxLength": 2,
      "minLength": 2,
      "type": "string",
      "description": "Code that defines the response to a request or the message disposition and acknowledgement that a transaction or a message was received"
    },
    "CardAcceptorTerminalID": {
      "maxLength": 8,
      "minLength": 8,
      "type": "string",
      "description": "Identifies a terminal at the card acceptor location of acquiring institutions or merchant POS systems"
    },
    "CardAcceptorIDCode": {
      "maxLength": 15,
      "minLength": 15,
      "type": "string",
      "description": "Merchant ID to uniquely identify the merchant in a transaction"
    },
    "CardAcceptorNameLocation": {
      "maxLength": 40,
      "minLength": 40,
      "type": "string",
      "description": "Name and location of the card acceptor that defines the point of interaction in both local and interchange environments"
    },
    "CurrencyCodeTransaction": {
      "maxLength": 3,
      "minLength": 3,
      "type": "string",
      "description": "Local currency of the acquirer or source location of the transaction"
    },
    "CurrencyCodeBilling": {
      "maxLength": 3,
      "minLength": 3,
      "type": "string",
      "description": "Currency code used by the issuer to bill the cardholder's account"
    },
    "VisaF44RespSrcReasonCode": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "For Visa STIP advice, contains the response source/reason code that identifies the source of the field 39 response decision"
    },
    "VisaF60TermEntCapab": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "Code identifying the terminal's capability to electronically read account numbers and expiration dates from cards"
    },
    "VisaF60ChipCondCode": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "Code that provides information about fallback transactions, which are initiated from the magnetic-stripe of VSDC cards at VSDC terminals"
    },
    "VisaF60SpclCondIndic": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "Describes selected special conditions at the point-of-sale"
    },
    "VisaF60ChipTxnIndic": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "This code is set by full VSDC data acquirers if they receive a message from the terminal that indicates a chip-based transaction"
    },
    "VisaF60MoToECIndic": {
      "maxLength": 2,
      "minLength": 2,
      "type": "string",
      "description": "For mail order or telephone order transactions (field 25 = 08), it identifies the type of mail/telephone order. For e-commerce transactions (field 25 = 59), it identifies the level of security used in an e-commerce transaction over an open network (for example, the Internet)"
    },
    "VisaF123VirtualCardNbr": {
      "maxLength": 19,
      "minLength": 19,
      "type": "string",
      "description": "Visa Virtual Card Number"
    },
    "VisaF123WalletSPId": {
      "maxLength": 11,
      "minLength": 11,
      "type": "string",
      "description": "Token requestor ID / Wallet Service Provider ID"
    },
    "VisaF126RecurTxnIndic": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "Visa Recurring Transaction flag (value = R identifies a recurring transaction)"
    },
    "MCF48VirtualCardNbr": {
      "maxLength": 19,
      "minLength": 19,
      "type": "string",
      "description": "Mastercard Virtual Card Number"
    },
    "MCF48WalletSPId": {
      "maxLength": 11,
      "minLength": 11,
      "type": "string",
      "description": "Mastercard Token/Wallet Service Provider"
    },
    "MCF60AdviceReasonCode": {
      "maxLength": 3,
      "minLength": 3,
      "type": "string",
      "description": "For Mastercard STIP advice, this field indicates the general purpose of the advice message"
    },
    "MCF61POSTermAtt": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "(POS Terminal Attendance) indicates if the card acceptor is attending the terminal"
    },
    "MCF61POSCHPresence": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "(POS Cardholder Presence) indicates whether the cardholder is present at the point of service and explains the condition if the cardholder is not present. A value of '4' indicates a recurring transaction"
    },
    "MCF61POSCdPresence": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "(POS Card Presence) indicates if the card is present at the point of service"
    },
    "MCF61POSTranStatus": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "(POS Transaction Status) indicates the purpose or status of the request"
    },
    "MCF61POSTranSec": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "(POS Transaction Security) indicates the card acceptor’s confidence in the transaction security level"
    },
    "MCF61POSChActTermLvl": {
      "maxLength": 1,
      "minLength": 1,
      "type": "string",
      "description": "(Cardholder-Activated Terminal Level) indicates the type of cardholder activated terminal used by the cardholder to initiate the transaction"
    },
    "MCF61POSCountryCode": {
      "maxLength": 3,
      "minLength": 3,
      "type": "string",
      "description": "(POS Country Code) indicates the country of the POS location (not the acquirer location) using ISO-specified codes"
    }
  }
}