Upcoming Changes
OKX trading fee scheme update
Last updated: 2025/11/3
OKX will update the trading fee scheme for improved fee differentiation across tiers. Please refer to the announcement for more details.
Instruments endpoint/channel
- Add a new response parameter groupId to indicate which group a specific symbol belongs to.
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| groupId | String | Instrument trading fee group ID Spot: 1: Spot USDT2: Spot USDC & Crypto3: Spot TRY4: Spot EUR5: Spot BRL7: Spot AED8: Spot AUD9: Spot USD10: Spot SGD11: Spot zero12: Spot group one13: Spot group two14: Spot group threeExpiry futures: 1: Expiry futures crypto-margined2: Expiry futures USDT-margined3: Expiry futures USDC-margined4: Expiry futures premarket5: Expiry futures group one6: Expiry futures group twoPerpetual futures: 1: Perpetual futures crypto-margined2: Perpetual futures USDT-margined3: Perpetual futures USDC-margined4: Perpetual futures group one5: Perpetual futures group twoOptions: 1: Options crypto-margined2: Options USDC-marginedinstType and groupId should be used together to determine a trading fee group. Users should use this endpoint together with fee rates endpoint to get the trading fee of a specific symbol. **Some enum values may not apply to you; the actual return values shall prevail. |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"alias": "",
"auctionEndTime": "",
"baseCcy": "BTC",
"category": "1",
"ctMult": "",
"ctType": "",
"ctVal": "",
"ctValCcy": "",
"contTdSwTime": "1704876947000",
"expTime": "",
"futureSettlement": false,
"groupId": "13"
"instFamily": "",
"instId": "BTC-USDT",
"instType": "SPOT",
"lever": "10",
"listTime": "1606468572000",
"lotSz": "0.00000001",
"maxIcebergSz": "9999999999.0000000000000000",
"maxLmtAmt": "1000000",
"maxLmtSz": "9999999999",
"maxMktAmt": "1000000",
"maxMktSz": "",
"maxStopSz": "",
"maxTriggerSz": "9999999999.0000000000000000",
"maxTwapSz": "9999999999.0000000000000000",
"minSz": "0.00001",
"optType": "",
"openType": "call_auction",
"preMktSwTime": "",
"quoteCcy": "USDT",
"tradeQuoteCcyList": [
"USDT"
],
"settleCcy": "",
"state": "live",
"ruleType": "normal",
"stk": "",
"tickSz": "0.1",
"uly": "",
"instIdCode": 1000000000
}
]
}
Get fee rates endpoint
- Add new response parameter feeGroup.
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| feeGroup | Array of objects | Fee groups. Applicable to SPOT/MARGIN/SWAP/FUTURES/OPTION |
| > taker | String | Taker fee |
| > maker | String | Maker fee |
| > groupId | String | Instrument trading fee group ID instType and groupId should be used together to determine a trading fee group. Users should use this endpoint together with instruments endpoint to get the trading fee of a specific symbol. |
Response Example
{
"code": "0",
"msg": "",
"data": [{
"category": "1", //Deprecated
"delivery": "",
"exercise": "",
"feeGroup": [
{
"taker": "0.001",
"maker": "0.0001",
"groupId": "1"
},
{
"taker": "0.01",
"maker": "0.001",
"groupId": "2"
},
{
"taker": "0.1",
"maker": "0.01",
"groupId": "3"
},
......
],
"instType": "SPOT",
"level": "lv1",
"maker": "-0.0008",
"makerU": "",
"makerUSDC": "",
"taker": "-0.001",
"takerU": "",
"takerUSDC": "",
"ruleType": "normal",
"ts": "1608623351857",
"fiat": []
}
]
}
2025-08-20
Unified USD orderbook revamp
To revamp unified USD orderbook, more details for the first type users, more details for the second type users.
OKX delisted the Crypto-USDC trading pairs and upgrade the Crypto-USD trading pairs for accessibility to all users.
Users are categorized into two types based on their country or region, with varying solutions for each. If you get valid data from GET /api/v5/account/instruments?instType=SPOT&instId=BTC-USD, you belong to the first type users, if you get an empty array [] data from that URL, you belong to the second type.
- If you are going to trade
Crypto-USDCpairs after the revamp:- The
instIdshould be set toCrypto-USD, such asBTC-USD. - The
tradeQuoteCcyis used to determine the settlement quote currency and must be set asUSDC. - The value for
tradeQuoteCcyshould be one of the enumerated values fromtradeQuoteCcyList, which can be obtained from the endpoint Get instruments (private).
- The
- What you need to do:
- For the first type users:
- Regarding Trade, Algo Trading and and in Block Trading, you currently have two options to trade
Crypto-USDC. The first option is to trade directly with"instId": "Crypto-USDC"without specifyingtradeQuoteCcy. The second option is to trade using"instId": "BTC-USD"with"tradeQuoteCcy": "USDC". The first option will not be available after the revamp. For more details, please refer to the Example 1 below.
- Regarding Trade, Algo Trading and and in Block Trading, you currently have two options to trade
- For the second type of users, you are allowed to trade only with
"instId": "Crypto-USDC"before the revamp. Afterward, you must use"instId": "Crypto-USD"with"tradeQuoteCcy": "USDC". - When trading
Crypto-USDCafter the revamp, Get maximum available balance/equity and Get maximum order quantity will also need to use"instId": "BTC-USD"with"tradeQuoteCcy": "USDC". - For market data related
Crypto-USDCandCrypto-USDtrading, after the revamp, they will share the same order book, both using"instId": "Crypto-USD", such asBTC-USD. ThetradeQuoteCcyis not supported.
- For the first type users:
Example 1: Placing an order with BTC-USDC:
| Type | Before upgrading | After upgrading |
|---|---|---|
| Operation | Trading BTC-USDC |
Trading BTC-USDC |
Request fields for "op": "order" |
First option: { "instId": "BTC-USDC", "tradeQuoteCcy": "" } Second option: { "instId": "BTC-USD", "tradeQuoteCcy": "USDC" } |
Only option: { "instId": "BTC-USD", "tradeQuoteCcy": "USDC" } |
| Response body from Get instruments (private) |
[ { "instId": "BTC-USDC", "tradeQuoteCcyList": ["USDC"], ...... }, { "instId": "BTC-USD", "tradeQuoteCcyList": ["USD", "USDC"], ...... } ] |
[ { "instId": "BTC-USD", "tradeQuoteCcyList": ["USD", "USDC"], ...... } ] |
2025-07-02
Added new endpoint
Added new response parameter
| Parameter | Type | Description |
|---|---|---|
| notes | String | Notes |
2025-04-17
Added endpoints
Added new error codes
| Error code | Error Message |
|---|---|
| 59515 | You are currently not on the custody whitelist. Please contact customer service for assistance. |
| 59516 | Please create the Copper custody funding account first. |
| 59517 | Please create the Komainu custody funding account first. |
| 59518 | You can’t create a sub-account using the API; please use the app or web. |
| 59519 | You can’t use this function/feature while it's frozen, due to: {freezereason} |
2025-03-03
Withdrawal API adjustment for Turkey entity users
Due to compliance requirements, Bahamas entity users need to pass in the field rcvrInfo when making withdrawal.
Withdraw assets to the exchange wallet
If users withdraw assets to the exchange wallet, they need to provide exchange info & recipient information.
- Users can query supported exchanges through the endpoint of Get exchange list (public)
- Users need to pass in the following field information of the recipient (rcvrFirstName, rcvrLastName, rcvrCountry, rcvrCountrySubDivision, rcvrTownName, rcvrStreetName). For the exchange wallet belongs to business recipient,
rcvrFirstNamemay input the company name,rcvrLastNamemay input "N/A", location info may input the registered address of the company. The examples are as follows:
Withdraw assets to the private wallet
If users withdraw assets to the private wallet, they need to provide recipient information.
- Users need to pass in the following field information of the recipient (rcvrFirstName, rcvrLastName, rcvrCountry, rcvrCountrySubDivision, rcvrTownName, rcvrStreetName). For the exchange wallet belongs to business recipient,
rcvrFirstNamemay input the company name,rcvrLastNamemay input "N/A", location info may input the registered address of the company. The examples are as follows:
2025-02-12
- Added new parameters
| Parameter | Type | Description |
|---|---|---|
| notionalUsdForBorrow | String | Notional value for Borrow in USDApplicable to Spot mode/Multi-currency margin/Portfolio margin |
| notionalUsdForSwap | String | Notional value of positions for Perpetual Futures in USDApplicable to Multi-currency margin/Portfolio margin |
| notionalUsdForFutures | String | Notional value of positions for Expiry Futures in USDApplicable to Multi-currency margin/Portfolio margin |
| notionalUsdForOption | String | Notional value of positions for Option in USDApplicable to Spot mode/Multi-currency margin/Portfolio margin |
2024-11-14
- Adjusted response parameters
Before
| Parameter | Type | Description |
|---|---|---|
| minFee | String | The minimum withdrawal fee for normal address Apply to on-chain withdrawal |
| maxFee | String | The maximum withdrawal fee for normal address Apply to on-chain withdrawal |
| minFeeForCtAddr | String | The minimum withdrawal fee for contract address Apply to on-chain withdrawal |
| maxFeeForCtAddr | String | The maximum withdrawal fee for contract address Apply to on-chain withdrawal |
After
| Parameter | Type | Description |
|---|---|---|
| fee | String | The fixed withdrawal fee Apply to on-chain withdrawal |
| minFee | String | Apply to on-chain withdrawal(Deprecated) |
| maxFee | String | Apply to on-chain withdrawal(Deprecated) |
| minFeeForCtAddr | String | Apply to on-chain withdrawal(Deprecated) |
| maxFeeForCtAddr | String | Apply to on-chain withdrawal(Deprecated) |
- Added new endpoint
2024-10-10
- Added new response parameters
| Parameter | Type | Description |
|---|---|---|
| burningFeeRate | String | Burning fee rate, e.g "0.05" represents "5%". Some currencies may charge combustion fees. The burning fee is deducted based on the withdrawal quantity (excluding gas fee) multiplied by the burning fee rate. Apply to on-chain withdrawal |
- Added new response parameters
| Parameter | Type | Description |
|---|---|---|
| burningFeeRate | String | Burning fee rate, e.g "0.05" represents "5%". Some currencies may charge combustion fees. The burning fee is deducted based on the withdrawal quantity (excluding gas fee) multiplied by the burning fee rate. |
| feeCcy | String | Fixed withdrawal fee unit |
Nitro spread supports market orders, the request and response parameter ordType adds the enumeration value
market.Nitro spread adds a new order cancellation scenario, the cancelSource response parameter adds the enumeration value
15: Order canceled: The order price is beyond the limit.
2024-10-04
- Added call auction details WebSocket channel
2024-10-01
- Added public feature for endpoint:
2024-09-19
- Added new response parameters
| Parameter | Type | Description |
|---|---|---|
| enableSpotBorrow | Boolean | Whether borrow is allowed or not in Spot modetrue: Enabledfalse: Disabled |
| spotBorrowAutoRepay | Boolean | Whether auto-repay is allowed or not in Spot modetrue: Enabledfalse: Disabled |
- Added new response parameters
| Parameter | Type | Description |
|---|---|---|
| ccy | String | Currency |
- Added new response parameters
| Parameter | Type | Description |
|---|---|---|
| isTradeBorrowMode | String | Whether borrowing currency automatically true false Only applicable to trigger order, trailing order and twap order |
2024-09-18
- Added new endpoints: