Multi-Merchant Transactions

A multi-merchant terminal allows several business entities to process payment cards on a single terminal, with each business having a separate merchant account. The payment terminal communicates its merchant configuration to the PSDK during initialization.

When there are multiple merchants supported on the terminal, the POS needs to select one of the merchants when logging in. The POS can select a merchant prior to login by calling :java:ref:PaymentSdk.getDeviceInformation().getMerchantConfig()` to access an array of sponsored merchants. The field Merchant.mRecordId contains the reference id to the merchant to include in the login credentials.

The POS can also perform a login without specifying a merchant. If the terminal supports multiple merchants, it will reject this login and send a user input event with text content “Please select the merchant”, as well as an array of menu entries containing the common names of all of the sponsored merchants supported by the terminal. This may be accessed at UserInputEvent.getRequestParameters().getContent(). At this point, the POS must select one of the menu entries corresponding to the desired merchant (see UserInputEvent.getRequestParameters().getMenuEntries()) and return the menu selection in UserInputEventResponse to the PSDK, which in turn resends the original login request with the selected merchant identifier added to the credentials.