Kalshi fees follow a formula-based structure that charges more on mid-priced contracts and less at the extremes — peaking at $0.02 per contract at 50 cents. This guide breaks down every fee on the platform — taker, maker, deposit, withdrawal — and models the fee impact on automated trading strategies with exact calculations for edge thresholds and bot optimization.

How Kalshi Trading Fees Work

Kalshi uses two fee formulas — one for takers (market orders that fill immediately) and one for makers (limit orders that rest on the book). Both are functions of contract price, producing a parabolic curve that peaks at 50-cent contracts where uncertainty is highest.

Taker Fee Formula

The taker fee is calculated as:

fee = ceil(0.07 × C × P × (1 - P))

Where C is the number of contracts and P is the contract price in dollars. The ceil function rounds up to the nearest cent. At a contract price of $0.50, one contract costs ceil(0.07 × 1 × 0.50 × 0.50) = ceil($0.0175) = $0.02 — the maximum taker fee per contract.

Maker Fee Formula

Update (September 2026): Kalshi states maker fees apply only in some markets — not on every series. When a market carries maker fees, the schedule uses a coefficient of 0.0175 (exactly 25% of the standard taker rate):

fee = ceil(0.0175 × C × P × (1 - P))

Where charged, maker fees apply only to resting limit orders when they execute. Placing or canceling an unfilled order costs nothing. This distinction matters for bots — on markets that use the 0.0175 maker coefficient, a strategy that posts limit orders instead of crossing the spread pays 75% less in fees. Always read the live fee schedule for the series you trade.

Fee Per Contract at Key Price Points

This table shows the per-contract fee (1 contract) and the batch fee (100 contracts) for both taker and maker orders:

Contract PriceTaker (1)Taker (100)Maker (1)Maker (100)
$0.05$0.01$0.34$0.01$0.09
$0.10$0.01$0.63$0.01$0.16
$0.25$0.02$1.32$0.01$0.33
$0.50$0.02$1.75$0.01$0.44
$0.75$0.02$1.32$0.01$0.33
$0.90$0.01$0.63$0.01$0.16
$0.95$0.01$0.34$0.01$0.09

The parabolic shape is the key insight. Contracts priced near the extremes (5-cent or 95-cent range) cost roughly 80% less in fees than 50-cent contracts. Agents that can identify high-conviction opportunities at price extremes get a structural fee advantage.

No Settlement Fees

Kalshi charges zero settlement fees. Winning contracts pay $1.00 and losing contracts expire at $0.00 with no deductions. This is a meaningful difference from traditional sportsbooks that embed their margin (vig) into every payout. On Kalshi, the only friction is the trading fee at entry and exit.

Non-Standard Fee Markets

Not all Kalshi markets use the standard 0.07 taker coefficient. Two categories get preferential treatment, and special events sometimes carry adjusted rates.

S&P 500 and Nasdaq-100 Markets

S&P 500 (INX ticker) and Nasdaq-100 (NASDAQ100 ticker) markets use a halved taker coefficient of 0.035, cutting trading costs by 50% compared to standard markets. At 50-cent contracts, taker fees drop from $1.75 per 100 contracts to $0.88 per 100 contracts. Maker fees scale proportionally. This applies to all iterations of INX and NASDAQ100 markets — daily ranges, weekly ranges, and yearly ranges.

The reduced fee exists because these index markets attract high-frequency flow and tight spreads. Lower fees encourage liquidity provision, which benefits Kalshi’s market quality metrics. For agents running index-tracking strategies, the 50% fee reduction materially improves the edge calculation.

Special Event Markets

Elections, major championships, and awards ceremonies may carry adjusted fee schedules. Kalshi posts upcoming fee changes on its fee schedule page before they take effect. Bots should programmatically check the fee schedule endpoint or subscribe to Kalshi’s announcements channel to avoid stale fee assumptions in their edge models.

Update (September 2026): Perpetual futures use a separate volume-tiered maker/taker schedule charged on notional value (including leverage), with fees on both open and close; funding payments are not trading fees. See Kalshi help: Perps Fees Explained.

Deposit and Withdrawal Fees

Trading fees only matter if your capital is on the platform. Here is the complete cost structure for moving money in and out of Kalshi:

