VIP 等级与手续费规则
概述
永续合约手续费采用 6 档 VIP 阶梯,依据用户在所有 USDⓈ-M 永续交易对上的 14 天滚动名义成交量(Maker 和 Taker 均计入)决定档位。所有手续费均从用户 抵押保证金中扣除,不做外部 费用结算。
用户实际支付的手续费率计算方式:
effective_rate = base_rate × (1 − referral_discount) × (1 − token_staking_discount)
effective_fee = notional × effective_rate (四舍五入至 6 位小数,远离零取整)
| 字段 | 当前取值 |
|---|---|
referral_discount | 0.10(10%) |
token_staking_discount | 0.00(接口保留,当前恒为 0) |
discount_multiplier | (1 − 0.10) × (1 − 0.00) = 0.90 |
notional | amount × mark_price |
| 精度 | 6 位小数(USDT),四舍五入、远离零取整 |
档位表
| 等级 | 14 天成交量(USD) | Taker | Maker |
|---|---|---|---|
| VIP 0 | < 5 M | 0.040% | 0.010% |
| VIP 1 | 5 M – 25 M | 0.036% | 0.008% |
| VIP 2 | 25 M – 100 M | 0.032% | 0.004% |
| VIP 3 | 100 M – 500 M | 0.028% | 0.000% |
| VIP 4 | 500 M – 2 B | 0.026% | 0.000% |
| VIP 5 | ≥ 2 B | 0.024% | 0.000% |
VIP 3 及以上 Maker 免费。
升档 / 降档语义
- 升档:在成交量跨越阈值后,
GET /account/fee-info第一次重新评估用户 档位时应用。下单预览与下单路径特意不重新评估档位(出于性能考虑只读取已 持久化的档位),因此从不调用fee-info的纯 API 用户最迟由每日扫描升档 —— 即次日00:00–00:10 UTC窗口内。 - 降档:延迟生效,不立即下调。新的(更低的)档位记录在
pending_tier,到下一个 UTC 00:00 才真正应用。该设计给用户 24 小时缓冲, 避免短时成交量回落导致频繁降档。 - 每次
upgrade_immediate、downgrade_scheduled、downgrade_applied状态变化都会在vip_tier_events表写入一条审计记录。
GET /account/fee-info
返回当前用户的 VIP 档位、完整档位表、14/30 天滚动成交量、距离下一档的进度, 以及当前生效的折扣栈。
请求
鉴权:JWT(钱包登录)或 API Key —— 可选。匿名调用返回公开档位表及 VIP 0 基线值(成交量为零、无折扣);已鉴权的调用额外返回当前档位、滚动成交量、 待生效降档及实际折扣。无查询参数。
GET /api/v1/account/fee-info
Authorization: Bearer <jwt>
响应
{
"current_tier": 3,
"current_label": "VIP 3",
"current_maker": "0.00000",
"current_taker": "0.00028",
"effective_maker": "0.000000",
"effective_taker": "0.000252",
"volume_14d": "138206820.47",
"volume_30d": "215440192.11",
"fee_tiers": [
{ "level": 0, "label": "VIP 0", "maker": "0.00010", "taker": "0.00040", "volume_min": "0", "volume_max": "5000000" },
{ "level": 1, "label": "VIP 1", "maker": "0.00008", "taker": "0.00036", "volume_min": "5000000", "volume_max": "25000000" },
{ "level": 2, "label": "VIP 2", "maker": "0.00004", "taker": "0.00032", "volume_min": "25000000", "volume_max": "100000000" },
{ "level": 3, "label": "VIP 3", "maker": "0.00000", "taker": "0.00028", "volume_min": "100000000", "volume_max": "500000000" },
{ "level": 4, "label": "VIP 4", "maker": "0.00000", "taker": "0.00026", "volume_min": "500000000", "volume_max": "2000000000"},
{ "level": 5, "label": "VIP 5", "maker": "0.00000", "taker": "0.00024", "volume_min": "2000000000" }
],
"progress_to_next": {
"next_level": 4,
"next_label": "VIP 4",
"required_volume": "500000000",
"remaining_volume": "361793179.53",
"percent": "0.276413640"
},
"discounts": {
"referral": "0.10",
"token_staking": "0",
"multiplier": "0.90"
}
}
字段说明:
current_maker/current_taker:折扣前的基础费率effective_maker/effective_taker:已乘discount_multiplier,前端展示 及与POST /orders/preview对账时请直接使用这两个值progress_to_next:用户已处于 VIP 5 时本字段缺省pending_tier与pending_effective_at:仅在已调度降档时出现;否则这两个 字段会从响应中整体省略(而不是序列化为null)
POST /orders/preview —— 手续费字段
预览接口返回的费率已包含折扣乘数,前端不需要再次乘折扣:
{
"order_value": "500.000",
"taker_fee_rate": "0.000252",
"maker_fee_rate": "0.000000",
"est_fee": "0.126000",
...
}
est_fee = order_value × (taker 或 maker 费率),具体用哪个费率由 order_type 决定:
order_type | 使用的费率 |
|---|---|
market | taker_fee_rate |
limit | maker_fee_rate |