TMS
Legacy API
Merchant
⚠️

Legacy API — deprecated. This page documents the legacy /api/v2 Merchant endpoints, kept for existing integrations. New integrations should use the current Merchant API. Once your PBO group has been switched over to the current Service API, every write and lookup endpoint on this page — create, update, delete, get details, and all payment-config endpoints — returns code: 13310 ("Your group has open the multi_acquirers;please use the new Service API") instead of working. See the Service API overview for details.

The one exception is Merchant List (GET /api/v2/mchInfo), which keeps working after the switch.

Merchant List

Retrieves a list of merchants under this PBO (Payment Business Owner).

Get Merchant List
GET /api/v2/mchInfo
Authorization: Bearer {jwt}

Parameters

NameTypeRequiredDescription
mchNamestringfalseFilter by merchant name (partial match)
mchIdstringfalseFilter by merchant unique ID generated by MineSec system
pageNumbernumberfalseDefault 1
pageSizenumberfalseDefault 10; use -1 to return all merchants on one page

This endpoint keeps working even after your PBO group has been switched over to the current Service API — it is the one endpoint on this page that does not return 13310. See the Service API overview for details.

Response

StatusMeaningDescriptionSchema
200OK (opens in a new tab)OKWrapper: Response List<T>
Data: Merchant

Example Response (200)

Example Response - Merchant List
{
  "msg": "SUCCESS",
  "code": 0,
  "data": {
    "total": 10,
    "current": 1,
    "hasNext": false,
    "records": [
      {
        "mchName": "Coffee Shop",
        "mchId": "M-12345678",
        "providerReference": "MID180045210008",
        "contactName": "John Smith",
        "contactEmail": "[email protected]",
        "contactAddress": "123 Main St, Springfield",
        "contactPhone": "555-1234",
        "mcc": "5811",
        "state": 1,
        "timeZone": "Asia/Singapore",
        "country": "SG",
        "extParams": {
          "acqMid": "1234567850001",
          "acqTid": "0001252001"
        }
      }
    ]
  }
}

Create Merchant

Creates a new merchant with the provided information.

Create Merchant
POST /api/v2/mchInfo
Authorization: Bearer {jwt}

Parameters

Full schema: MerchantRequest. Key fields:

NameTypeRequiredDescription
mchNameStringYESMerchant display name
providerReferenceStringNoYour own unique reference ID for this merchant (must be unique per merchant)
contactNameStringYESMerchant contact person's name
contactEmailStringYESMerchant contact email
contactPhoneStringNoMerchant contact phone
contactAddressStringNoMerchant contact address (shown on e-receipt if set)
mccStringNoMerchant category code (ISO 18245), e.g. 5811 for "eating places"
regionStringNoRegion code for this merchant, used for reporting/routing
timeZoneStringNoMerchant's local timezone (IANA tz name); defaults to the PBO's timezone if omitted
countryStringYESMerchant's country (ISO 3166-1 alpha-2 code), e.g. SG
transTypeStringNoRestricts this merchant to a specific transaction type, if set
stateintNo1 = active (can process payments), 0 = inactive
mdrStringNoMerchant discount rate override for this merchant, if your PBO supports per-merchant MDR
merchantTypeStringNoMerchant type classification used for reporting/segmentation
extParamsObjectNoExtra parameters (e.g. MID/TID, SubMID, subTID, secret token)
supportedPaymentMethodsArray<Object>NoExplicit per-method acquirer bindings (see example below). If omitted, the merchant is auto-bound to your PBO's default acquirer profile(s)

To accept payments, a merchant needs at least one acquirer profile bound — either explicitly via supportedPaymentMethods (recommended, shown below) or by leaving it out and relying on your PBO's default acquirer profile(s).

Request Body Example

Example Request - Create Merchant
{
  "mchName": "Coffee Shop",
  "providerReference": "MID180045210008",
  "contactName": "John Smith",
  "contactEmail": "[email protected]",
  "contactPhone": "555-1234",
  "contactAddress": "123 Main St, Springfield",
  "mcc": "5811",
  "timeZone": "Asia/Singapore",
  "country": "SG",
  "extParams": {},
  "supportedPaymentMethods": [
    { "paymentMethod": "VISA", "profileId": 316 },
    { "paymentMethod": "MASTERCARD", "profileId": 316 }
  ]
}

To bind every payment method a single profile supports in one go, use "paymentMethod": "ALL" instead of listing each one:

Example Request - Create Merchant (bind all methods on one profile)
{
  "mchName": "Coffee Shop",
  "contactEmail": "[email protected]",
  "contactName": "John Smith",
  "timeZone": "Asia/Singapore",
  "providerReference": "MID180045210008",
  "mcc": "5814",
  "supportedPaymentMethods": [
    { "paymentMethod": "ALL", "profileId": 316 }
  ]
}

Response

StatusMeaningDescriptionSchema
200OK (opens in a new tab)OKWrapper: Response<T>
Data: Merchant
—code: 10000, "providerReference already exists"providerReference is already used by another merchant under this PBO—

Example Response (200)

Example Response - Create Merchant
{
  "msg": "SUCCESS",
  "code": 0,
  "data": {
    "mchName": "Coffee Shop",
    "mchId": "M-87654321",
    "providerReference": "MID180045210008",
    "contactName": "John Smith",
    "contactEmail": "[email protected]",
    "state": 1,
    "timeZone": "Asia/Singapore",
    "country": "SG",
    "supportedPaymentMethods": [
      {
        "paymentMethod": "VISA",
        "profileId": 316
      },
      {
        "paymentMethod": "MASTERCARD",
        "profileId": 316
      }
    ]
  }
}