MethodDeposit FeeWithdrawal FeeSpeed
ACH Bank TransferFreeFreeTypically ~5 business days
Wire TransferFree (bank may charge)FreeSame day
Debit CardUp to 2%FreeInstant
PayPalFirst free; then up to 2%Free1-2 business days
VenmoFirst free; then may varyFree1-2 business days
Crypto (USDC)Network gas onlyNetwork gas onlyMinutes

Update (September 2026): Debit card withdrawals are fee-free. First PayPal deposit fee-free; later PayPal deposits may incur up to 2%. First Venmo deposit fee-free; later Venmo deposits may vary. ACH typically settles in ~5 business days (partial credit may arrive sooner).

For agents running automated strategies, the deposit method matters for capital efficiency. ACH is free but slow — full settlement can take ~5 business days. Crypto deposits via USDC settle in minutes with only network gas fees (typically under $1 on Polygon or Base). The up-to-2% debit card deposit fee is almost never worth it for serious volume: depositing $10,000 can cost $200 in fees before a single trade.

Kalshi vs Polymarket Fees

Polymarket was historically the low-fee alternative — zero trading fees on most markets. That changed on March 30, 2026, when Polymarket expanded taker fees to eight new categories including politics, finance, economics, culture, weather, tech, mentions, and general markets.

Fee Comparison by Contract Price (100 Contracts)

Contract PriceKalshi TakerPolymarket Finance/Politics (feeRate 0.04)Polymarket (geopolitics, fee-free)
$0.05$0.34$0.19$0.00
$0.10$0.63$0.36$0.00
$0.25$1.32$0.75$0.00
$0.50$1.75$1.00$0.00
$0.75$1.32$0.75$0.00
$0.90$0.63$0.36$0.00
$0.95$0.34$0.19$0.00

Update (September 2026): Polymarket column uses docs feeRate 0.04 (finance/politics/mentions/tech) vs Kalshi taker 0.07 — $1.00 vs $1.75 per 100 shares at 50¢. Sports/economics-family feeRate 0.05 peaks at $1.25; crypto 0.07 peaks at $1.75. Gap is category-specific.

Polymarket Fee Landscape (2026)

Update (September 2026): Docs feeRate: crypto 0.07, sports 0.05, finance/politics/mentions/tech 0.04, economics/culture/weather/other 0.05, geopolitics 0. Peak USDC at 50¢ per 100 shares: $1.75 / $1.25 / $1.00. Makers pay 0%; rebates 15–25% (sports 15%, crypto 20%, most others 25%). Geopolitics remains fee-free. Live schedule: Polymarket fees docs.

Annual Fee Drag at Scale

For a bot trading exclusively on fee-enabled markets (all-taker, average contract price 50¢; monthly volume = notional traded):

Monthly VolumeKalshi Annual Fee DragPolymarket Finance/Politics AnnualKalshi Premium
$1,000/mo (avg 50¢)$420$240$180
$10,000/mo (avg 50¢)$4,200$2,400$1,800
$100,000/mo (avg 50¢)$42,000$24,000$18,000

Update (September 2026): Peak-at-50¢ math — Kalshi 3.5% of notional ($1.75/$50) vs Polymarket finance/politics 2.0% ($1.00/$50), annualized. Prior rows understated both columns by ~10× vs that peak math. Where Kalshi maker fees apply at 0.0175, makers pay 25% of taker; Polymarket makers get 15–25% rebates. See Kalshi vs Polymarket.

Fee-Adjusted Edge for Agents

The fee-adjusted edge threshold is the minimum probability advantage a bot needs to be profitable after fees. This is the number that determines whether a signal is worth trading.

The Core Calculation

For a binary contract at price P with taker fee coefficient k:

required_edge = k × P × (1 - P) / (P × (1 - P))
required_edge = k

Wait — that simplifies too cleanly. The real calculation depends on what “edge” means in context. For a bot that buys a Yes contract at price P believing the true probability is P + edge:

import math

def kalshi_taker_fee(contracts: int, price: float, coefficient: float = 0.07) -> float:
    """Calculate Kalshi taker fee in dollars."""
    return math.ceil(coefficient * contracts * price * (1 - price) * 100) / 100

