Multi-Merchants

Multi-Merchant Management enables a single payment terminal (POI) to process transactions for multiple distinct legal entities or merchant IDs (MIDs). This capability allows a business that hosts various brands or franchises (such as a large department store or a food court) to accurately route and settle funds from a single physical device to different bank accounts based on which merchant is selected for the transaction. For customers, this ensures cleaner financial traceability, simplified end-of-day reconciliation for each sponsored merchant, and regulatory compliance by separating the sales of different entities.

Header

The standard SaleToPOIRequest.MessageHeader object, with MessageClass set to Service and MessageCategory set to Payment.

Body

A Multi-Merchants Payment Request is handled by sending a standard Payment Request, the POS must include the SponsoredMerchant object within the main PaymentRequest. This data is used by the payment terminal to correctly identify and route the transaction.

Field Name Type Required Description
CommonName

String

No

The name of the merchant whose account is being credited. This often appears on receipts.
RegisteredIdentifier

String

Yes

The unique ID of the sponsored merchant whose account funds will be routed to. By default it is incremental (1, 2, 3...); Value can be customized with Client internal reference field during onboarding.
MerchantCategoryCode

String

No

A 4-digit code identifying the specific business category of the merchant (e.g., Grocery Stores, Restaurants).
CountryCode

String

No

The ISO country code (numeric) where the sponsored merchant is registered.
Payment Request example

Merchants are configured in terminal and POS simply indicate desired one via SponsoredMerchant field.

{
  "MessageHeader": {
    "MessageCategory": "Payment",
    "MessageClass": "Service",
    "MessageType": "Request",
    "POIID": "PayOnSite",
    "ProtocolVersion": "3.1",
    "SaleID": "POS_01",
    "ServiceID": "83"
  },
  "PaymentRequest": {
    "PaymentData": {
      "PaymentType": "Normal"
    },
    "PaymentTransaction": {
      "AmountsReq": {
        "Currency": "EUR",
        "RequestedAmount": 12.34
      }
    },
    "SaleData": {
      "OperatorID": "App2AppOperator",
      "OperatorLanguage": "PL",
      "SaleTransactionID": {
        "TimeStamp": "2025-11-29T22:05:55.029",
        "TransactionID": "12345"
      },
      "SponsoredMerchant": {
        "CommonName": "Selected Merchant",
        "CountryCode": "250",
        "MerchantCategoryCode": "5411",
        "RegisteredIdentifier": "1"
      }
    }
  }
}

Review the full schema on the API specification page for required fields.

Store Identifier

If a client would like to call the payment application with their own store identifiers in the field RegisteredIdentifier , it is possible : 

  • During the provisioning process, a company can input a desired internal value into the field R_f_rence_Interne_Client__c for the store

  • This value is then transmitted to the NTMS and serves to override or replace the merchant's standard registered identifier. 

  • The terminal is then able to identify the merchant in the payment request with the client identifier