Example Response (Failure)

Example Response - Create Merchant (providerReference conflict)
{
  "msg": "providerReference already exists",
  "code": 10000
}

Get Merchant Details

Retrieves detailed information about a specific merchant.

Get Merchant Details
GET /api/v2/mchInfo/{mchId}
Authorization: Bearer {jwt}

Parameters

NameInTypeRequiredDescription
mchIdpathstringtrueMerchant ID

Response

StatusMeaningDescriptionSchema
200OK (opens in a new tab)OKWrapper: Response<T>
Data: Merchant
—code: 10000, "not exist"mchId not found under this PBO—

Example Response (200)

Same shape as Create Merchant's response — see the example above.

Update Merchant

Updates an existing merchant with the provided information.

Update Merchant
PUT /api/v2/mchInfo/{mchId}
Content-Type: application/json
Authorization: Bearer {jwt}

Parameters

Same body as Create Merchant — full schema: MerchantRequest. Commonly updated fields:

NameTypeRequiredDescription
mchNameStringNoMerchant display name
contactNameStringNoMerchant contact person's name
contactEmailStringNoMerchant contact email
contactPhoneStringNoMerchant contact phone
mccStringNoMerchant category code (ISO 18245)
regionStringNoRegion code for this merchant
timeZoneStringNoMerchant's local timezone (IANA tz name)
countryStringNoMerchant's country (ISO 3166-1 alpha-2 code), e.g. SG
transTypeStringNoRestricts this merchant to a specific transaction type, if set
stateintNo1 = active (can process payments), 0 = inactive
mdrStringNoMerchant discount rate override for this merchant, if your PBO supports per-merchant MDR
merchantTypeStringNoMerchant type classification used for reporting/segmentation

Response

StatusMeaningDescriptionSchema
200OK (opens in a new tab)OKWrapper: Response<T>
Data: Merchant, reflecting the fields as updated
—code: 10000, "not exist"mchId not found under this PBO—

Example Response (200)

Same shape as Create Merchant's response — see the example above.

Delete Merchant

Delete an existing merchant with the provided information. If the merchant has activation code or payment config, it cannot be deleted.

Delete Merchant
DELETE /api/v2/mchInfo/{mchId}
Content-Type: application/json
Authorization: Bearer {jwt}

Parameters

NameInTypeRequiredDescription
mchIdpathstringtrueMerchant ID

Response

StatusMeaningDescriptionSchema
200OK (opens in a new tab)OKWrapper: Response<T>
Data: the deleted mchId (string)

Example Response (200)

Example Response - Delete Merchant
{
  "msg": "SUCCESS",
  "code": 0,
  "data": "M-12345678"
}

List Payment Config

Retrieves the payment method configuration currently bound to a merchant.

List Payment Config
GET /api/v2/mchInfo/payment/{mchId}
Authorization: Bearer {jwt}

Parameters

NameInTypeRequiredDescription
mchIdpathstringtrueMerchant ID

Response

StatusMeaningDescriptionSchema
200OK (opens in a new tab)OKWrapper: Response<T>
Data: Array<PaymentMethodBinding>, one entry per bound payment method

Example Response (200)

Example Response - List Payment Config
{
  "msg": "SUCCESS",
  "code": 0,
  "data": [
    {
      "mchId": "M-12345678",
      "paymentMethod": "VISA",
      "profileId": 316,
      "profileName": "Visa & Mastercard - US"
    },
    {
      "mchId": "M-12345678",
      "paymentMethod": "MASTERCARD",
      "profileId": 316,
      "profileName": "Visa & Mastercard - US"
    }
  ]
}

Set Payment Config

Binds (or rebinds) a payment method on this merchant to an acquirer profile. Since the whole merchant is bound to a single acquirer profile per payment method on this single-acquirer API, setting a payment method that's already bound overwrites the previous binding.

Set Payment Config
POST /api/v2/mchInfo/payment/{mchId}
Content-Type: application/json
Authorization: Bearer {jwt}

Parameters

NameInTypeRequiredDescription
mchIdpathstringtrueMerchant ID
paymentMethodbodystringtruePayment method name, e.g. VISA, MASTERCARD, or ALL to bind every method the profile supports
profileIdbodynumbertrueAcquirer profile ID to bind this payment method to, from Get Acquirer Profiles

Request Body Example

Example Request - Set Payment Config
{
  "paymentMethod": "VISA",
  "profileId": 316
}

Response

StatusMeaningDescriptionSchema
200OK (opens in a new tab)OKWrapper: Response<T>
—code: 10000, "profile not exist"profileId not found under this PBO—

Example Response (200)

Example Response - Set Payment Config
{
  "msg": "SUCCESS",
  "code": 0
}

Delete Payment Config

⚠️

Breaking change in the current API. The current /api/openapi/v1/mchInfo Delete Payment Config endpoint does not use this path-variable form. It takes acquirerProfileId and currency as query parameters instead of a paymentMethod path variable, and the semantics change too: instead of unbinding a single payment method, it drops the entire (acquirerProfileId, currency) binding — including every payment method configured under it. Update any integration accordingly when you migrate.

Delete Payment Config
DELETE /api/v2/mchInfo/payment/{mchId}/{paymentMethod}
Content-Type: application/json
Authorization: Bearer {jwt}

Parameters

NameInTypeRequiredDescription
mchIdpathstringtrueMerchant ID
paymentMethodpathstringtruePayment method identifier to unbind, e.g. VISA

Response

StatusMeaningDescriptionSchema
200OK (opens in a new tab)OK

Example Response (200)

Example Response - Delete Payment Config
{
  "msg": "SUCCESS",
  "code": 0
}