def required_edge(price: float, coefficient: float = 0.07) -> float:
    """Minimum probability edge to break even after fees on a single contract.

    Edge = fee_per_contract / expected_payout_sensitivity
    At price P, buying 1 Yes contract:
      - Cost: P + fee
      - Win payout: $1.00
      - Break-even true probability: (P + fee) / 1.00
      - Required edge: fee / 1.00 = fee per contract
    But fee itself depends on P, so:
    """
    fee = kalshi_taker_fee(1, price, coefficient)
    # Edge needed: the fee as a fraction of the contract range
    # True prob must exceed price by at least fee to break even
    return fee  # in dollars — convert to percentage of $1 contract

def fee_table():
    """Print fee-adjusted edge at key price points."""
    prices = [0.05, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95]
    print(f"{'Price':>6} {'Taker Fee':>10} {'Maker Fee':>10} {'Taker Edge%':>12} {'Maker Edge%':>12}")
    print("-" * 52)
    for p in prices:
        taker = kalshi_taker_fee(1, p, 0.07)
        maker = kalshi_taker_fee(1, p, 0.0175)
        # Required edge as percentage points
        taker_edge = taker * 100  # fee in cents = edge in percentage points
        maker_edge = maker * 100
        print(f"{p:>6.2f} {taker:>10.4f} {maker:>10.4f} {taker_edge:>11.2f}% {maker_edge:>11.2f}%")

fee_table()

Running this produces the minimum edge required at each price point:

Contract PriceTaker FeeRequired Edge (Taker)Required Edge (Maker)
$0.05$0.011.0%1.0%
$0.10$0.011.0%1.0%
$0.25$0.022.0%1.0%
$0.50$0.022.0%1.0%
$0.75$0.022.0%1.0%
$0.90$0.011.0%1.0%
$0.95$0.011.0%1.0%

At 50-cent contracts, a taker needs at least 2 percentage points of edge to break even. Where maker fees apply at the 0.0175 coefficient, a maker needs just 1 point. At price extremes, both converge to the 1-cent minimum fee floor, so the required edge is 1% regardless of strategy.

Practical Example: News-Sentiment Bot

Consider a news-sentiment bot that places 50 taker trades per day at an average contract price of 50 cents, buying 3 contracts per trade:

daily_trades = 50
contracts_per_trade = 3
avg_price = 0.50

daily_fee = sum(
    kalshi_taker_fee(contracts_per_trade, avg_price)
    for _ in range(daily_trades)
)
monthly_fee = daily_fee * 30
annual_fee = daily_fee * 365

print(f"Fee per trade: ${kalshi_taker_fee(contracts_per_trade, avg_price):.2f}")
print(f"Daily fee drag: ${daily_fee:.2f}")
print(f"Monthly fee drag: ${monthly_fee:.2f}")
print(f"Annual fee drag: ${annual_fee:.2f}")
# Output:
# Fee per trade: $0.06
# Daily fee drag: $3.00
# Monthly fee drag: $90.00
# Annual fee drag: $1,095.00

At $1,095 annually, fees eat into any strategy that does not maintain consistent edge. On markets that charge maker fees at the 0.0175 coefficient, switching to maker orders drops this to roughly $274 per year — a 75% reduction that often makes the difference between a profitable and unprofitable bot. For Kelly Criterion-based position sizing, the fee drag must be subtracted from the expected edge before computing optimal bet size.

Fee Rounding for Subpenny and Fractional Markets

Markets with subpenny pricing (tapered_deci_cent or deci_cent tick structures) and fractional contracts produce sub-cent balance changes on fills. Kalshi resolves this with a three-component fee system per fill:

ComponentDescription
Trade feeStandard fee from the formula, rounded up to the nearest $0.0001
Rounding feeSub-cent adjustment ($0.0000-$0.0099) that restores cent-alignment
RebateRefund from accumulated rounding overpayment (always a multiple of $0.01)

Net fee = trade fee + rounding fee - rebate (always >= $0.00)

A fee accumulator tracks cumulative rounding overpayment across all fills of an order. Once the accumulator exceeds $0.01, a whole-cent rebate is issued. This ensures the total fee across many small fills converges to what a single equivalent fill would cost.

For example, buying 3 contracts at $0.055 (three 1-lot matches) produces rounding fees of $0.0065 per fill. On the second fill, the accumulator hits $0.013, triggering a $0.01 rebate that offsets most of that fill’s fee.

