API + MCP live · talk to us

// EXECUTION & FEES

Kalshi vs Polymarket fees: the total cost of a fill

2026-07-16 · Mithril

Kalshi and Polymarket list many of the same events, at prices that rarely agree to the cent. The obvious move — buy wherever the displayed price is lower — is wrong often enough to cost real money, because the venues charge you in completely different ways. Kalshi adds an explicit, price-dependent taker fee on top of the displayed price. Polymarket charges no exchange trading fee on most markets, but makes you pay through spread, book depth, and (depending on your setup) Polygon gas.

This post does the comparison properly: same trade, both venues, net cost after everything, at several price points.

The two cost models in one table

KalshiPolymarket
Trading fee (taker)0.07 × contracts × price × (1−price), rounded up to the next centNone on most markets
Trading fee (maker)Generally none on most marketsNone on most markets
Price quotingCents, 1–99¢Decimals, 0.01–0.99
Other costsSpread + impactSpread + impact + Polygon gas + USDC on/off-ramp
Fee shapePeaks at 50¢, vanishes at tailsFlat (zero) — costs live in the book

Full single-venue treatments: Kalshi fees explained and Polymarket fees and gas explained.

Worked examples: 100 contracts, taker, at the displayed price

Assume enough depth at the touch on both venues (we relax this below), and compare net cost per contract. Kalshi fee = 0.07 × 100 × p × (1−p), rounded up to the next cent on the order.

Near 50¢ — Kalshi's fee peak

Kalshi displays 41¢, Polymarket displays 0.42.

text
Kalshi:     100 × $0.41            = $41.00
            fee 0.07×100×0.41×0.59 = $1.6933 → $1.70
            net                    = $42.70   (42.70¢ / contract)

Polymarket: 100 × $0.42            = $42.00   (42.0¢ / contract)

Polymarket wins by 0.7¢ per contract despite displaying a price 1¢ worse. Near 50¢, Kalshi's fee is ~1.7¢ per contract, so Kalshi needs to display roughly 2¢ better than Polymarket just to break even.

At the tails — Kalshi's fee nearly vanishes

Kalshi displays , Polymarket displays 0.10.

text
Kalshi:     100 × $0.09            = $9.00
            fee 0.07×100×0.09×0.91 = $0.5733 → $0.58
            net                    = $9.58    (9.58¢ / contract)

Polymarket: 100 × $0.10            = $10.00   (10.0¢ / contract)

Kalshi wins by 0.42¢ per contract. At tail prices the fee is small enough that a 1¢ displayed advantage survives it.

Same displayed price — the fee decides

Both venues display 65¢ for 100 contracts.

text
Kalshi:     $65.00 + fee 0.07×100×0.65×0.35 = $1.5925 → $1.60
            net = $66.60  (66.60¢ / contract)

Polymarket: $65.00  (65.0¢ / contract)

At equal displayed prices, Polymarket is always net-cheaper for a taker on a no-fee market — by exactly the Kalshi fee, here 1.6¢ per contract.

The break-even displayed-price gap

For a taker, Kalshi is net-cheaper only when its displayed price beats Polymarket's by more than the per-contract fee (plus rounding). Roughly:

Price regionKalshi fee / contractKalshi must display cheaper by
~10¢ or ~90¢~0.6¢≥ 1¢
~30¢ or ~70¢~1.5¢≥ 2¢
~50¢~1.75¢≥ 2¢

Since prediction-market prices move in 1¢ ticks on Kalshi, the practical rule of thumb: near mid-range prices, a 1¢ Kalshi advantage is an illusion; a 2¢ advantage is marginal; the tails are where Kalshi's displayed edge is real.

What the simple math leaves out

Three complications regularly flip the answer back:

  1. Depth. The comparison above assumed your full size fills at the touch on both venues. If Polymarket shows 0.42 with 150 shares offered and you need 1,000, your average fill might be 0.45 — and Kalshi's fee-inclusive 42.7¢ wins after all. Net price must be computed at your size, walking both books. See Slippage in thin prediction markets.
  2. Maker treatment. Both venues generally charge makers nothing on most markets, so for passive orders the fee comparison mostly drops out and the question becomes where you are likelier to get filled at your price — a maker-taker question, not a fee question.
  3. Capital location. Polymarket requires USDC on Polygon; Kalshi requires USD at the exchange. If your capital is in the wrong place, on/off-ramp costs and delays can swamp a sub-cent routing edge — which also constrains cross-venue arbitrage.

Do the comparison per order, or automate it

For any single trade, the arbitrage calculator will net out both venues' costs side by side, and the /compare/kalshi-vs-polymarket-fees page keeps the standing comparison. But if you trade programmatically, this is a per-order computation against two live books — exactly the job of a smart order router.

That is what Mithril does on every order: walk both books at your size, add each venue's fees, fill at the net-cheaper venue (splitting when that's better), and hand back an execution receipt itemizing the comparison — so whether routing saved you anything is your number, not our claim. It is free during beta.

Fee schedules change. Figures above reflect the venues' public documentation as of July 2026 — always confirm against their own docs before trading real money.

One API + MCP for Kalshi and Polymarket

Fee-aware routing, unified market IDs, and hard server-side risk limits — live today, free during beta.