Fee Tiers
01 Exchange uses a volume-based fee tier system. Maker and taker rates decrease as your 30-day rolling volume increases. Fees are also returned per-trade in GET /trades.
Fee Schedule
| Tier | 30-Day Volume | Taker | Maker |
|---|---|---|---|
| 1 | ≤ $5M | 0.035% | 0.010% |
| 2 | > $5M | 0.030% | 0.005% |
| 3 | > $25M | 0.025% | 0% |
| 4 | > $100M | 0.023% | 0% |
| 5 | > $1B | 0.020% | 0% |
[!NOTE] Fee rates are stored internally as parts-per-million (ppm). Divide by
10000to get a percentage:350 ppm → 0.035%.
GET /fee/brackets/info
Returns the full fee bracket table, including any discounted tiers.
curl https://zo-mainnet.n1.xyz/fee/brackets/infoResponse
An array of [tier_index, { maker_fee_ppm, taker_fee_ppm }] tuples. Indices 0–4 are the standard tiers; indices 5–9 are discounted variants.
[
[0, { "maker_fee_ppm": 100, "taker_fee_ppm": 350 }],
[1, { "maker_fee_ppm": 50, "taker_fee_ppm": 300 }],
[2, { "maker_fee_ppm": 0, "taker_fee_ppm": 250 }],
[3, { "maker_fee_ppm": 0, "taker_fee_ppm": 230 }],
[4, { "maker_fee_ppm": 0, "taker_fee_ppm": 200 }]
]import requests
data = requests.get("https://zo-mainnet.n1.xyz/fee/brackets/info").json()
for tier_index, rates in data:
taker_pct = rates["taker_fee_ppm"] / 10000
maker_pct = rates["maker_fee_ppm"] / 10000
print(f"Tier {tier_index + 1}: taker={taker_pct:.4f}% maker={maker_pct:.4f}%")GET /account/{id}/fee/tier
Returns the current fee tier index for an account, based on its 30-day rolling volume.
curl https://zo-mainnet.n1.xyz/account/12345/fee/tierResponse
A single integer: the zero-based tier index. Indices 0–4 map to standard Tiers 1–5; indices 5–9 map to discounted Tiers 1–5.
0import requests
account_id = 12345
tier_index = requests.get(f"https://zo-mainnet.n1.xyz/account/{account_id}/fee/tier").json()
is_discounted = tier_index >= 5
display_tier = (tier_index - 5 + 1) if is_discounted else (tier_index + 1)
print(f"Account is on Tier {display_tier}" + (" (discounted)" if is_discounted else ""))GET /market/{marketId}/fees/taker/{accountId}
Returns the effective taker fee rate for a specific account on a specific market.
curl https://zo-mainnet.n1.xyz/market/0/fees/taker/12345Response
A decimal representing the fee rate (not a percentage). Multiply by 100 to get a percentage.
0.00035GET /market/{marketId}/fees/maker/{accountId}
Returns the effective maker fee rate for a specific account on a specific market.
curl https://zo-mainnet.n1.xyz/market/0/fees/maker/12345Response
0.0001Example: Fetching Your Rates
import requests
NORD_URL = "https://zo-mainnet.n1.xyz"
market_id = 0
account_id = 12345
taker = requests.get(f"{NORD_URL}/market/{market_id}/fees/taker/{account_id}").json()
maker = requests.get(f"{NORD_URL}/market/{market_id}/fees/maker/{account_id}").json()
print(f"Taker: {taker * 100:.4f}%")
print(f"Maker: {maker * 100:.4f}%")
# Estimate fee on a $10,000 order
order_value = 10_000
print(f"Estimated taker fee: ${order_value * taker:.4f}")