Trading fees
MNX charges a per-fill trading fee proportional to the fill's notional value. Each side of a fill pays its own rate: the maker pays the market's maker rate and the taker pays the market's taker rate. MNX itself charges nothing on deposits, withdrawals, order placement, or cancellation — only executed fills are charged (on-chain operations still pay normal MegaETH gas).
Fee schedule
| Role | Launch rate | Charged on |
|---|---|---|
| Maker | 0 bps (0%) | Fill notional (price × quantity) |
| Taker | 5 bps (0.05%) | Fill notional (price × quantity) |
Fees can be switched off exchange-wide (for example during testnet phases or promotions), in which case every market's rates read 0. The authoritative current rates are always the per-market fields returned by GET /v0/markets — clients should read them from there rather than hard-coding the schedule above.
curl "https://api.testnet.mnx.fi/v0/markets?limit=1"
# each market object includes:
# "maker_fee": 0, "maker_fee_e18_raw": "0",
# "taker_fee": 0.0005, "taker_fee_e18_raw": "500000000000000"
# (0 in both fields when fees are switched off)Rates are decimal fractions of notional: 0.0005 means 5 basis points, so a $10,000 fill pays $5. The *_fee_e18_raw fields carry the same rate as an exact integer scaled by 10¹⁸, matching the raw-integer convention used across the API.
Maker or taker?
MNX matches orders in frequent batch auctions (see Placing orders), so maker/taker is decided per matched pair inside the batch:
- Market orders are always the taker.
- When a limit order matches a market order, the limit order is the maker.
- When two orders of the same type match, the earlier order (time priority) is the maker.
Where paid fees appear
Every fill records the fee actually charged to your side in its fee field (with the exact integer in fee_e18_raw). The field is present on all fill-returning endpoints — GET /v0/orders/{order_id}/fills, GET /v0/fills/by-user/{user_id}, and GET /v0/fills/by-market/{market_id}. When fees are switched off, fee is 0.
Fees are settled from your margin balance together with the fill, and the pre-trade margin check is fee-inclusive: an order that could not cover its own fee on top of the required margin is rejected rather than partially charged.