Trading fees

MNX charges a trading fee on each executed fill. The calculation depends on the market type. Each side pays its own fee: the maker uses the market's maker rate and the taker uses 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).

Standard fee schedule

One basis point (bp) is 0.01%. Notional is the fill's trade value: price × quantity. Fees apply to executed opening and closing trades.

Market typeMakerTaker
Perpetuals05 bps (0.05%) of notional
Numeric / valuation futures020 bps (0.20%) of notional
Binary futures0quantity × 0.02 × price × (1 − price)

A $10,000 taker fill in a numeric future costs $20. A $10,000 taker fill in a perpetual costs $5. These fees are based on trade value, not the margin posted to support the position.

Binary futures

Binary futures settle to 0 or 1 USDM per contract. Their trading fee uses the fill price p, expressed between 0 and 1, and the market's fee coefficient c:

fee (USDM) = quantity × c × p × (1 − p)
Standard maker coefficient: c = 0
Standard taker coefficient: c = 0.02

For example, at a price of $0.10 (10%), the taker fee is 10% × 90% × 2% = 0.18% of the $1 payout per contract. That is $0.0018 per contract, or $1.80 for 1,000 contracts.

The taker fee is largest at a fill price of 0.50: 0.005 USDM per contract, or 5 USDM for 1,000 contracts. A price of 0.90 gives the same fee per contract as 0.10. The fee approaches zero as the price approaches either endpoint. The coefficient 0.02 does not mean a flat 2% fee on trade value.

Read the current per-market parameters

The schedule above describes the standard defaults. Market-specific settings and fee-free periods can differ. Read the current parameters from GET /v0/markets for the environment you trade in. The per-market contract values govern the fees charged. These examples use testnet, like the getting-started guide; use the production base URL listed there to read mainnet fees.

curl "https://api.testnet.mnx.fi/v0/markets?type=future"
# Standard numeric-futures parameters:
#   "maker_fee": 0,      "maker_fee_e18_raw": "0",
#   "taker_fee": 0.002,  "taker_fee_e18_raw": "2000000000000000"

curl "https://api.testnet.mnx.fi/v0/markets?type=binary_future"
# Standard binary-futures parameters (coefficients):
#   "maker_fee": 0,      "maker_fee_e18_raw": "0",
#   "taker_fee": 0.02,   "taker_fee_e18_raw": "20000000000000000"
# Both parameters are 0 when fees are switched off.

Interpret these fields using the market's type: future and perpetual use fractions of notional; binary_future uses coefficients in the formula above. The *_fee_e18_raw fields carry exact integers scaled by 10¹⁸, matching the raw-integer convention. Exact binary fee calculation rounds down after each step: price × (1 − price), multiplication by the coefficient, and multiplication by quantity, each at 18 decimal places.

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. Opening orders reserve margin plus a fee allowance; an opening order that cannot cover both is rejected. Closing fees are paid from the close proceeds and capped at the closing position's equity. For binary opening orders, the fee allowance uses the maximum at price 0.50; the actual fee uses the executed fill price.