The formula
The fee is quadratic in price, not linear in notional:p is the fill’s price tick in pips, qty is the number of shares, and rate
is the party’s pinned maker or taker rate. Everything is integer arithmetic;
there are no floats anywhere in the money path.
Two properties fall out of Q and both matter:
- It peaks at 50¢ and vanishes at the edges. You pay most where the outcome is most uncertain and almost nothing on a contract trading at 99¢.
- It is mirror-invariant —
Q(p) = Q(10000 − p). A YES fill at 3500 and the NO fill facing it at 6500 compute the sameQ, so both sides of one trade are charged off an identical basis and neither outcome is the cheaper side to hold.
Live rates
Every 60-second round market binds fee schedule 2:
Read the schedule bound to a market from
fee_schedule_id on
GET /v1/markets/{market_id}. Schedule 1 exists as a zero-fee spare.
rate is expressed in hundredths of a percent of the quadratic, Kalshi-style:
250 is 2.5%, so the fee on a fill is 0.025 × qty × P × (1 − P) in dollars,
where P is the fill price as a fraction of $1.
What a taker pays
taker_rate = 250:
Fees are denominated in pips, the same unit as every other money field
(1 pip = 0.01¢; $1 = 10,000 pips).
Read the shape rather than the row: fee per share is flat in cents but steeply
regressive as a share of what you paid. Buying at 99¢ costs 0.025% of notional;
buying the same contract at 1¢ costs 2.48%. The cheap side of a lopsided market
is the expensive side to take.
Don’t hard-code this table. Rates are venue configuration and can change by
sequenced admin command; the fee your order will pay is fixed at admission
(below), and the fee it actually paid is on the fill.
Rounding is per fill, and upward
Each fill rounds up independently —ceil, house-favourable. One order filled
in five pieces rounds five times, so it can pay marginally more than the same
quantity filled at once. At the extreme, a single share always costs at least
1 pip.
This is why a resting order that gets picked apart by small aggressors is not
fee-equivalent to one that trades in a block, and it is worth knowing before you
compare a fill report against your own model.
Your rate is pinned when the order is admitted
maker_rate, taker_rate and the per-share fee ceiling are read from the
market’s schedule once, when the order is accepted, stored on the order, and
used for every later fill of that order.
A fee schedule change therefore affects only orders admitted after it. An order
resting across a change keeps the economics it was admitted under — which is
also what keeps its collateral sufficient, since a reservation taken at the old
rate can never be short at the new one.
A buy reserves its fee up front
Buys reserve cash at admission for the whole order, fee included:100 × 5063 = 506,300 pips
(50.00 is the order and $0.63 the fee ceiling.
fee_ps is a per-share ceiling, not the fee you will pay. min(tick, 5000)
is there because a buy can only ever execute at or below its limit, and Q
peaks at 50¢ — so clamping toward the peak bounds every price the order could
reach. Because ceil(a·q) ≤ q·ceil(a), no sequence of partial fills and no
pattern of rounding can push the total fee past what was reserved.
Consequences worth planning for:
- Your buying power is
qty × (tick + fee_ps), slightly more thanqty × tick. An order sized to the last pip of your balance can be rejected for insufficient funds. - The reservation is released as fills resolve, and what you actually paid is
almost always less than
qty × fee_ps.
accepted event on the WebSocket
user channel carries fee_ps.
A sell pays out of proceeds
Sells reserve no cash — the fee comes out of what the sale earns. Net proceeds can reach zero at extreme ticks but are never negative, so a sell can never leave you owing money.Market buys clip against the fee
A budget-denominated (market) buy spends a fixed amount of cash. The venue walks the book and stops at the last share whose fee-inclusive cost still fits inside the budget, so a market buy never overspends and never fails for insufficient funds partway through. You get slightly fewer shares than a fee-blind calculation predicts.Reading what you paid
What is never charged
- Settlement. A winning share pays exactly $1 (10,000 pips), gross.
- Pair redemption. Holding matched YES and NO redeems to $1 automatically, free.
- Cancels, decreases and expiries. Including mass cancel and dead-man teardown.
- Deposits and withdrawals. No venue fee on either.
- Rejected and unmatched orders. Nothing that does not fill costs anything.
Maker rebates and referrals
These are credited by the accounts service, not by the trading API, and they settle once daily for the prior UTC day:- Maker rebate — 50%. Each maker receives half of the taker fees collected
against their resting orders. Under the live schedule the maker rate is
already
0, so a maker pays nothing and is paid half of what the aggressor paid. - Referral share — 50% of net. A referrer earns half of the exchange’s take after maker rebates, on fees paid by direct referees. On a 0.50, the exchange nets 0.25. Direct referrals only, no multi-level.
bonus_locked and withdrawable on GET /v1/portfolio/balance rather
than assuming available is what you can take out.