TMS
Legacy API
Quickstart
⚠️

Legacy API — deprecated. This walkthrough uses the legacy /api/v2 configuration endpoints, kept only for existing integrations. New integrations should follow the Service API quickstart instead. Once your PBO group has been switched over to the current Service API, the endpoints below return code: 13310 — see the Service API overview for details.

Base URLs: https://uat-mtms.mspayhub.com/api/v2 (UAT), https://mtms.mspayhub.com/api/v2 (Prod). Authentication is the same as the current Service API — see Authentication.

OpenAPI definition for the /api/v2 endpoints:

Get your group ID

Your groupId is used to look things up (e.g. acquirer profiles) — you do not need to send it in any request body. The PBO is always identified from your Bearer token; a groupId field in a request body is silently ignored.

You can retrieve the owner information as below:

Example Request - Get Owner Info
GET https://uat-mtms.mspayhub.com/api/v2/current
Authorization: Bearer {jwt}

Example Response - 200 OK

Example Response - Get Owner Info
HTTP/2 200 OK
content-type: application/json;charset=UTF-8
 
{
  "msg": "SUCCESS",
  "code": 0,
  "data": {
    "groupName": "Sandbox",
    "messageFormat": "[\"MS_ENABLER\"]",
    "groupId": "G-12345678",
    "emailSender": "{}",
    "updatedAt": "2024-07-19T09:27:29+0000"
  }
}

Create the EMV configs

emvList on the acquirer profile (next step) references EMV configs by ID — create them first. Unlike the multi-acquirer API, params here is a plain JSON object, not a JSON-encoded string. See EMV Config for all fields.

Example Request - Create EMV Config (payment method 01)
POST https://uat-mtms.mspayhub.com/api/v2/emv
Authorization: Bearer {jwt}
Content-Type: application/json
 
{
  "emvName": "l3-visa",
  "paymentMethod": "01",
  "params": {
    "aid": "A0000000031010",
    "appVersion": "0002",
    "clFloorLimit": 0,
    "clTransLimit": 99999999,
    "clCVMLimit": 100000
  }
}
Example Response - Create EMV Config (payment method 01)
HTTP/2 200 OK
content-type: application/json;charset=UTF-8
 
{ "msg": "SUCCESS", "code": 0, "data": { "id": 1675 } }

Repeat for payment method 02 (e.g. "emvName": "l3-mastercard") — this walkthrough assumes it comes back as "id": 1676.

Create an acquirer profile

Unlike the multi-acquirer API, a single-acquirer profile can cover every payment method the merchant needs at once — there's no need for one profile per method. methodList/emvList are JSON-encoded strings, keyed by payment method code. See Acquirer Profile for all fields.

Example Request - Create Acquirer Profile
POST https://uat-mtms.mspayhub.com/api/v2/acquirer
Authorization: Bearer {jwt}
Content-Type: application/json
 
{
  "profileName": "Visa & Mastercard - SG",
  "currency": "SGD",
  "connMessageFormat": "MS_ENABLER",
  "connUrl": "https://acquirer-host.example.com/gateway",
  "methodList": "{\"01\":[],\"02\":[]}",
  "emvList": "{\"01\":[1675],\"02\":[1676]}"
}
Example Response - Create Acquirer Profile
HTTP/2 200 OK
content-type: application/json;charset=UTF-8
 
{ "msg": "SUCCESS", "code": 0, "data": { "id": 316 } }

Create merchant

You can create the merchant as below. supportedPaymentMethods binds the merchant to the acquirer profile from the previous step — use "paymentMethod": "ALL" to bind every payment method that profile supports in one go (or list specific methods like "VISA", "MASTERCARD" individually). If you omit supportedPaymentMethods entirely, the merchant falls back to your PBO's default acquirer profile, if one is configured.

Example Request - Create Merchant
POST https://uat-mtms.mspayhub.com/api/v2/mchInfo
Authorization: Bearer {jwt}
Content-Type: application/json
 
{
  "mchName": "ACME Café",
  "contactEmail": "[email protected]",
  "contactName": "John Doe",
  "timeZone": "Asia/Singapore",
  "providerReference": "my-reference",
  "mcc": "5814",
  "country": "SG",
  "supportedPaymentMethods": [
    { "paymentMethod": "ALL", "profileId": 316 }
  ]
}

Example Response - 200 OK

Example Response - Merchant Created
HTTP/2 200 OK
content-type: application/json;charset=UTF-8
 
{
  "msg": "SUCCESS",
  "code": 0,
  "data": {
    "mchId": "M1721816099",
    "contactEmail": "[email protected]",
    "contactName": "John Doe",
    "groupId": "G-12345678",
    "mchName": "ACME Café",
    "timeZone": "Asia/Singapore",
    "mcc": "5814",
    "country": "SG",
    "uuid": "M1721816099",
    "createdAt": "2024-07-24T10:14:59+0000",
    "receiptLogo": "https://d1s8odmojpby5x.cloudfront.net/logo-merchant-images.png",
    "providerReference": "my-reference",
    "state": 1,
    "id": "M1721816099",
    "supportedPayments": [
      "VISA",
      "MASTERCARD"
    ],
    "updatedAt": "2024-07-24T10:14:59+0000"
  }
}

Check or update the merchant payment config

supportedPaymentMethods on merchant creation already bound both methods to profile 316 above. Use this endpoint later to see the current binding or to rebind a single payment method to a different acquirer profile — since a payment method maps to exactly one profile on the single-acquirer API, setting one that's already bound just overwrites it. See Payment Config for all fields.

Example Request - List Payment Config
GET https://uat-mtms.mspayhub.com/api/v2/mchInfo/payment/M1721816099
Authorization: Bearer {jwt}
Example Response - List Payment Config
HTTP/2 200 OK
content-type: application/json;charset=UTF-8
 
{
  "msg": "SUCCESS",
  "code": 0,
  "data": [
    { "paymentMethod": "VISA", "profileId": 316 },
    { "paymentMethod": "MASTERCARD", "profileId": 316 }
  ]
}
Example Request - Set Payment Config
POST https://uat-mtms.mspayhub.com/api/v2/mchInfo/payment/M1721816099
Authorization: Bearer {jwt}
Content-Type: application/json
 
{
  "paymentMethod": "VISA",
  "profileId": 316
}
Example Response - Set Payment Config
HTTP/2 200 OK
content-type: application/json;charset=UTF-8
 
{ "msg": "SUCCESS", "code": 0 }

Create activation code

Once the merchant is created, you can provision the activation code for the SoftPOS app as below

Note that you'll need to pass the mchId retrieved from the previous API

For the MID/ TID binding, you can pass it in the request methodList

Example Request - Create Activation Code
POST https://uat-mtms.mspayhub.com/api/v2/device
Authorization: Bearer {jwt}
Content-Type: application/json
 
{
  "deviceType": "COTS",
  "activateCodeAlias": "Code name",
  "deviceAdmin": "passcode",
  "methodList": "{\"all\":{\"tid\":\"12345678\",\"mid\":\"1234567890123\"}}",
  "mchId": "M1721871518",
  "extParams": {"acqMid": "000","acqTid": "000"}
}

Example Response - 200 OK

Example Response - Merchant Created
HTTP/2 200 OK
content-type: application/json;charset=UTF-8
 
{
  "msg": "SUCCESS",
  "code": 0,
  "data": {
    "id": "CD-017241045101",
    "activationCode": "017241045101"
  }
}

From the response, you can use the activationCode for the login on SoftPOS app!


SoftPOS App Activation