Skip to content

Payout API

Create Payout Order

Creates a new payout order.

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

Notes

  • amount must be > 0
  • trans_id must be unique
  • channel must point to an enabled payout channel
  • For VND, account_no must be alphanumeric and cannot contain letters only
  • The query endpoint returns the merchant-facing order result

Request Parameters

ParameterTypeVietnamThailandPhilippinesDescription
mch_idintegerMerchant ID
trans_idstringMerchant order ID, must be unique
channelstringChannel code. See System Channel Codes
amountstringMust be > 0. Send it as a string, for example "100.00"
currencystringCurrency code. Uppercase is recommended
account_nostringBeneficiary account number, max length 34
account_namestringBeneficiary name
account_orgstring⭕️Beneficiary institution name
account_org_codestring⭕️Institution code; required for Vietnam and Thailand
account_sub_orgstring⭕️⭕️⭕️Branch or extra institution info
account_emailstring⭕️⭕️⭕️Must be a valid email if provided
account_phonestring⭕️⭕️⭕️Phone number or contact number
remarksstring⭕️⭕️⭕️Merchant note
callback_urlstringResult callback URL, must be a valid URL
noncestringRandom token, length: 6-24
timestampintegerUnix timestamp
signstringSee Signature Algorithm

Note

For Vietnam, account_no must be alphanumeric and cannot contain letters only.

Response Fields

On success, the response usually returns:

FieldTypeDescription
idstringPlatform order ID
trans_idstringMerchant order ID
mch_idintegerMerchant ID
channelstringChannel code
currencystringCurrency
order_amountstringOrder amount
account_nostringBeneficiary account
account_namestringBeneficiary name
account_orgstringBeneficiary institution
callback_urlstringCallback URL
statusnumber20 when order request accepted
created_atstringCreation 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

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
pay_amountstring | nullActual payout amount
rationumberMerchant fee ratio
currencystringCurrency
account_nostringBeneficiary account
account_namestringBeneficiary name
account_orgstringBeneficiary institution
account_sub_orgstring | nullBranch information
statusnumberOrder status
created_atstringCreation time
payed_atstring | nullCompletion time
callback_atstring | nullCallback completion time
canceled_atstring | nullCancellation time
attachmentsstring[]Attachment URLs

Status Mapping

The query endpoint returns:

StatusMeaning
20Accepted
21Paying
50Canceled
60Success

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.

Released under the MIT License.