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__cfor the storeThis 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