Kalshi vs Polymarket for Automated Trading: API, Fees, Rate Limits and Access Compared

If you want a program to place prediction-market trades for you, the two names that come up first are Kalshi and Polymarket. Both run a central limit order book, both price contracts between 1¢ and 99¢, and both now charge a taker fee shaped the same way. But the plumbing a bot has to deal with is very different: how you sign in to the API, what currency you hold, where you are allowed to trade from, and how fees round on small orders.

This guide compares the two strictly from the point of view of someone automating trades. Every fee number and API detail below was checked against Kalshi's and Polymarket's own documentation on October 14, 2026. Docs change, so re-check before you build.

The short version

Kalshi Polymarket (international)
What it is Describes itself as a regulated exchange; US dollar accounts Order book on the Polygon network; balances in USDC
API sign-in Key pair (Ed25519 or RSA); every request signed Wallet signature (EIP-712) to create keys, then HMAC-SHA256 signed requests
Taker fee formula 0.07 × C × P × (1 − P), rounded up C × feeRate × P × (1 − P); feeRate 0.07 for crypto, 0 to 0.05 elsewhere
Maker fee None on most markets; 0.0175 × C × P × (1 − P) on markets listed for maker fees Never charged; makers can earn rebates
Practice environment Separate demo API (external-api.demo.kalshi.co) No separate demo exchange in the docs we checked
US access Built for US customers Docs list the United States as close-only on the frontend and the API

For a trader based in the United States, that last row settles most of the question before fees even come up. The rest of this article explains each row so you can see what it means for a bot.

1. Authentication: what your bot has to hold

Kalshi: one key pair, every request signed

Kalshi API keys are asymmetric key pairs. You create one in your account settings (Ed25519 is the default; RSA 2048 is offered for older clients), or you generate your own pair locally and register only the public half. Kalshi does not store your private key, so if you lose it you create a new one.

Every request to the trading API carries three headers: the key ID, a millisecond timestamp, and a signature over timestamp + HTTP method + path. One detail that trips people up: you sign the path without the query string. A request to /trade-api/v2/portfolio/orders?limit=5 is signed as /trade-api/v2/portfolio/orders.

For a bot, this is simple to run: one secret file on the machine, no wallet, no gas, and the same code works against the demo environment by changing the base URL. Our Kalshi API tutorial walks through reading prices with Python.

Polymarket: wallet first, then API credentials

Polymarket's order book API (the CLOB) uses two layers. First, the wallet that controls your Polygon address signs an EIP-712 message proving you control it. That signature is used to create or re-derive a set of API credentials: an API key, a secret and a passphrase. After that, each private request is signed with HMAC-SHA256 over the timestamp, method, path and body, and sent with five POLY_ headers.

Placing an order needs both: the HMAC credentials authenticate the request, and a wallet signature authorizes the order itself. So a Polymarket bot has to keep a wallet private key available on the machine that trades, which is a bigger thing to protect than a single exchange API key. Polymarket also runs a relayer so wallets do not need to hold POL for gas.

2. Fees: the same curve, different rounding

Both venues charge the taker a fee proportional to P × (1 − P), which is largest at 50¢ and shrinks toward 1¢ and 99¢. That is not a coincidence of wording: at the crypto rate, the formulas are numerically identical.

Kalshi

Kalshi's published fee schedule gives the general trading fee as round up(0.07 × C × P × (1 − P)), where C is the number of contracts and P is the price in dollars. Some products have their own schedules, so check the contract you trade. Orders that rest on the book are not charged unless the market is listed in the maker-fee section, where the rate is 0.0175. There is no settlement fee and no fee to cancel a resting order.

Polymarket

Polymarket's docs give fee = C × feeRate × P × (1 − P), charged only to takers. The fee rate depends on the market's category: 0.07 for crypto, 0.05 for sports, economics, culture, weather and general markets, 0.04 for finance, politics, mentions and tech, and 0 for geopolitics. Makers are never charged and receive a share of fees back through a rebate program (20% for crypto markets).

