Payout API
Create Payout Order
Creates a new payout order.
- Method:
POST - Path:
/api/v1/mch/wdl-orders - The
POSTbody must beJSON
Notes
amountmust be> 0trans_idmust be uniquechannelmust point to an enabled payout channel- For
VND,account_nomust be alphanumeric and cannot contain letters only - The query endpoint returns the merchant-facing order result
Request Parameters
| Parameter | Type | Vietnam | Thailand | Philippines | Description |
|---|---|---|---|---|---|
mch_id | integer | ✅ | ✅ | ✅ | Merchant ID |
trans_id | string | ✅ | ✅ | ✅ | Merchant order ID, must be unique |
channel | string | ✅ | ✅ | ✅ | Channel code. See System Channel Codes |
amount | string | ✅ | ✅ | ✅ | Must be > 0. Send it as a string, for example "100.00" |
currency | string | ✅ | ✅ | ✅ | Currency code. Uppercase is recommended |
account_no | string | ✅ | ✅ | ✅ | Beneficiary account number, max length 34 |
account_name | string | ✅ | ✅ | ✅ | Beneficiary name |
account_org | string | ✅ | ✅ | ⭕️ | Beneficiary institution name |
account_org_code | string | ✅ | ✅ | ⭕️ | Institution code; required for Vietnam and Thailand |
account_sub_org | string | ⭕️ | ⭕️ | ⭕️ | Branch or extra institution info |
account_email | string | ⭕️ | ⭕️ | ⭕️ | Must be a valid email if provided |
account_phone | string | ⭕️ | ⭕️ | ⭕️ | Phone number or contact number |
remarks | string | ⭕️ | ⭕️ | ⭕️ | Merchant note |
callback_url | string | ✅ | ✅ | ✅ | Result callback URL, must be a valid URL |
nonce | string | ✅ | ✅ | ✅ | Random token, length: 6-24 |
timestamp | integer | ✅ | ✅ | ✅ | Unix timestamp |
sign | string | ✅ | ✅ | ✅ | See Signature Algorithm |
Note
For Vietnam, account_no must be alphanumeric and cannot contain letters only.
Response Fields
On success, the response usually returns:
| Field | Type | Description |
|---|---|---|
id | string | Platform order ID |
trans_id | string | Merchant order ID |
mch_id | integer | Merchant ID |
channel | string | Channel code |
currency | string | Currency |
order_amount | string | Order amount |
account_no | string | Beneficiary account |
account_name | string | Beneficiary name |
account_org | string | Beneficiary institution |
callback_url | string | Callback URL |
status | number | 20 when order request accepted |
created_at | string | Creation time |
Example
json
{
"code": 200,
"payload": {
"id": "P202605040001",
"trans_id": "WDL-10001",
"mch_id": 10001,
"channel": "bank",
"currency": "VND",
"order_amount": "100.00",
"account_no": "2333667799212341",
"account_name": "NGUYEN XUAN HUNG",
"account_org": "PVCOMOBANK",
"callback_url": "https://merchant.example.com/callback/payout",
"status": 20,
"created_at": "2026-05-04 10:10:00"
}
}Query Payout Order
- Method:
GET - Path:
/api/v1/mch/wdl-orders
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | No | Platform order ID. Use either id or trans_id |
trans_id | string | No | Merchant order ID. Use either id or trans_id |
mch_id | integer | Yes | Merchant ID |
nonce | string | Yes | Random token, length: 6-24 |
timestamp | integer | Yes | UNIX timestamp |
sign | string | Yes | See Signature Algorithm |
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Platform order ID |
trans_id | string | Merchant order ID |
order_amount | string | Order amount |
pay_amount | string | null | Actual payout amount |
ratio | number | Merchant fee ratio |
currency | string | Currency |
account_no | string | Beneficiary account |
account_name | string | Beneficiary name |
account_org | string | Beneficiary institution |
account_sub_org | string | null | Branch information |
status | number | Order status |
created_at | string | Creation time |
payed_at | string | null | Completion time |
callback_at | string | null | Callback completion time |
canceled_at | string | null | Cancellation time |
attachments | string[] | Attachment URLs |
Status Mapping
The query endpoint returns:
| Status | Meaning |
|---|---|
20 | Accepted |
21 | Paying |
50 | Canceled |
60 | Success |
Note
Use callbacks as the authoritative result channel.
Example
json
{
"code": 200,
"payload": {
"id": "P202605040001",
"trans_id": "WDL-10001",
"order_amount": "100.00",
"pay_amount": "100.00",
"ratio": 1.5,
"currency": "VND",
"account_no": "2333667799212341",
"account_name": "NGUYEN XUAN HUNG",
"account_org": "PVCOMOBANK",
"account_sub_org": null,
"status": 60,
"created_at": "2026-05-04 10:10:00",
"payed_at": "2026-05-04 10:15:00",
"callback_at": "2026-05-04 10:15:03",
"canceled_at": null,
"attachments": []
}
}The final result is pushed by callback. See Payout Callback.