Prerequisites
- A WhiteBIT account with completed KYC (register)
- An API key with Trade permission and sub-account management capability (create key)
- Funds in Main balance (sub-account transfers draw from Main balance)
- HMAC-SHA512 signing configured (authentication guide)
curlandjqinstalled (for command-line examples)
1
Create a sub-account
Create a new sub-account with an alias and permissions.For TypeScript and Python SDK examples, see SDKs.Required fields: Save the
- cURL
- Python
alias (display name), permissions (object with spotEnabled and collateralEnabled). When shareKyc is false or omitted, email is also required.Expected response:id value for subsequent steps.2
Transfer funds to the sub-account
Move assets from the main account to the newly created sub-account.Required fields:
- cURL
- Python
id (sub-account UUID), direction (main_to_sub or sub_to_main), ticker, amount. Transfers are instant and fee-free.Expected response:3
Create an API key for the sub-account
Generate a dedicated API key for the sub-account to enable independent trading.Required fields:
- cURL
- Python
subAccountId (UUID), type (1 = info and trading, 2 = info, trading, deposits, withdrawals). Optional: title (custom name for the key).To receive crypto deposits directly, the sub-account needs a
type: 2 key (deposits and
withdrawals) and the account must have deposits enabled. Crypto deposits are disabled by
default — to enable them for the account and its sub-accounts, contact your assigned Account
Manager or email institutional@whitebit.com. Once enabled, generate the address via the
standard deposit-address endpoint
signed with the sub-account’s own key.4
Check sub-account balances
Verify that the transferred funds appear in the sub-account balance.Expected response:The response keys ticker symbols to an array of balance objects.
- cURL
- Python
main, spot, and collateral show available funds in each balance type for the sub-account.POST /api/v4/sub-account/api-key/ip-address/create with the whitelist.
Sub-account withdrawal approval
When the sub-account withdrawal feature is enabled, a withdrawal created with a sub-account key does not settle immediately. The transaction entersunconfirmed_by_main_account status and waits for main account approval, giving the main account a control point over every sub-account withdrawal.
The sub-account withdrawal endpoints are not available by default. To request access, contact
institutional@whitebit.com. Without main account confirmation, an unconfirmed withdrawal
expires after a retention period.
1
Initiate the withdrawal from the sub-account
The sub-account creates the withdrawal with the sub-account’s own
type: 2 API key (deposits
and withdrawals) on the standard Create withdraw request
endpoint (POST /api/v4/main-account/withdraw). No main-account-side initiation endpoint
exists — the request is signed with the sub-account key. The resulting transaction enters
unconfirmed_by_main_account status.2
List pending withdrawals from the main account
Using a main-account key, list the sub-account withdrawals awaiting approval. Capture the
Each item includes the transaction
id of each transaction to confirm.- cURL
- Python
id, subAccountId, currency, amount, and createdAt.3
Confirm the withdrawal from the main account
Approve a listed withdrawal by external Confirmation is the only main-account action on an unconfirmed withdrawal — no reject endpoint
exists, and an unconfirmed withdrawal that is never confirmed expires automatically.
id. A successful call returns an empty object and
releases the withdrawal for processing.- cURL
- Python
What’s Next
Sub-Accounts Overview
Integration patterns for fund managers, brokers, and prop trading firms.
Broker Guide
Fee share model up to 50%, sub-account-per-customer onboarding, KYC URL generation, and per-customer API keys with up to 50 IP addresses.