Direct Deposit
Tip
- All requests use
POST
- Content type is
application/json
Brief Description
Use this API to create a Thailand deposit order and obtain the payment instructions required for the payer to complete the transfer.
Payment Methods
| ChannelCode |
wayCode |
Description |
| QR |
QR |
PromptPay QR code payment |
| BANK_TRANSFER |
BANK_TRANSFER |
Bank transfer (currently not supported) |
Request URL
Request Method
- Method: POST
- Content-Type: application/json
| Header |
Required |
Type |
Description |
| merchantNo |
Yes |
String |
Merchant number |
Body
| Parameter |
Required |
Type |
Description |
| sign |
Yes |
String |
The sign field is generated by sorting all fields except sign in alphabetical order and concatenating them as key1=value1key2=value2. Use app secret as salt for MD5 encryption. The final sign must be lowercase. |
| timestamp |
Yes |
String |
Timestamp (for example 1715941383720) |
| tradeNo |
Yes |
String |
Unique transaction number (recommended format: yyyymmddhhmmss + random number) |
| amount |
Yes |
String |
Transaction amount (supports up to two decimal places, unit: THB) |
| name |
Yes |
String |
Payer's full name |
| mobile |
Yes |
String |
Payer's mobile number. Must be a 9-digit number starting with 9. |
| email |
Yes |
String |
Payer's email address |
| channelCode |
Yes |
String |
Payment method. Currently supported: QR |
| wayCode |
Yes |
String |
Payment route code. Currently supported: QR |
| bankNumber |
No |
String |
Bank account number used for the transaction |
| bankCode |
No |
String |
Bank code. Refer to the "Bank List" section |
| notifyUrl |
Yes |
String |
Asynchronous callback URL |
| remark |
No |
String |
Remarks (this field will be returned as-is) |
Request Body Example
{
"sign": "a8f5f167f44f4964e6c998dee827110c",
"timestamp": "1719876543210",
"tradeNo": "VX20260331000125",
"amount": "300.00",
"name": "Somchai Prasert",
"mobile": "912345678",
"email": "somchai.prasert@example.com",
"channelCode": "QR",
"wayCode": "QR",
"notifyUrl": "https://merchant-api.com/vexora/payment/notify",
"remark": "order_vx_000125"
}
Response
| Parameter |
Required |
Type |
Description |
| msg |
Yes |
String |
Request result (success only indicates successful request, not for merchant logic judgment) |
| code |
Yes |
String |
Request response code (0000 indicates successful request, not for merchant logic judgment). For specific error codes, refer to the business error code enumeration |
| timestamp |
Yes |
String |
Transaction time |
| success |
Yes |
Boolean |
Transaction result |
| data |
Yes |
Object |
Response object |
| data.tradeNo |
Yes |
String |
Merchant transaction number |
| data.platFormTradeNo |
Yes |
String |
Unique platform transaction number |
| data.status |
Yes |
String |
Transaction result status. Merchants should continue follow-up processing based on this value. |
| data.message |
Yes |
String |
Error description |
| data.remark |
Yes |
String |
Returned content of the request (as is) |
| data.qrType |
No |
String |
QR code type. 1: raw QR string, 2: QR image in Base64 |
| data.paymentInfo |
Yes |
String |
Payment information. Returns QR payment details when channelCode is QR |
| data.bank |
No |
String |
Bank information. Returned when channelCode is BANK_TRANSFER |
| data.accountNumber |
No |
String |
Receiving bank account number. Returned when channelCode is BANK_TRANSFER |
Successful Response Example
{
"msg": "success",
"code": "0000",
"timestamp": 1728609277476,
"success": true,
"data": {
"tradeNo": "VX20260331000125",
"platFormTradeNo": "th7o1itir0fypid9",
"status": "0015",
"message": "Paying",
"remark": "order_vx_000125",
"qrType": "1",
"paymentInfo": "00020101021230680016A000000677010112011501055555555555802TH53037645406300.005802TH5915SOMCHAI PRASERT6007BANGKOK62100506VX01256304ABCD"
}
}