Create withdraw request
Submit a cryptocurrency or fiat withdrawal request from a WhiteBIT account via the V4 API.
Withdrawal Scenarios Guide
The endpoint supports 8 different withdrawal scenarios. Each scenario requires different fields depending on the currency type, destination, and regulatory requirements. Use the example selector above to switch between scenarios.🔹 Cryptocurrency Withdrawals
Scenario 1: Simple Crypto Withdrawal
For standard cryptocurrencies like BTC, ETH, LTC, etc.- Required fields:
ticker,amount,address,uniqueId - Use when: Withdrawing to a standard blockchain address
Scenario 2: Multi-Network Crypto (USDT, USDC)
For cryptocurrencies existing on multiple blockchains.- Required fields: Same as above +
network - Networks: ERC20 (Ethereum), TRC20 (Tron), BEP20 (BSC), OMNI, etc.
- Use when: Withdrawing tokens existing on multiple chains
Scenario 3: Travel Rule Compliance (EEA Users)
Required for crypto withdrawals when the account is registered in the European Economic Area (EEA).- Required fields: Standard crypto fields +
travelRuleobject - Travel rule types:
individual- Personal withdrawals (requires first name / last name)entity- Business withdrawals (requires company name / address)
- Use when: The account is registered in EEA countries
🔹 Fiat Withdrawals (KYC Required)
Scenario 4: Basic Fiat Withdrawal
Standard fiat withdrawal via VISAMASTER provider.- Required fields:
ticker,amount,provider,uniqueId - Currencies: UAH, USD, EUR, etc.
- Use when: Standard fiat withdrawal within normal limits
Scenario 5: Fiat with Partial Enable
For withdrawals exceeding standard limits with “partially successful” status support.- Required fields: Same as basic +
partialEnable: true+address(encrypted card token) - Use when: Withdrawing larger amounts eligible for partial processing
- Important: The application must handle “Partially successful” withdrawal status
Scenario 6: IBAN Transfers (UAH_IBAN)
Bank transfer withdrawals to IBAN accounts.- Required fields: Standard fields +
beneficiaryobject with:firstName,lastName(max 40 symbols, latin letters)tin(Tax Identification Number, 10 digits)
- Use when: Withdrawing UAH to Ukrainian bank accounts via IBAN
Scenario 7: International Fiat (USD/EUR VISAMASTER)
Withdrawals with extended beneficiary information.- Required fields: Standard fields +
beneficiaryobject with:firstName,lastName,phone,email,birthDate(YYYY-MM-DD)
- Use when: Withdrawing USD or EUR via VISAMASTER_PAYCORE provider
- Currencies: USD_VISAMASTER, EUR_VISAMASTER
Amount and Fee Calculation
How it works:
Example request (/withdraw):
- Balance: 100 USDT
- Withdrawal fee: 2 USDT
- Request
amount: "100" - Result: 100 USDT deducted from balance, recipient receives 98 USDT
/withdraw-pay instead):
- Balance: 100 USDT
- Withdrawal fee: 2 USDT
- Request
amount: "98" - Result: 102 USDT deducted from balance, recipient receives 98 USDT
Common Pitfalls & Best Practices
⚠️ Unique ID Management
Best practice: Use a timestamp-based or UUID generator:- ✅ Good:
"24529041","withdrawal_1640995200_abc123" - ❌ Bad: Reusing
"12345"for multiple withdrawals
⚠️ Address Validation
Different currencies have different address formats:- Bitcoin: Starts with
1,3, orbc1(SegWit) - Ethereum/ERC20: Starts with
0x, 42 characters - Tron/TRC20: Starts with
T, 34 characters - Fiat: Card token or IBAN format
⚠️ Memo/Destination Tag
Some currencies require a memo (destination tag):- XLM (Stellar): Requires memo
- XRP (Ripple): Requires destination tag
- EOS: Requires memo
⚠️ Provider Selection (Fiat)
Fiat withdrawals require the correct provider:- Check available providers via Asset Status endpoint
- Common providers:
VISAMASTER,VISAMASTER_PAYCORE,UAH_IBAN - Provider availability depends on currency and region
Workflow: Complete Withdrawal Process
Step 1: Pre-Withdrawal Checks
Step 2: Create Withdrawal
[] (empty array)
Validation succeeded and the withdrawal process has started. The withdrawal is now queued for processing.
Step 3: Monitor Status
uniqueId to track the transaction.
Withdrawal status codes:
- Successful: 3, 7
- Canceled: 4, 9
- Pending: Other codes (see history endpoint for full list)
Network Selection Guide
For multi-network currencies (USDT, USDC, etc.), choosing the right network is critical:| Network | Speed | Fee | Use When |
|---|---|---|---|
| ERC20 (Ethereum) | Slow | High | Large amounts, highest security |
| TRC20 (Tron) | Fast | Very Low | Small/medium amounts, fastest option |
| BEP20 (BSC) | Fast | Low | Good balance of speed and cost |
| OMNI | Very Slow | High | Legacy, rarely used |
Error Handling
Common validation errors (400):
Missing required fields:Inner validation errors (422):
Error codes:1- Currency is not withdrawable2- Specified address is invalid3- Amount is too small4- Amount is too small for the payment system5- Not enough balance6- Amount is less than or equals fee7- Amount should be integer (zero precision currencies like NEO)8- Target withdraw amount without fee equals zero9- Address is unavailable (withdrawal to own address blocked)
Security Recommendations
Related Endpoints
- Create withdraw request with specific amount (fee not included) - Alternative endpoint where fee is added on top
- Get deposit/withdraw history - Monitor withdrawal status
- Get fees - Check current withdrawal fees
- Main balance - Check available balance before withdrawal
- Asset Status endpoint - Verify currency can be withdrawn and get network/provider info
Authorizations
The public WhiteBIT API key.
Base64-encoded JSON request body.
HMAC-SHA512 signature of the payload, hex-encoded. Computed as hex(HMAC-SHA512(payload, api_secret)).
Body
Currency's ticker. Example: BTC
⚠️ Currencies ticker must have "can_deposit" status equal to "true". Use Asset Status endpoint to know more about currency.
"ETH"
Target address (wallet address for cryptocurrencies, identifier/card token for fiat currencies)
"0x0964A6B8F794A4B8d61b62652dB27ddC9844FB4c"
Unique transaction identifier.
⚠️ Generate a new unique ID for each withdrawal request.
"24529041"
Request signature
"{{request}}"
Unique request identifier
"{{nonce}}"
Fiat currency provider. Example: VISAMASTER
⚠️ Required for fiat currencies. Currency provider should be taken from Asset Status endpoint response.
"VISAMASTER"
Cryptocurrency network. Available for multi network currencies. Example: OMNI
⚠️ Currency network should be taken from Asset Status endpoint response. Default for USDT is ERC20
"ERC20"
Description of withdrawal destination
⚠️ Required if currency is crypto and withdrawal from whitebit-tr.com
"Payment description"
Response
Validation succeeded and withdraw creation process is started. Check the request status by uniqueId in deposit/withdraw history.