Withdraw
Withdraw assets from your Bybit account. You can make an off-chain transfer if the target wallet address is from Bybit. This means that no blockchain fee will be charged.
Note that, although the API rate limit for this endpoint is 5 req/s, there is also a secondary limit: you can only withdraw once every 10 seconds per chain/coin combination.
tip
- Make sure you have whitelisted your wallet address here
- Request by the master UID's api key only
formula
feeType=0:
- withdrawPercentageFee != 0: handlingFee = inputAmount / (1 - withdrawPercentageFee) * withdrawPercentageFee + withdrawFee
- withdrawPercentageFee = 0: handlingFee = withdrawFee
feeType=1:
- withdrawPercentageFee != 0: handlingFee = withdrawFee + (inputAmount - withdrawFee) * withdrawPercentageFee
- withdrawPercentageFee = 0: handlingFee = withdrawFee
HTTP Request
POST /v5/asset/withdraw/create
Request Parameters
| Parameter | Required | Type | Comments | 
|---|---|---|---|
| coin | true | string | Coin, uppercase only | 
| chain | false | string | Chain 
 | 
| address | true | string | 
 | 
| tag | false | string | Tag 
 | 
| amount | true | string | Withdraw amount | 
| timestamp | true | integer | Current timestamp (ms). Used for preventing from withdraw replay | 
| forceChain | false | integer | Whether or not to force an on-chain withdrawal 
 | 
| accountType | true | string | Select the wallet to be withdrawn from 
 | 
| feeType | false | integer | Handling fee option 
 | 
| requestId | false | string | Customised ID, globally unique, it is used for idempotent verification | 
| beneficiary | false | Object | Travel rule info. It is required for kyc/kyb=KOR (Korean), kyc=IND (India) users, and users who registered in Bybit Turkey(TR), Bybit Kazakhstan(KZ), Bybit Indonesia (ID) | 
| > vaspEntityId | false | string | Receiver exchange entity Id. Please call this endpoint to get this ID. | 
| > beneficiaryName | false | string | Receiver exchange user KYC name Rules for Korean users: | 
| > beneficiaryLegalType | false | string | Beneficiary legal type, individual(default),company | 
| > beneficiaryWalletType | false | string | Beneficiary wallet type, 0: custodial/exchange wallet (default),1: non custodial/exchane wallet | 
| > beneficiaryUnhostedWalletType | false | string | Beneficiary unhosted wallet type, 0: Your own wallet,1: others' wallet | 
| > beneficiaryPoiNumber | false | string | Beneficiary ducument number | 
| > beneficiaryPoiType | false | string | Beneficiary ducument type | 
| > beneficiaryPoiIssuingCountry | false | string | Beneficiary ducument issuing country | 
| > beneficiaryPoiExpiredDate | false | string | Beneficiary ducument expiry date | 
| > beneficiaryAddressCountry | false | string | Beneficiary country IDN | 
| > beneficiaryAddressState | false | string | Beneficiary state | 
| > beneficiaryAddressCity | false | string | Beneficiary city | 
| > beneficiaryAddressBuilding | false | string | Beneficiary building address | 
| > beneficiaryAddressStreet | false | string | Beneficiary street address | 
| > beneficiaryAddressPostalCode | false | string | Beneficiary address post code | 
| > beneficiaryDateOfBirth | false | string | Beneficiary date of birth | 
| > beneficiaryPlaceOfBirth | false | string | Beneficiary birth place | 
Response Parameters
| Parameter | Type | Comments | 
|---|---|---|
| id | string | Withdrawal ID | 
Request Example
- HTTP
- Python
- Node.js
POST /v5/asset/withdraw/create HTTP/1.1
Host: api-testnet.bybit.com
X-BAPI-API-KEY: xxxxxxxxxxxxxxxxxx
X-BAPI-TIMESTAMP: 1672196570254
X-BAPI-RECV-WINDOW: 5000
X-BAPI-SIGN: XXXXX
Content-Type: application/json
{
    "coin": "USDT",
    "chain": "ETH",
    "address": "0x99ced129603abc771c0dabe935c326ff6c86645d",
    "amount": "24",
    "timestamp": 1672196561407,
    "forceChain": 0,
    "accountType": "FUND"
}
from pybit.unified_trading import HTTP
session = HTTP(
    testnet=True,
    api_key="xxxxxxxxxxxxxxxxxx",
    api_secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
)
print(session.withdraw(
    coin="USDT",
    chain="ETH",
    address="0x99ced129603abc771c0dabe935c326ff6c86645d",
    amount="24",
    timestamp=1672196561407,
    forceChain=0,
    accountType="FUND",
))
const { RestClientV5 } = require('bybit-api');
const client = new RestClientV5({
  testnet: true,
  key: 'xxxxxxxxxxxxxxxxxx',
  secret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
});
client
  .submitWithdrawal({
    coin: 'USDT',
    chain: 'ETH',
    address: '0x99ced129603abc771c0dabe935c326ff6c86645d',
    amount: '24',
    timestamp: 1672196561407,
    forceChain: 0,
    accountType: 'FUND',
  })
  .then((response) => {
    console.log(response);
  })
  .catch((error) => {
    console.error(error);
  });
Response Example
{
    "retCode": 0,
    "retMsg": "success",
    "result": {
        "id": "10195"
    },
    "retExtInfo": {},
    "time": 1672196571239
}