Fees and costs
Kalshi vs Polymarket fees in 2026: who's cheaper?
Kalshi charges takers 0.07 x P x (1 - P) per contract per side, with a 1.75c peak at 50c. Polymarket also charges takers, but its category rate changes: 0.07 for crypto, 0.05 for sports, and 0.04 for politics. Polymarket is cheaper outside crypto and free geopolitics.
What this page found
- Kalshi's taker fee peaks at 1.75c per contract per side when the contract trades at 50c.
- Polymarket's published taker rates run from 0.00 on geopolitics to 0.07 on crypto, with 0.05 on sports and 0.04 on politics.
- At 50c, the unrounded fee is 1.75c on Kalshi, 1.75c on Polymarket crypto, 1.25c on Polymarket sports, and 1.00c on Polymarket politics.
- TapeXray's live gap board ranks every match at a conservative 7% Polymarket maximum, then re-prices the handful of gated pairs at that market's own published category rate.
What does Kalshi charge?
Kalshi's published fee is a taker fee. Makers are listed at 0.0, and takers pay on entry and exit. The economic shape is simple: 0.07 x P x (1 - P) per contract per side, where P is the contract price in dollars. A 50c contract has P = 0.50, so the unrounded fee is 0.07 x 0.50 x 0.50 = $0.0175, or 1.75c. The fee gets smaller as the contract moves toward either end of the board.
Kalshi also publishes the fee with a ceiling function: fee = ceil(0.07 x C x P x (1 - P)) cents, where C is the number of contracts. That order-level rounding matters most on small tickets. The main comparison still starts with the same curve: the highest fee is near 50c, not near 10c or 90c. For live cross-venue context, the gap board uses Kalshi's 0.07 rate in its displayed fee-adjusted spread math.
| Price | P x (1 - P) | 0.07 x P x (1 - P) | Displayed cents |
|---|---|---|---|
| 10c | 0.09 | 0.0063 dollars | 0.63c |
| 25c | 0.1875 | 0.013125 dollars | 1.31c |
| 50c | 0.25 | 0.0175 dollars | 1.75c |
| 75c | 0.1875 | 0.013125 dollars | 1.31c |
| 90c | 0.09 | 0.0063 dollars | 0.63c |
What does Polymarket charge?
Polymarket also lists maker fees at 0.0 and taker fees as the relevant charge. The difference is that Polymarket's rate is not one flat number across the board. Its formula is C x rate x P x (1 - P), with the rate set by market category. That is the point most stale fee pages miss.
Crypto is 0.07, which matches Kalshi's rate before rounding. Sports, culture, economics, other, and weather are 0.05. Politics, finance, mentions, and tech are 0.04. Geopolitics is 0.0. That means the same 50c price can cost 1.75c in a crypto market, 1.25c in a sports market, 1.00c in a politics market, or 0.00c in a geopolitics market.
The price curve is still the same P x (1 - P) curve. The fee is largest at 50c and lower at 10c, 25c, 75c, and 90c. The category rate decides how tall that curve is.
| Category | Rate | 50c fee per contract |
|---|---|---|
| Crypto | 0.07 | 1.75c |
| Culture | 0.05 | 1.25c |
| Economics | 0.05 | 1.25c |
| Finance | 0.04 | 1.00c |
| Geopolitics | 0.00 | 0.00c |
| Politics | 0.04 | 1.00c |
| Sports | 0.05 | 1.25c |
| Tech | 0.04 | 1.00c |
| Weather | 0.05 | 1.25c |
Which venue is cheaper at 10c, 25c, 50c, 75c, and 90c?
At the same price, Polymarket is cheaper than Kalshi in every category with a rate below 0.07, equal before rounding in crypto, and cheaper still in geopolitics. That statement is just arithmetic on the published rates. It is not a statement about available liquidity, bid-ask width, state access, or whether the market definitions match.
The table below uses one contract, one side, and the unrounded fee curve. Kalshi order-level rounding can change the charged cents on a small ticket because its published formula uses a ceiling function. Polymarket's cost changes by category, so the table shows four useful buckets: crypto at 0.07, the 0.05 categories, the 0.04 categories, and geopolitics at 0.00.
The practical bettor's answer is still line shopping. A fee edge of 0.50c at 50c does not beat a worse price by multiple cents. The fee table tells what the vig costs once the price is equal.
| Price | Kalshi 0.07 | Polymarket crypto 0.07 | Polymarket sports/other 0.05 | Polymarket politics/tech 0.04 | Polymarket geopolitics 0.00 |
|---|---|---|---|---|---|
| 10c | 0.63c | 0.63c | 0.45c | 0.36c | 0.00c |
| 25c | 1.31c | 1.31c | 0.94c | 0.75c | 0.00c |
| 50c | 1.75c | 1.75c | 1.25c | 1.00c | 0.00c |
| 75c | 1.31c | 1.31c | 0.94c | 0.75c | 0.00c |
| 90c | 0.63c | 0.63c | 0.45c | 0.36c | 0.00c |
Why does the TapeXray board rank matches at 7% before pricing them lower?
The live board has two different jobs. It compares live prices across roughly 10,900 matched pairs, and it has to do that before it can afford to read any single market's published Polymarket category rate. Reading every pair's rate up front would overrun the board's memory budget, so the fee-adjusted gap line runs in two passes.
Pass one ranks and gates every match at 7%, the conservative maximum any Polymarket category publishes. Pass two re-prices only the handful of pairs that clear the same-bet gate at that market's own published rate - 0.03 to 0.07 by category, some categories fee-free - so a pair's final number can only rise, never fall, and no pair is ever admitted at a price its real category rate would have excluded. A pair the gate rejects, shown separately as a suspect pair, keeps the 7% maximum and carries no per-market rate at all.
The displayed fee-adjusted gap formula is: fee_adjusted_cents = |mid_k - mid_p| - 200 x (0.07 x Pk x (1 - Pk) + rp x Pp x (1 - Pp)). Pk and Pp are the Kalshi and Polymarket mid prices in dollars, and rp is 0.07 in pass one or the gated pair's own category rate in pass two. The 200 multiplier reflects entry plus exit in cents across both venues.
Fork math is different. A locked fork holds to resolution, so TapeXray subtracts one-way taker fees per leg rather than a round trip. The fork net uses Kalshi ceil(7 x P x (1 - P)) cents and Polymarket PM_TAKER_FEE_RATE x P x (1 - P) x 100 cents, priced off executable YES and NO quotes rather than mids.
How big is the tape behind the comparison?
The fee schedule is static, but the usefulness of a fee comparison depends on what is actually trading. TapeXray's archive tracked 236,027 markets across two venues as of the 2026-09-21 archive update. The catalog listed 94,209 active Kalshi markets and 138,833 active Polymarket markets. It also listed 24-hour volume of $79,251,622 on Kalshi and $31,756,150 on Polymarket.
Those numbers do not mean every market can be crossed cleanly. The cross-venue board matched markets by title and rejected suspect pairs. On the 2026-09-21 board snapshot, there were 100 suspect pairs rejected, 6 pairs gated total, 4 pairs inside the fee line, and 2 pairs positive after fees. That is the usual lesson: most days there is nothing here. Fees matter most when a real price is available on both sides and the definitions match.
For venue availability by state, use the state pages. For archived market pages, use the markets hub. For plain-English fee and odds primers, use the guides hub.
Questions people ask
Is Kalshi cheaper than Polymarket?
Not usually on fees alone. Kalshi uses a flat 0.07 taker-fee rate, while Polymarket uses category rates. Polymarket crypto is also 0.07, so it is equal before rounding. Polymarket sports is 0.05, politics is 0.04, and geopolitics is 0.00, so those categories are cheaper at the same price.
Why do both fees peak at 50c?
Both schedules use the P x (1 - P) shape. At 50c, P is 0.50 and P x (1 - P) is 0.25, the largest value on the curve. At 10c or 90c, P x (1 - P) is 0.09, so the fee is lower even though the contract still pays $1 if it wins.
Do maker orders pay fees on Kalshi or Polymarket?
The verified fee documents list maker fees at 0.0 for both Kalshi and Polymarket. The comparison here is about taker fees, because takers pay the explicit trading fee. A maker order can still face execution risk, adverse selection, and a missed fill, so 0.0 maker fee is not the same as free edge.
Why does TapeXray show a 7% Polymarket maximum for most pairs on the live board?
Every match is ranked and gated at 7%, the highest published category rate, because reading each of roughly 10,900 pairs' actual category rate up front would overrun the board's memory budget. The handful of pairs that pass the same-bet gate are then re-priced at their own published rate - 0.07 for crypto, 0.05 for sports, 0.04 for politics, 0.00 for geopolitics - so the displayed number can only improve on re-pricing, never worsen.
Should a bettor choose the lower-fee venue every time?
No. The lower-fee venue can still have the worse all-in price. A 0.50c fee advantage at 50c is beaten by a 1c worse line. The bettor's calculation is the executable price, the fee, the bid-ask spread, the limits, and whether both contracts resolve on the same event definition.
Sources
Independent archive. No referral links in editorial copy, no paid placements, and nothing here is legal, tax or financial advice. Found an error? Tell us and we will date the correction.
Related reading
See today's board
Every pair on this page is scored live against the same fee line, refreshed with each deploy. No referral links, no rankings we were paid for.
Free channel: gaps at the next rebuild. Members: the instant one matching your watches, in your DM.
Get alerts (opens in a new tab)