Deposits & Withdrawals
Deposits and Withdrawals
This guide covers the complete workflow for depositing and withdrawing funds.
Overview
The platform supports:
- Crypto deposits/withdrawals: On-chain transactions via whitelisted addresses
- Fiat deposits/withdrawals: Bank transfers
Prerequisites
- Authenticated session (JWT or API key)
CanDepositpermission (for deposits)CanWithdrawpermission (for withdrawals)- Verified Client Account
Part 1: Whitelisted External Addresses
Before making crypto withdrawals, you must whitelist destination addresses.
Step 1: Create Whitelisted Address
Endpoint: POST /api/rest/v1/investors/addresses/external
Request
Request Fields
Response (200 OK)
Step 2: Resend Confirmation Code (if needed)
Endpoint: POST /api/rest/v1/investors/addresses/external/init
Step 3: Confirm Address Whitelisting
After receiving the confirmation code via email, confirm with 2FA.
Endpoint: POST /api/rest/v1/investors/addresses/external/confirm
Request Fields
Step 4: Verify Address (for some addresses)
Some addresses require additional verification.
Endpoint: POST /api/rest/v1/investors/addresses/external/verify
Response (200 OK)
Step 5: List Whitelisted Addresses
Endpoint: GET /api/rest/v1/investors/addresses/external
Query Parameters
This endpoint supports standard pagination, sorting, and filtering.
Response (200 OK)
Step 6: Get Specific Address
Endpoint: GET /api/rest/v1/investors/addresses/external/{id}
Step 7: Delete Whitelisted Address
Endpoint: DELETE /api/rest/v1/investors/addresses/external/{id}
Part 2: Bank Accounts
Step 1: List Bank Accounts
Endpoint: GET /api/rest/v1/bank-accounts/mine
Response (200 OK)
Bank Account Fields
Step 2: Create Bank Account
Endpoint: POST /api/rest/v1/bank-accounts/mine
Step 3: Delete Bank Account
Endpoint: DELETE /api/rest/v1/bank-accounts/mine/{id}
Part 3: Deposits
Step 1: Create Deposit Declaration
Declare an incoming deposit (required for tracking).
Endpoint: POST /api/rest/v1/deposits
Request (Crypto Deposit)
Request (Fiat Deposit)
Request Fields
Source Types
Response (200 OK)
Step 2: List Deposits
Endpoint: GET /api/rest/v1/deposits/by-sub-account/{subAccountId}
Query Parameters
This endpoint supports standard pagination, sorting, and filtering.
Supported filters: instrument_id, status
Response (200 OK)
Deposit Fields
Deposit Status Values
Step 3: Get Specific Deposit
Endpoint: GET /api/rest/v1/deposits/by-sub-account/{subAccountId}/{id}
Step 4: Cancel Deposit
Cancel a pending deposit declaration.
Endpoint: POST /api/rest/v1/deposits/by-sub-account/{subAccountId}/{id}/cancel
Part 4: Withdrawals
Step 1: Create Withdrawal
Endpoint: POST /api/rest/v1/withdrawals
Request (Crypto Withdrawal)
Request (Fiat Withdrawal)
Request Fields
Response (200 OK)
Step 2: Initialize Withdrawal Confirmation
Request a confirmation code via email.
Endpoint: POST /api/rest/v1/withdrawals/init
Step 3: Confirm Withdrawal
Confirm with email code and 2FA.
Endpoint: POST /api/rest/v1/withdrawals/confirm
Request Fields
Step 4: List Withdrawals
Endpoint: GET /api/rest/v1/withdrawals/by-sub-account/{subAccountId}
Query Parameters
This endpoint supports standard pagination, sorting, and filtering.
Supported filters: instrument_id, status
Response (200 OK)
Withdrawal Fields
Withdrawal Status Values
Step 5: Get Specific Withdrawal
Endpoint: GET /api/rest/v1/withdrawals/by-sub-account/{subAccountId}/{id}
Step 6: Cancel Unconfirmed Withdrawal
Cancel a withdrawal before confirmation.
Endpoint: POST /api/rest/v1/withdrawals/unconfirmed/cancel
Error Scenarios
Related
- Wallet Information - View balances
- Domains: Funding - Full payments and settlement lines reference
- Domains: Custody - Custody and address documentation