Drop Copy Session

Overview

The drop copy session provides an alternative method to query for missed execution reports without using the FIX retransmission protocol. This is particularly useful for:
  • Recovering from connection failures
  • Auditing order activity
  • Building backup systems
  • Compliance recording
Kalshi’s DropCopy format utilizes a request-response message type, if you are interested in a session that “follows along” the execution report activity of your trading session, consider using a KalshiRT session with the ListenerFlag parameter.

Connection Details

EnvironmentURLPortTargetCompID
Productionfix.elections.kalshi.com8229KalshiDC
Demofix.demo.kalshi.co8229KalshiDC

EventResendRequest (35=U1)

Request execution reports within a specified ExecID range.

Fields

TagNameDescriptionRequired
21001BeginExecIDStarting ExecID (inclusive)Yes
21002EndExecIDEnding ExecID (inclusive)No
If EndExecID is not provided, it defaults to the latest ExecID in your history.

Limitations

  • Lookback Window: Last 3 hours only
  • Message Types: Only ExecutionReport (35=8) supported
  • Excluded Messages:
    • Rejects (no valid ExecID)
    • Pending new orders (ExecID = “-1;-1”)

Example Request

8=FIXT.1.1|35=U1|21001=12345;67890|21002=12350;67895|

EventResendComplete (35=U2)

Sent after all requested events have been resent.

Fields

TagNameDescriptionRequired
45RefSeqNumMsgSeqNum of the EventResendRequestYes
21003ResentEventCountTotal number of events resentYes

EventResendReject (35=U3)

Sent when a resend request cannot be fulfilled.

Fields

TagNameDescriptionRequired
45RefSeqNumMsgSeqNum of the EventResendRequestYes
21004EventResendRejectReasonRejection codeYes

Rejection Reasons (21004)

CodeDescription
1Too many resend requests
2Server error
3BeginExecID is too small (outside window)
4EndExecID is too large

Usage Patterns

Recovery After Disconnect

1

Track Last ExecID

Store the last processed ExecID before disconnect
2

Reconnect to Drop Copy

Establish new drop copy session
3

Request Missing Events

Send EventResendRequest starting from last ExecID
4

Process Resent Events

Handle execution reports with new sequence numbers

Best Practices

1. ExecID Management

  • Store ExecIDs persistently
  • Handle the two-part format correctly (e.g., “12345;67890”)
  • Implement proper ID comparison logic

2. Rate Limiting

  • Avoid excessive resend requests
  • Implement exponential backoff on failures
  • Batch requests when possible

3. Deduplication

  • Events may arrive via both primary and drop copy sessions
  • Implement deduplication based on ExecID
  • Handle out-of-order delivery

4. Error Recovery

  • Handle all rejection codes appropriately
  • Implement retry logic with delays
  • Alert on persistent failures

Comparison with Retransmission

FeatureDrop CopyRetransmission
Session TypeSeparateSame as order entry
Sequence NumbersIndependentOriginal preserved
Lookback Window3 hours3 hours
Message TypesExecutionReport onlyAll types
Use CaseRecovery/AuditReal-time gaps
All resent messages will have new FIX sequence numbers in the drop copy session, different from their original sequence numbers in the order entry session.