Withdraw Submit
Endpoint
POST /v1/api/withdrawRequest
Parameters
| Key | Required | Type | Example | Description |
|---|---|---|---|---|
mcode | Yes | string | M10086 | Merchant ID |
tno | Yes | string | W202608020001 | Merchant order number |
amt | Yes | string | 500.26 | Withdraw amount |
ntf_url | Yes | string | https://example.com/notify | Async callback URL |
bank_code | Yes | string | PH_GCASH | Bank or wallet code, recommended to fetch from the banks API |
bank_addr | No | string | Manila | Bank branch address |
acct_number | Yes | string | 09959350888 | Receiver account or card number |
acct_name | Yes | string | BAOJUNTANG | Receiver name |
chnl | Yes | string | PHP_WD | Withdraw channel code |
extra | No | string | remark=demo | Return as-is |
data | No | object | {} | Extension data |
ts | Yes | string | 1785138705251 | Request milli timestamp len 13 |
sign | Yes | string | c380be... | Signature value |
Example
{
"mcode": "M10086",
"tno": "W202608020001",
"amt": "500.26",
"cur": "PHP",
"ntf_url": "https://example.com/notify",
"bank_code": "PH_GCASH",
"bank_addr": "Manila",
"acct_number": "09959350888",
"acct_name": "BAOJUNTANG",
"chnl": "PHP_WD",
"extra": "",
"ts": "1785138705251",
"sign": "9a9cba23f9075ff01b2ed2050f52f42d"
}About the data field
For some countries that may require KYC, additional information will be supplemented on top of the existing withdrawal account/bank. For example:
"data":{
"first_name":"FIRSTNAME",
"last_name":"LASTNAME",
"phone":"phonenumber",
"email":"email@email",
"user_id":"u123"
}Regarding the user_id field above: max length is 64 characters, and it must be consistent with the user_id field used for deposits. If the user_id and corresponding name/information used for deposits do not match the withdrawal information, the withdrawal/payout will be locked.
Response
Parameters
| Field | Key | Type | Description |
|---|---|---|---|
| Status code | code | number | Response code, 0 means success |
| Response data | data | object | Response payload object |
| ─ Merchant code | data.mcode | string | Merchant ID |
| ─ Platform order no. | data.sn | string | Platform order number |
| ─ Merchant order no. | data.tno | string | Merchant order number |
| ─ Amount | data.amt | string | Order amount |
| ─ Fee | data.fee | string | Fee amount |
| ─ Currency | data.cur | string | Currency code |
| ─ Order status | data.sts | string | Order status |
| ─ Channel code | data.chnl | string | Channel code |
| ─ Create time | data.ctm | string | Create time |
| ─ Signature | data.sign | string | Response signature |
Example
{
"code": 0,
"data": {
"mcode": "M10086",
"sn": "W202608020001",
"tno": "W202608020001",
"amt": "500.26",
"fee": "2.00",
"cur": "PHP",
"sts": "submit",
"chnl": "PHP_WD",
"ctm": "2026-08-02T12:00:01+08:00",
"sign": "xxxx"
}
}Special Test Amounts for Withdraw Automation
When in the test group (before going live), submitting specific amounts automatically triggers different callback statuses. Any amount other than the ones listed below that meets the conditions will automatically result in a successful callback.
Test Scenario Description
| Scenario | Triggered Behavior |
|---|---|
| Error Test | Returns a system error immediately after submission (return error) |
| Callback Fail | Submission accepted successfully, but the async callback notification returns failure status WS_FAIL |
Test Amounts by Currency
| Currency Code | Symbol | Error Test | Callback Fail | Description |
|---|---|---|---|---|
| PHP | ₱ | 123 | 321 | Philippine Peso (default) |
| THB | ฿ | 123 | 321 | Thai Baht |
| INR | ₹ | 12300 | 32100 | Indian Rupee |
| BDT | ৳ | 12300 | 32100 | Bangladeshi Taka |
| PKR | ₨ | 12300 | 32100 | Pakistani Rupee |