Batch Withdraw Apply
Request Method and Path
POST /payout/v1/batch/apply
| Field Name | Type | Required | Description |
|---|
| content-type | string | Yes | application/json |
| x-api-key | string | Yes | Provided by Paydify, same as appId |
| x-api-timestamp | string | Yes | Timestamp in milliseconds |
| x-api-signature | string | Yes | Signature, see Signature Algorithm |
Request Body
| Field Name | Type | Required | Description |
|---|
| mchBatchId | string | Yes | Merchant batch ID, unique for idempotent control |
| batchName | string | Yes | Batch name for merchant portal display and reconciliation |
| currency | string | Yes | Batch currency, all details must use the same currency. Supports: USDT, USDC |
| totalAmount | string | Yes | Total amount, must equal the sum of all detail transferAmount values |
| totalCount | string | Yes | Total count, must equal the actual length of transferDetailList |
| transferDetailList | array | Yes | Detail list |
| merchantId | string | No | Merchant ID of the batch owner (sub-merchant). Required when calling with a partner credential on behalf of a sub-merchant; can be omitted with a merchant-owned credential (defaults to the credential owner). Max 64 characters |
| merchantAppId | string | No | App ID under the owner merchant, used for disambiguation when the owner merchant has multiple authorized apps. Required if the credential covers multiple apps of the owner merchant; can be omitted when only one app is authorized (resolved automatically). Max 64 characters |
transferDetailList Details
| Field Name | Type | Required | Description |
|---|
| mchDetailId | string | Yes | Merchant detail ID, unique within the batch for detail-level idempotent control |
| transferAmount | decimal | Yes | Single transfer amount |
| network | string | Yes | Chain network. Supports: BSC/SOL/ETH/TRON/BASE |
| address | string | Yes | Recipient address, must conform to the corresponding network address format |
| remark | string | No | Remark information |
| Field Name | Type | Required | Description |
|---|
| x-api-key | string | Yes | Provided by Paydify, same as appId |
| x-api-timestamp | string | Yes | Timestamp in milliseconds |
| x-api-signature | string | Yes | Signature, see Signature Algorithm |
Response
| Field Name | Type | Description |
|---|
| code | string | Response code, SYS_SUCCESS indicates success |
| message | string | Response message |
| messageDetail | string | Detailed response message |
| success | boolean | Whether the request was successful |
| data.batchId | string | Paydify batch ID |
| data.mchBatchId | string | Merchant batch ID |
| data.status | string | Batch status, initial value CREATED |
Example
# Request
{
"mchBatchId": "MCH_BATCH_1756287002",
"batchName": "Monthly settlement batch",
"currency": "USDT",
"totalAmount": "300.00",
"totalCount": "2",
"transferDetailList": [
{
"mchDetailId": "D_001",
"transferAmount": "100.00",
"network": "TRON",
"address": "TXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"remark": "user 001"
},
{
"mchDetailId": "D_002",
"transferAmount": "200.00",
"network": "TRON",
"address": "TYyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
"remark": "user 002"
}
]
}
# Successful response
{
"code": "SYS_SUCCESS",
"message": null,
"messageDetail": null,
"data": {
"batchId": "B1167515578018041857",
"mchBatchId": "MCH_BATCH_1756287002",
"status": "CREATED"
},
"success": true
}
# Failed response
{
"code": "SYS_ERROR",
"message": "System error",
"messageDetail": "Error details",
"data": null,
"success": false
}