Fees
Volume-based maker/taker tiers, in percent, straight from the fee engine — with a maker rebate at the top tier.
Trading fees are volume-based. Your tier is set by your 30-day rolling trading volume (in CAD); higher tiers pay lower fees, and the top tier earns a maker rebate (a negative maker fee — you are paid to provide liquidity). A maker adds resting liquidity to the book; a taker removes it.
Schedule
Rates are percentages of the traded notional (the engine divides by 100 internally — a
2.00 taker rate is 2%). This table is generated from FEE_TIERS in
app/services/fee_service.py and drift-gated in CI.
At the Diamond tier the maker rate is negative — a rebate credited to makers who post liquidity.
Reading your fees over the API
Two public endpoints expose the schedule and your current standing:
GET /fees/schedule returns all tiers plus the current withdrawal fee percentage;
GET /fees/my-tier returns your tier name, maker/taker rates, 30-day volume, and progress to
the next tier. Source: app/api/routes/fees.py.
Quotes are authoritative
Before placing an order you can preview a fee-inclusive quote (preview_order_quote in
the SDKs). The fee shown in the quote is the fee that will be charged, and the quote token
binds it when you place the order — so the disclosed fee equals the charged fee. Fees round
up to the cent in the platform’s favour (How pricing works); treat
the quote and the execution receipt the API returns as the source of truth rather than
recomputing fees client-side.
An admin can globally override the maker/taker rates; when an override is active it applies
in place of the tiered rates above. The GET /fees/* endpoints always reflect the rates
actually in effect.

