Bot for Kalshi
Reliability

How Bot for Kalshi executes trades.

A bot is only useful if it does what you told it, stays inside your limits, and shows you what happened. These are the safeguards running in the engine today, in plain language.

At a glance

  • Every new buy passes account-level risk checks first: a kill switch, a daily capital-at-risk cap, and per-trade, per-market and open-position caps.
  • If the engine cannot read your account, it sends no new buys.
  • Every buy carries a price limit, and by default it fills immediately up to that price or is cancelled.
  • Exit orders are sized and flagged to close what you hold, never to flip you into the other side.
  • Orders are re-sent only after a definite rate-limit rejection, with one order ID across attempts.
  • Live-score and game-event triggers ignore stale or untimestamped data.
  • Fills, fees and settled P&L come from Kalshi's own records.
  • You can test the exact rule in Paper on live prices before connecting a Kalshi API key.

Before a buy is sent

Kill switch

One account-wide switch blocks every new entry across all of your bots.

Daily capital at risk

The daily cap counts today's realized losses, the money tied up in today's still-open buys, and the new order. Fast-settling markets cannot slip past it between settlements. The default is $50 a day, and you can raise it to $500 yourself.

Per-trade, per-market and position caps

Defaults are $5 per trade, $20 per market (resting orders count), and 10 open positions. A buy that would exceed a cap is sized down to fit or not sent.

Fail closed

If the engine cannot read your positions, open orders, or today's P&L, it sends no new buy until the read succeeds.

These checks apply to new buys only. Exits are never held back by a cap, so a limit cannot trap you in a position. When the daily cap stops a bot, the bot says so and you get an email, once a day.

How orders are sent

Priced buys

Every buy names the most it will pay, and Kalshi will not fill it above that price. By default it fills immediately up to that price or is cancelled. It waits on the book only if you choose a resting order.

One position per market

By default a bot holds one position per market. Later triggers on that market are skipped until the position clears.

Close-only exits

When a stop, a hit target or a time limit triggers an exit, the sell is a reduce-only, immediate-or-cancel order with a bounded price, so it can only close what you hold. A resting take-profit is sized to the contracts you hold, with at most one resting sell per buy.

No duplicate orders

An order is re-sent only after Kalshi definitively rejects it for rate limiting, and every attempt reuses one client order ID. A timeout or dropped connection is not re-sent, because the first order may already be live. Each order's intent is recorded before it is sent.

The data a bot acts on

Live scores

Score-based bots read Kalshi's official live data and ignore readings older than 15 to 30 seconds.

Game events

NFL, NBA, MLB, NHL and soccer event triggers fire only on plays timestamped after the bot was created. A play without a timestamp never fires.

Outside sources

Weather, filings, earnings, polling and price feeds are cached with a freshness window per source. They can be delayed or unavailable, and the in-app catalog lists what each trigger supports.

After the order

Fills from Kalshi's records

Fills are matched to Kalshi's own fill records by order ID, with Kalshi's fill price and fees. Settled P&L comes from Kalshi's settlement and the market's result.

Unfilled orders are labeled

An order that left the book without filling is marked canceled. A bot that is not getting fills will not look like one still working.

Reasons, not just results

The activity log shows what fired, what was skipped and what a cap blocked, with the reason for each.

Failures reach us

A failed real-money order raises an immediate alert to our team.

Test before money moves

Paper runs your exact rule in the same engine against live Kalshi prices, with a virtual balance. It reads public market data, so you do not need a Kalshi API key to start. Paper fills are modeled from live quotes and do not prove that a real order would fill.

Your account stays yours

Funds stay in your Kalshi account, and Bot for Kalshi has no withdrawal access. You can revoke the API key at Kalshi at any time. Pausing a bot requests a stop to new actions. It does not guarantee instant exchange cancellation or close existing positions, so check open orders and positions at Kalshi. See Security & Trust for credential handling.

Common questions

Can Bot for Kalshi place the same order twice?

An order is re-sent only after Kalshi definitively rejects it for rate limiting, and every attempt reuses one client order ID. A timeout or dropped connection is not re-sent, because the first order may already be live.

What happens if Bot for Kalshi cannot read my account?

New buys stop. If the engine cannot read your positions, open orders, or today's P&L, it sends no new buy until the read succeeds.

Can a risk limit trap me in a position?

No. The account caps apply to new buys. Exits are not blocked by them, and exit orders are sized and flagged to close what you hold.

Where do the P&L numbers come from?

Fills are matched to Kalshi's own fill records by order ID, with Kalshi's fill price and fees. Settled P&L comes from Kalshi's settlement and the market's result.

What this page is, and is not

This describes controls implemented in the product as of October 23, 2026. It is not a promise of fills, uptime or profit. Safeguards reduce mistakes; they do not remove trading risk, and you can lose the full contract stake and fees. Current service health is on the Status page, and customer-facing changes are in the changelog.

See the Complete plan →