Transfers
Deposit, withdraw, and transfer funds
Deposit (Vault)
Deposits are made on-chain through the ZDEX Vault smart contract on BSC (BEP-20).
Step 1: Get Deposit Signature
POST /v1/deposit/signature
Authorization: Bearer <token>
Content-Type: application/json
{
"amount": "100",
"subAccountId": "34696153"
}Response:
{
"ok": true,
"transferId": "clx...",
"deposit": {
"amount": "100000000000000000000",
"deadline": 1711760400,
"nonce": "5",
"signature": "0xabc123...",
"tokenAddress": "0x55d398326f99059fF775485246999027B3197955",
"vaultAddress": "0x583d5DB7F3f5058f86A77c69E7C255E96aE0156E",
"chainId": 56
}
}Step 2: Execute On-Chain Transaction
Use the returned signature to call the Vault contract's deposit function from your wallet. The frontend handles this automatically.
Step 3: Confirm Deposit
POST /v1/deposit/confirm
Authorization: Bearer <token>
Content-Type: application/json
{
"transferId": "clx...",
"txHash": "0xabc123..."
}Withdraw
Withdraw USDT to your connected wallet address on BSC:
POST /v1/withdraw
Authorization: Bearer <token>
Content-Type: application/json
{
"amount": "50"
}Response:
{
"ok": true,
"transfer": {
"id": "clx...",
"amount": "50",
"status": "SUBMITTED"
}
}Check Withdrawal Status
GET /v1/transfers/:id
Authorization: Bearer <token>Statuses:
| Status | Description |
|---|---|
SUBMITTED | Withdrawal request received |
PROCESSING | Being processed by the exchange |
CONFIRMED | Successfully sent to your wallet |
FAILED | Withdrawal failed |
CANCELLED | Withdrawal was cancelled |
Internal Transfer (P2P)
Transfer USDT to another ZDEX user:
POST /v1/transfers/internal
Authorization: Bearer <token>
Content-Type: application/json
{
"recipientAddress": "0xRecipientWallet...",
"amount": "25",
"note": "Payment for services"
}Limits:
- Minimum transfer: 1 USDT
- Cannot transfer to yourself
Response:
{
"ok": true,
"transfer": {
"id": "clx...",
"amount": "25",
"status": "SUCCESS"
}
}