The BitMEX withdrawal API has been updated to comply with global Travel Rule regulations. These changes will be rolled out early 2026 and affect all API withdrawals.
To help you prepare, find your essential reference detailing the new Travel Rule fields and API endpoints below.
To learn more about the Travel Rule and what it means for your trading experience, visit our blog and FAQs.
What is changing?
1. Saved Addresses Are Now Required
All API withdrawals must now use saved addresses from your address book.
The POST /api/v1/user/requestWithdrawal endpoint no longer accepts the following parameters:
address - No longer supported
network - No longer supported
memo - No longer supported
You must now use addressId to reference a saved address in your address book.
2. Travel Rule Information Required
All saved addresses must include:
Beneficiary information - Details about who is receiving the funds
VASP information - Details about the service provider hosting the destination address
Addresses without this information cannot be used for withdrawals.
How to Update Your Withdrawals?
Step 1: Create or Update Saved Addresses
Use the address book API to create new addresses or update existing ones with travel rule information:
Create new addresses: POST /api/v1/address
Update existing addresses: PUT /api/v1/address
Note: newly added addresses in the address book are subject to a minimum 24 hour cool-down. Learn more here.
You can also manage addresses via:
The BitMEX website at www.bitmex.com/app/addresses
The BitMEX mobile application
For a step-by-step guide on adding and managing your address book, visit our blog.
Step 2: Use Address IDs for Withdrawals
When making withdrawals, reference the saved address by its id:
{
"addressId": 12345,
"currency": "XBt",
"amount": 10000000,
"otpToken": "123456"
}
Working with the Address Book
All addresses must include travel rule information before they can be used for withdrawals.
Creating New Addresses
To add a new withdrawal destination:
Via API: Use POST /api/v1/address with the destination address and travel rule information
Via Website: Go to www.bitmex.com/app/addresses and create a new address
Via Mobile App: Use the address book feature in the BitMEX mobile application
Updating Existing Addresses
To add travel rule information to existing saved addresses:
Via API: Use PUT /api/v1/address to update the address with beneficiary and vasp fields
Via Website: Edit your existing address at www.bitmex.com/app/addresses
Via Mobile App: Edit addresses in the BitMEX mobile application
Important: Addresses without complete travel rule information cannot be used for withdrawals and will result in a 400 (Bad Request) error. Additionally, incorrect information may result in the withdrawal being rejected or funds being held by the receiving service provider.
Travel Rule Field Specifications
The beneficiary field
This field describes the person receiving your withdrawal.
If the beneficiary and the withdrawing account are the same person or company, provide the following:
{
"type": "SELF"
}
If the beneficiary is a person who is not yourself, then please enter some details:
{
"type": "THIRD_PARTY",
"entityType": "INDIVIDUAL",
"firstName": "John",
"lastName": "Doe"
}
If the beneficiary is a company:
{
"type": "THIRD_PARTY",
"entityType": "CORPORATE",
"fullName": "Acme Corporation"
}
The vasp field
This field describes the service provider of the wallet address.
If this is a self-hosted address, provide the following VASP object:
{
"addressType": "UNHOSTED"
}
If you are using a wallet hosted by an exchange, you can either provide an identifier and source (id, source) or provide VASP details manually:
To find the VASP id and source you can search with the following endpoint (sign with your API key):
GET /api/compliance/travel-rule/vasps?q={vasp_name}
This will return a list of entities matching the search term, each containing an id and source property.
{
"addressType": "HOSTED",
"id": "{vasp_id}",
"source": "{source_name}"
}
If you cannot find the id and source, you can provide some details manually:
{
"addressType": "HOSTED",
"name": "My VASP",
"website": "https://myvasp.example.com"
}
Note that name and website are both required fields if id and source are not provided.
API Reference
POST /api/v1/user/requestWithdrawal
Request a withdrawal to an external wallet.
Request Parameters
Parameter | Type | Required | Description |
addressId | integer | Required | ID of saved address containing destination and travel rule information |
currency | string | Required | Currency to withdraw (e.g., "XBt", "USDt") |
amount | integer | Required | Amount to withdraw in minor currency units |
otpToken | string | Conditional | 2FA token. Required for external withdrawals unless destination has skip2FA configured |
fee | number | Optional | Network fee (if not specified, default value calculated) |
Note: The address, network, and memo parameters are no longer supported. All destination information must be stored in a saved address referenced by addressId. For internal transfers to other BitMEX users, use targetUserId instead of addressId.
Example Request
POST /api/v1/user/requestWithdrawal
{
"addressId": 12345,
"currency": "XBt",
"amount": 50000000,
"otpToken": "123456"
}
Example Request with Optional Parameters
POST /api/v1/user/requestWithdrawal
{
"addressId": 67890,
"currency": "USDt",
"amount": 25000000,
"otpToken": "123456",
"fee": 0.0001
}
Response
{
"transactID": "b6c6b38e-8f4d-4b6c-9c7f-8e3b7c6d5a4e",
"account": 123456,
"currency": "XBt",
"transactType": "Withdrawal",
"amount": 50000000,
"fee": 20000,
"transactStatus": "Pending",
"addressId": 12345,
"tx": null
"transactTime": "2024-01-15T10:30:00.000Z",
"walletBalance": 190000000,
"timestamp": "2024-01-15T10:30:00.000Z"
}
POST /api/v1/address
Create a new saved address with travel rule information.
Request Parameters
Parameter | Type | Required | Description |
currency | string | Optional | Currency (e.g., "XBt", "USDt") |
network | string | Required | Blockchain network |
address | string | Required | Destination address |
name | string | Required | Name/label for this address |
memo | string | Optional | Destination memo/tag |
skipConfirm | boolean | Optional | Skip email confirmation for withdrawals (default: false). Setting must be verified via email confirmation. |
skip2FA | boolean | Optional | Skip 2FA for withdrawals (default: false) |
otpToken | string | Optional | 2FA token to verify skip2FA setting. If not provided, the skip2FA setting can be verified via email confirmation. |
beneficiary | object | Required | Beneficiary information (see schema below) |
vasp | object | Required | VASP information (see schema below) |
Beneficiary Schema
Field | Type | Required | Description |
type | string | Required | Either "SELF" or "THIRD_PARTY" |
entityType | string | Conditional | "INDIVIDUAL" or "CORPORATE" (required if type is "THIRD_PARTY") |
firstName | string | Optional | First name (for individuals) |
lastName | string | Conditional | Last name (required for "THIRD_PARTY" individuals) |
fullName | string | Conditional | Full legal name (required for "THIRD_PARTY" corporates) |
VASP Schema
Field | Type | Required | Description |
addressType | string | Required | "HOSTED", "UNHOSTED", or "UNKNOWN" |
id | string | Conditional | VASP identifier (required for "HOSTED" if name and website not provided) |
source | string | Conditional | Source of VASP identifier (required when id is provided) |
name | string | Conditional | VASP name (required for "HOSTED" if id not provided) |
website | string | Conditional | VASP website URL (required for "HOSTED" if id not provided) |
Example Request: Personal Hardware Wallet
POST /api/v1/address
{
"currency": "XBt",
"network": "Bitcoin",
"address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"name": "My Ledger",
"skipConfirm": true,
"beneficiary": {
"type": "SELF"
},
"vasp": {
"addressType": "UNHOSTED"
},
"otpToken": "123456"
}
Example Request: Exchange Address with VASP ID
POST /api/v1/address
{
"currency": "XBt",
"network": "Bitcoin",
"address": "3J98t1WpEZ73CNmYviecrnyiWrnqRhWNLy",
"name": "Binance Hot Wallet",
"beneficiary": {
"type": "SELF"
},
"vasp": {
"addressType": "HOSTED",
"id": "did:vasp:binance",
"source": "NOTABENE_ADDRESS_HASH"
}
}
Example Request: Third Party at Exchange
POST /api/v1/address
{
"currency": "USDt",
"network": "Ethereum",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"name": "Supplier Payment Address",
"beneficiary": {
"type": "THIRD_PARTY",
"entityType": "CORPORATE",
"fullName": "Global Crypto Services Inc"
},
"vasp": {
"addressType": "HOSTED",
"name": "Coinbase",
"website": "https://www.coinbase.com"
}
}
Response
{
"id": 12345,
"currency": "XBt",
"network": "Bitcoin",
"address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"name": "My Ledger",
"memo": null,
"skipConfirm": false,
"skipConfirmVerified": false,
"skip2FA": false,
"skip2FAVerified": false,
"verified": false,
"cooldownExpires": null,
"created": "2024-01-15T10:30:00.000Z",
"userId": 123456
}
For a complete breakdown of these changes and more details, visit our blog and FAQs.
If you have any questions about these upcoming changes, please contact Support.
To be the first to know about our new listings, product launches, giveaways and more, we invite you to join one of our online communities and connect with other traders. For the absolute latest, you can also follow us on Twitter, or read our blog and site announcements.

















English (US) ·