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:
- Request resend for the missing FIX sequence range.
- Reconcile account state through the HTTP API.
- 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.