Kalshi Trade Connector
Features
fix-kalshiConnector Key✗
Order Status Request
✓
Cancel On Disconnect
✓
Commission
✓
Post Only
✓
Fast Cancel
✓
Fast Replace
Notes
Description
Kalshi FIX connector can be configured either for Predictions or Perps trading.
| Name | Host | Port | Target Comp ID |
|---|---|---|---|
| Predictions | mm.fix.elections.kalshi.com | 8228 | KalshiNR |
| Perps | margin-mm.fix.elections.kalshi.com | 8228 | KalshiNR |
Cancel On Disconnect
Kalshi supports Cancel On Disconnect and connector enables it by default: cancelOnDisconnect = true.
Connectivity
Kalshi FIX API requires secure (TLS) connection:
[KALSHI]
client = yes
accept = 18228
connect = mm.fix.elections.kalshi.com:8228
verify = 0
note
Only one FIX connection is allowed per API key. Separate API keys are required for concurrent connections.
Private Connectivity
For participants requiring network-level isolation, Kalshi supports private connectivity via AWS PrivateLink. With PrivateLink, FIX traffic is routed entirely within the AWS backbone and never traverses the public internet.
Symbology
- Markets Endpoint
https://docs.kalshi.com/api-reference/market/get-markets
Kalshi FIX does not have any specific schedule.
Sessions may be disconnected during the maintenance window. Kalshi does not initiate sequence number resets during maintenance.
Configuration
Connector settings
| Parameter | Default Value | Description |
|---|---|---|
| targetCompId | KalshiNR | TargetCompID(56). Allowed values: KalshiNR - OE session without retransmission, KalshiRT - OE session with retransmission. |
| senderCompId | SenderCompID(49). FIX API Key (UUID format). | |
| senderSubId | SenderSubID(50). Assigned value used to identify message originator. Clearing FCM sponsored access only. | |
| useTrader | false | The flag to define whether to use order TraderId as SenderSubID(50) in preference of senderSubId setting. |
| privateKey | RSA private key. | |
| cancelOnDisconnect | true | Cancel orders on any disconnection, including graceful logout. |
| messageRetentionPeriod | 24 | How long session messages are stored for retransmission, in hours. Max 72. |
| selfMatchPrevention | Self-trade prevention behavior: CANCEL_NEWEST, CANCEL_OLDEST, or CANCEL_BOTH. | |
| cancelOrderOnPause | true | Cancel order if trading is paused. |
| account | Default AllocAccount(79). Subaccount number (0–63). | |
| useAccount | false | The flag to define whether to use order account in preference of default account. |
| parties[].partyId | FCM only. Sub-account identifier. | |
| parties[].partyRole | FCM only. Allowed values: 24 - Customer Account. |
Supported order attributes
| Key | Description |
|---|---|
| 79 | AllocAccount(79). Subaccount number (0–63). |
| 50 | SenderSubID(50). Overrides senderSubId setting for a particular order request. |
| 18 | Post only. '6' value used for post only orders submission. |
| 100 | Exchange index. On event-contract sessions, omit or use -1 to auto-route by market ticker. This field should not be included for margin. It will be ignored. See Exchange Sharding. |
| 2964 | Self-Match Prevention Type. Allowed values: 1 - Cancel Taker, 2 - Cancel Maker. |
| 21006 | Cancel order if trading is paused. Allowed values: Y, N. |
Config sample
connectors {
KALSHI : ${template.connector.fix.kalshi} {
settings : {
host = "<STUNNEL_HOST>"
port = <STUNNEL_PORT>
senderCompId = "<API_KEY_UUID>"
targetCompId = "KalshiNR"
privateKey = "<PRIVATE_KEY>"
}
}
}