Skip to content

Collect API

Create Collect Order

Creates a new collect order.

  • Method: POST
  • Path: /api/v1/mch/pmt-orders
  • The POST body must be JSON

Notes

  • currency currently allows PHP, THB, VND, and USDT, in either case
  • amount is validated in the range 0 ~ 50000000000
  • trans_id must be globally unique
  • If channel starts with usdt, the system forces currency to USDT
  • If merchant-side collect rate limiting is enabled, the API may return 429

Request Parameters

ParameterTypeRequiredDescription
mch_idintegerYesMerchant ID
trans_idstringYesMerchant order ID, must be unique
currencystringYesCurrency code. See System Currency Codes
amountstringYesOrder amount. Send it as a string, for example \"100.00\"
channelstringYesChannel code. See System Channel Codes
callback_urlstringYesCallback URL for collect result. Must be a valid URL
payer_account_nostringNoPayer account. Used by some real-name or upstream channel flows
payer_account_namestringNoPayer name
payer_account_orgstringNoPayer institution
modestringNoChannel-specific extension parameter
return_urlstringNoReturn URL after cashier completion
uidstringNoBusiness user ID used by some channels or risk rules
remarksstringNoMerchant note saved with the order
noncestringYesRandom token, length: 6-24
timestampintegerYesUNIX timestamp
signstringYesSee Signature Algorithm

Note

Some extension fields are only used in specific business scenarios. If you are unsure whether they are required, confirm with the platform integration contact first.

Response Fields

On success, the response usually contains the following fields:

FieldTypeDescription
idstringPlatform order ID
trans_idstringMerchant order ID
order_amountstringOrder amount
rationumberMerchant fee ratio
currencystringCurrency
codestringChannel code
statusnumberUsually 20 on creation
created_atstringCreation time
urlstringCashier URL
cashier_typenumberCashier mode
metaobject | nullExtra receiving data, depending on the channel

cashier_type

ValueDescription
0Only url is returned
1Only meta is returned
9Both url and meta are returned

Example

json
{
  "code": 200,
  "payload": {
    "id": "C202605040001",
    "trans_id": "ORDER-10001",
    "order_amount": "100.00",
    "ratio": 1.2,
    "currency": "VND",
    "code": "bank",
    "status": 20,
    "created_at": "2026-05-04 10:05:00",
    "url": "https://cashier.example.com/cashier/vn/C202605040001",
    "cashier_type": 9,
    "meta": {
      "account_no": "8531112111",
      "account_name": "CHEN MINH HIEU",
      "account_org": "MSB",
      "account_org_code": "970426",
      "remarks": "PAY12345",
      "qr_url": "data:image/png;base64,..."
    }
  }
}

Query Collect Order

  • Method: GET
  • Path: /api/v1/mch/pmt-orders

Request Parameters

ParameterTypeRequiredDescription
idstringNoPlatform order ID. Use either id or trans_id
trans_idstringNoMerchant order ID. Use either id or trans_id
mch_idintegerYesMerchant ID
noncestringYesRandom token, length: 6-24
timestampintegerYesUNIX timestamp
signstringYesSee Signature Algorithm

Response Fields

FieldTypeDescription
idstringPlatform order ID
trans_idstringMerchant order ID
order_amountstringOrder amount
payed_amountstringActual paid amount
rationumberMerchant fee ratio
currencystringCurrency
channelstringChannel code. Note that the query response uses channel, not code
statusnumberOrder status
created_atstringCreation time
payed_atstring | nullPayment time
callback_atstring | nullCallback completion time
canceled_atstring | nullCancel time

Status Values

StatusMeaning
1Order creation failed
10Vendor error
20Waiting for payment
30Abnormal
40Callback timeout
41Callback abnormal
42Amount mismatch
50Canceled
60Completed

Example

json
{
  "code": 200,
  "payload": {
    "id": "C202605040001",
    "trans_id": "ORDER-10001",
    "order_amount": "100.00",
    "payed_amount": "100.00",
    "ratio": 1.2,
    "currency": "VND",
    "channel": "bank",
    "status": 60,
    "created_at": "2026-05-04 10:05:00",
    "payed_at": "2026-05-04 10:06:10",
    "callback_at": "2026-05-04 10:06:12",
    "canceled_at": null
  }
}

The payment result is pushed by callback. See Collect Callback.

Released under the MIT License.