Create withdraw request
The endpoint creates withdraw for the specified ticker.
The API does not cache the response.
Also, fiat currencies can’t be withdrawn without KYC verification.
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
API key authentication using signed requests
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.