Skip to main content

FIX Drop Copy

Drop copy provides an account-level execution report stream for downstream OMS, portfolio, compliance, and risk systems.

Purpose

Use drop copy when you need a separate read-only feed of account activity:

  • order acknowledgements
  • fills
  • cancels
  • rejects
  • terminal order state
  • fee and liquidity role

Message model

Drop copy primarily emits ExecutionReport (35=8). Clients must handle repeated reports idempotently because sequence recovery can resend already processed messages.

Because FIX order entry only returns a synchronous PendingNew acknowledgement, the drop-copy stream is where real working and terminal states (fills, partial fills, cancels, rejects) are delivered. Subscribe a drop_copy/dropcopy-scoped session to receive them. See Order entry.

Delivery

Execution-stream delivery is ring-first: events are read from an in-memory per-account replay buffer (read_plane.execution_stream_replay, a bounded VecDeque whose bound is set by max_events/retention_ms), with a SQL fallback when the ring does not cover the requested range. This removes the database read from consumer fan-out; it does not remove the database write from the projection pipeline. The produce path remains write-first: events are committed and their id is derived from the database sequence, then pushed to the ring.

WebSocket ring-only delivery is tested. FIX ring-only delivery is supported but not yet covered by tests.

Session permissions

Drop copy credentials are read-only by default. They cannot place, cancel, or amend orders unless explicitly combined with an order-entry credential.

The FIX Logon scope is carried in TargetSubID(57). Use drop_copy for a drop-copy session and order_entry for an order-entry session. Use the recommended SenderCompID(49) values from FIX/BSL Connectivity Bundle unless your venue setup intentionally manages different stable session ids.

Recovery

If the drop-copy session falls behind:

  1. Request resend for the missing FIX sequence range.
  2. Reconcile account state through the HTTP API.
  3. Resume live processing after sequence continuity is restored.

Private WebSocket drop-copy metadata is also exposed through the BSL compatibility metadata endpoint:

GET /api/v1/mm/dropcopy

The current response advertises private WebSocket drop-copy metadata for clients that do not need FIX session semantics. New BSL integrations should prefer the private execution stream and gap-fill contract documented in BSL Execution Streams.