Worked example: 100 contracts at 50¢

  • Kalshi: 0.07 × 100 × 0.50 × 0.50 = $1.75 (Kalshi's own table shows $1.75).
  • Polymarket crypto market: 100 × 0.07 × 0.50 × 0.50 = $1.75 (Polymarket's table shows $1.75).
  • Polymarket sports market: 100 × 0.05 × 0.25 = $1.25.

Where they differ: small orders

Kalshi rounds the fee up. Its own table shows a single contract at 50¢ costing a $0.02 fee, not 1.75¢. Polymarket rounds fees to five decimal places, so one share at 50¢ pays 0.0175 USDC. If your bot sends many one-contract orders, Kalshi's rounding raises your effective cost; batching into larger orders brings it back toward the formula.

Breakeven win rate for a taker who holds to settlement

A contract that wins pays $1. If you buy at price P as a taker, your cost per contract is P + 0.07 × P × (1 − P), so that is also the share of trades you must win just to break even (crypto rate, large orders, before spread):

Entry price Fee per contract Breakeven win rate
30¢ 1.47¢ 31.47%
50¢ 1.75¢ 51.75%
70¢ 1.47¢ 71.47%
90¢ 0.63¢ 90.63%

If your bot exits before settlement instead of holding, it pays a taker fee on both legs. Buying at 50¢ and selling at 60¢ costs 1.75¢ + 1.68¢ = 3.43¢ per contract in fees, about a third of the 10¢ move. Our full breakeven table and the maker vs taker guide go further on this.

3. Rate limits: how fast a bot may act

Kalshi meters authenticated requests with token buckets. Most requests cost 10 tokens. There are separate Read and Write budgets, and your tier sets the refill rate. The entry Basic tier refills 200 read tokens and 100 write tokens per second, so roughly 10 order actions per second. Advanced (300/300) is available by calling an upgrade endpoint, and higher tiers are earned from trading volume. Going over returns HTTP 429 with no cooldown penalty; the docs recommend exponential backoff. Batch endpoints do not save tokens, because each order in a batch is billed separately.

For a bot trading a handful of 15-minute markets, the Basic tier is plenty. Rate limits start to matter when you quote both sides of many markets at once.

4. Where you can trade from

This is the part people skip, and it is the one that matters most. Polymarket's developer docs publish a geoblock endpoint (GET https://polymarket.com/api/geoblock) and a list of restricted jurisdictions. As of today that list puts the United States, the United Kingdom, France, Germany, Australia and others in the close-only group on both the frontend and the API: you can close positions but cannot open new ones. Orders from blocked regions are rejected.

Kalshi is built for US customers with US dollar accounts and bank deposits. If you are in the US and want an automated strategy that opens new positions, Kalshi is the venue the documentation supports. Polymarket also runs a separate US venue: the CFTC's filings list QCX LLC, doing business as Polymarket US, as a designated contract market. It has its own onboarding and is not the international order book whose API is compared in this article, so check its own documentation if you plan to automate there. Do not try to route around a geoblock. It breaks the venue's terms, and a bot that relies on it can be shut out with positions still open.

5. Market data and practice

Both venues publish market data without credentials. Kalshi's public endpoints list series, events, markets and order books, and the same API runs in a demo environment with play money. Polymarket splits discovery (the Gamma API), order books and trading (the CLOB API), analytics (the Data API) and WebSocket streams for books and user updates.

For practice, Kalshi's demo environment is the closest thing to a free rehearsal. Treat demo results with care, though: demo order books are thinner and fill differently from live ones. We explain the gap in paper trading vs live.

6. What this means if you are choosing where to automate

  1. Start with location. If you are in a close-only jurisdiction on Polymarket, the comparison ends there.
  2. Price the fees for your style. At the crypto rate, takers pay the same on both. Polymarket's sports and politics rates are lower, and its makers pay nothing. Kalshi's rounding hurts one-contract orders.
  3. Count the secrets you must protect. Kalshi needs one API private key. Polymarket needs a wallet key plus API credentials on the trading machine.
  4. Rehearse before real money. Run the logic on paper or in a demo first, then go live small and compare live fills with what paper showed.
  5. Measure against breakeven, not P&L alone. A strategy that wins 52% of 50¢ trades is barely above the 51.75% line. A losing streak can be ordinary variance, and so can a winning one.

Where DeskBot fits

DeskBot is automated trading software for Kalshi's 15-minute markets. It runs on your own Mac or Windows computer and connects to your own Kalshi account through your API key, then places or skips trades by the rules you set. You choose the settings and decide whether it trades. DeskBot for Kalshi is $19.99 a month. Before paying for any bot, ours included, read our 8-point checklist.

FAQ

Are Kalshi and Polymarket fees the same?

For takers on crypto markets, the formulas match: 0.07 × contracts × price × (1 − price), or $1.75 on 100 contracts at 50¢. Polymarket charges less on most other categories and nothing on geopolitics, never charges makers, and rounds to five decimals. Kalshi rounds fees up, so a single contract at 50¢ pays $0.02.

Can I use a Polymarket bot from the United States?

Polymarket's developer docs list the United States as close-only on both the frontend and the API, which means existing positions can be closed but new ones cannot be opened. Check the geoblock endpoint and Polymarket's current terms for your location. Polymarket US, a separate CFTC-registered exchange, has its own onboarding and access rules.

How does Kalshi API authentication work?

You create an Ed25519 or RSA key pair and sign each request. The signature covers the timestamp, the HTTP method and the path without query parameters, and is sent with your key ID and timestamp in three KALSHI-ACCESS- headers.

How many orders per second can a Kalshi bot send?

On the Basic tier, the Write budget refills at 100 tokens per second and most orders cost 10 tokens, so about 10 order actions per second. Higher tiers raise that.

Does Kalshi have a test environment?

Yes. Kalshi runs a demo environment with the same API at a separate base URL, and API keys are created the same way there.

Do I pay a fee when a contract settles?

Not on Kalshi: its fee schedule lists no settlement fee. You pay the trading fee when your order matches, and a winning contract pays $1.

Is a bot a guaranteed way to make money on prediction markets?

No. A bot follows rules faster and more consistently than a person can, but fees and spread mean most strategies need a real edge to beat breakeven. Many strategies don't have one.

Risk: Trading on Kalshi or Polymarket involves risk, and you can lose money. There are no guaranteed results, and past or paper results do not predict future results. DeskBot is not affiliated with or endorsed by Kalshi or Polymarket. Fee and API details were taken from Kalshi's and Polymarket's published documentation on October 14, 2026. Check the current terms before trading.