Settlement rounding also applies: when a position settles, the raw payout is floored to the nearest cent, and the fractional remainder is recorded as a settlement fee (always less than $0.01).

Bots reconciling fills cannot simply multiply price x quantity to get expected balance changes — the rounding fees and rebates must be accounted for. Use Decimal arithmetic and track the accumulator per order.

Fee Optimization Strategies for Bots

Reducing fee drag is one of the highest-leverage optimizations for any automated Kalshi trading bot. Here are the strategies that matter most.

Use Maker Orders When Latency Allows

The single biggest fee reduction on markets that charge maker fees: switch from market orders to limit orders. Where the 0.0175 maker coefficient applies, maker fees are 25% of taker fees. If your signal does not require instant execution — and most do not — posting a limit order at or near the current best offer can save 75% on fees. The Kalshi API supports limit orders with time-in-force parameters that let bots control how long orders rest on the book.

Target Price Extremes

Contracts near 5-15 cents or 85-95 cents carry the lowest absolute fees. A bot that focuses on high-conviction tail events pays $0.01 per contract (taker) regardless of volume. Combined with maker orders, the fee per contract at these prices rounds down to near zero on batch orders.

Batch Orders for Volume Efficiency

The ceil function in Kalshi’s formula means small orders overpay relative to large ones. One contract at 50 cents costs $0.02 (taker), but 100 contracts cost $1.75 — not $2.00. The rounding penalty is largest on single-contract trades. Bots should batch orders where possible to avoid per-contract rounding overhead.

Cross-Platform Fee Arbitrage

When the same event trades on both Kalshi and Polymarket, the fee spread creates arbitrage opportunities. If Kalshi Yes is at 52 cents and Polymarket No is at 47 cents (implying 53 cents Yes), the 1-cent spread might be eaten by fees on one platform but not the other. Bots running cross-market strategies must compute fee-adjusted expected value on both sides before executing. The Polymarket fee expansion on March 30, 2026 narrows the fee gap — previously zero-fee Polymarket categories now carry costs that make some arbitrage windows viable on Kalshi that were not before.

Monitor the Fee Schedule Programmatically

Kalshi publishes its fee schedule at kalshi.com/fee-schedule and includes fee parameters in its API responses. Bots should pull fee coefficients dynamically rather than hardcoding 0.07 and 0.0175 — maker fees are not universal. This is especially important for S&P 500 and Nasdaq-100 markets where the coefficient is 0.035, for special event markets where Kalshi may temporarily adjust rates, and for perpetual futures which use a separate volume-tiered maker/taker schedule on notional. Agents that set up automated Kalshi trading should include fee schedule checks in their initialization logic to avoid stale fee assumptions.

For a broader view of how fees fit into the overall trading layer architecture, see the prediction market trading layer guide. Agents on the Kalshi platform should treat fee optimization as a core component of their execution engine, not an afterthought.

Frequently Asked Questions

How much does Kalshi charge per trade?

Kalshi charges formula-based taker fees capped at $0.02 per contract. The exact fee depends on the contract price — 50-cent contracts have the highest fee, while contracts near 1 cent or 99 cents have the lowest.

Does Kalshi charge settlement fees?

No. When your contract settles at $1 or $0, the payout is made with no additional fees.

Are Kalshi fees higher than Polymarket?

It depends on the category. Polymarket charges no fee on geopolitics and pays makers rebates of 15–25% by category, but docs publish category feeRate values (crypto 0.07, sports 0.05, finance/politics/mentions/tech 0.04, economics/culture/weather/other 0.05). At 50¢, peak USDC per 100 shares is $1.75 crypto / $1.25 sports / $1.00 finance-politics-tech versus Kalshi’s $1.75 taker — so Kalshi is higher than finance/politics and roughly even with crypto.

How can I reduce fees on Kalshi?

Where a market charges maker fees, use maker orders (limit orders that rest on the book) instead of taker orders — maker fees are lower and only charged when the order fills. Also target contracts near price extremes where fees are lowest, and pull live fee coefficients from the schedule rather than hardcoding.

Does Kalshi charge for deposits?

ACH bank transfers and wire transfers are free. Debit card deposits may incur a 2% processing fee. The first PayPal deposit is fee-free; subsequent PayPal deposits may incur fees up to 2%. Crypto deposits are free from Kalshi but subject to blockchain network fees.