{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition","tabs","tab"]},"type":"markdown"},"seo":{"title":"Multi-merchant","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"multi-merchant","__idx":0},"children":["Multi-merchant"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Multi-merchant terminals let a single Tyro terminal be shared across several merchant IDs (MIDs)"," ","— predominantly a health-industry use case, where several health service providers (each with"," ","their own MID) share one EFTPOS terminal, and practice management software needs to route each"," ","transaction or claim to the correct provider's bank account without the practice having to"," ","manually transfer funds afterwards."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["merchant group"]}," is the account-level configuration that makes this possible: instead of the"," ","usual case where a location has exactly one MID and only that MID is allocated to its terminals,"," ","every MID under a merchant group account is allocated to every terminal on that account."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/multi-merchant.7e7bce0158aad653c6d15aad78dfc4a154e179ea84fb8b365d45ec14c106afda.68286485.png","alt":"Terminals under a merchant group account have every MID in the group allocated to them"},"children":[]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The merchant's account must be set up as a merchant group for multi-merchant to work — this is a"," ","Tyro and merchant responsibility; no action is required from the POS partner. Without it, a"," ","terminal simply won't have any MID available on it other than the one already allocated to that"," ","location."]}]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"JS library","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you begin, check the certification criteria:"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/assets/certification_criteria_iclient_health.de1992aad6cd97914bb43e39084a8a4b289408d46faa21d159ccd3f2dd420298.d564e73d.pdf"},"children":["Certification Criteria for iClient Health"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"specification","__idx":1},"children":["Specification"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Parameter"},"children":["Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mid"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Integer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The Tyro merchant ID."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tid"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Integer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The Tyro terminal ID."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These parameters are present in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requestParams"]}," object of every transaction-initiating"," ","function — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiatePurchase"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiateRefund"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiateOpenTab"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiateOpenPreAuth"]},","," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiateIncrementPreAuth"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completePreAuth"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reconciliationReport"]},", and terminal-management"," ","functions such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getConfig"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["terminalInfo"]},". See each feature's own page for its full request"," ","parameter table:"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/payment-cashout-refund"},"children":["Payment, cashout and refund"]},","," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/bar-tabs"},"children":["Bar tabs"]},","," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/pre-authorisation"},"children":["Pre-authorisation"]},", and"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/reports"},"children":["Reports"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["They're also present on the JS library's HealthPoint claim and Medicare EasyClaim functions —"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiateHealthPointClaim"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cancelHealthPointClaim"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiateHealthPointRebateEstimate"]},","," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiateFullyPaidEasyclaim"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiatePartPaidEasyclaim"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["initiateBulkBillEasyclaim"]}," — so a"," ","practice management system can route a claim to whichever health service provider's MID it's for,"," ","the same way it routes a purchase or refund."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mid"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tid"]}," are also present in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["options"]}," object of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["manualSettlement"]},", where they're"," ","required rather than optional — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/manual-settlement"},"children":["Manual settlement"]},":"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Parameter"},"children":["Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mid"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Integer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Override the configured mid for multi-merchant terminals, or if your browser does not support local storage."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tid"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Integer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Override the configured tid for multi-merchant terminals or if your browser does not support local storage."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"var iclient = new TYRO.IClientWithUI(apiKey, posProductInfo);\nvar merchantId = undefined;\nvar terminalId = undefined;\nvar integrationKey = undefined;\nvar merchantIdTransact = $(\"#merchantIdTransaction\").val();\nvar terminalIdTransact = $(\"#terminalIdTransaction\").val();\nvar integrationKeyTransact = $(\"#integKeyTransaction\").val();\n\nfunction purchase() {\n    reset();\nvar merchantIdTransact = $(\"#merchantIdTransaction\").val();\nvar terminalIdTransact = $(\"#terminalIdTransaction\").val();\nvar integrationKeyTransact = $(\"#integKeyTransaction\").val();\n    doPurchase($(\"#amount\").val(),merchantIdTransact,terminalIdTransact,integrationKeyTransact);\n}\n\nfunction doPurchase(amount,merchantIdTransact,terminalIdTransact,integrationKeyTransact) {\n\n    iclient.initiatePurchase({\n        amount: amount,\n        cashout: \"0\",\n        integratedReceipt: true,\n        mid: merchantIdTransact,\n        tid: terminalIdTransact,\n        integrationKey: integrationKeyTransact\n    }, {\n        receiptCallback: receiptCallbackImpl,\n        transactionCompleteCallback: transactionCompleteCallbackImpl\n    });\n    \n}\n","lang":"javascript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"handling-the-response","__idx":2},"children":["Handling the response"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once the request is received and processed by the terminal, the response comes back through the"," ","same callback as the function normally uses — no additional steps are required for multi-merchant."," ","See that function's own page for how to handle its response."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://jsfiddle.net/IntegrationSupport/kg2w1e5o/"},"children":["JS Fiddle demo"]}," — pair your terminal using your"," ","MID and TID; any MID-TID-integration key combination can then be used to initiate a transaction by"," ","entering it in the \"Transaction Merchant ID\", \"Transaction Terminal ID\", and \"Transaction"," ","Integration Key\" fields."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Don't click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save"]}," if you make changes in the JS Fiddle — click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Run"]}," instead. Clicking Save"," ","may break the fiddle's functionality."]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":".NET library","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The TTA exposes a separate set of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MidTid"]},"-suffixed methods for multi-merchant terminals:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Method"},"children":["Method"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["boolean PurchaseMidTidAdditionalData(string merchantID, string terminalID, int amountInCents, int cashoutInCents, \"{ 'enableSurcharge': true | false }\")"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same as ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/payment-cashout-refund"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PurchaseAdditionalData"]}]},", but for the merchant ID and terminal ID specified."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["boolean RefundMidTid(string merchantID, string terminalID, int amountInCents)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same as ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/payment-cashout-refund"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Refund"]}]},", but for the merchant ID and terminal ID specified."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ITransactionResult ClaimMidTid(string merchantID, string terminalID, string providerID, string serviceType, int claimItemsCount, long totalClaimAmount, string payload)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Claim"]},", but for the merchant ID and terminal ID specified — routes a HealthPoint claim to the specified health service provider's MID."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ITransactionResult CancelMidTid(string merchantID, string terminalID, string providerID, string serviceType, int claimItemsCount, long totalClaimAmount, string refTag, string payload)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Cancel"]},", but for the merchant ID and terminal ID specified."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ITransactionResult BulkBillClaimMidTid(string merchantID, string terminalID, string payload, bool rightsAssigned)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BulkBillClaim"]},", but for the merchant ID and terminal ID specified."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ITransactionResult FullyPaidClaimMidTid(string merchantID, string terminalID, string payload)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FullyPaidClaim"]},", but for the merchant ID and terminal ID specified."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ITransactionResult PartPaidClaimMidTid(string merchantID, string terminalID, string payload)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Same as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PartPaidClaim"]},", but for the merchant ID and terminal ID specified."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The same pattern extends to other features' TTA methods — see the .NET library tab on"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/bar-tabs"},"children":["Bar tabs"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/pay-in-person/features/manual-settlement"},"children":["Manual settlement"]}," for their own"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MidTid"]},"-suffixed overloads. Response handling is otherwise identical to the non-multi-merchant"," ","method."]}]}]}]},"headings":[{"value":"Multi-merchant","id":"multi-merchant","depth":1},{"value":"Specification","id":"specification","depth":3},{"value":"Handling the response","id":"handling-the-response","depth":3}],"frontmatter":{"title":"Multi-merchant","seo":{"title":"Multi-merchant"}},"lastModified":"2026-09-29T11:51:36.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/in-person-payments/pay-in-person/features/multi-merchant","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}