# Drop Copy The drop copy FIX session provides read-only visibility into order and trade activity for authorized client identifiers. Clients initiate delivery by sending a `TradeCaptureReportRequest`; the gateway responds with a `TradeCaptureReportRequestAck`. Once a request is accepted, the session streams the relevant `ExecutionReport` messages (35=8) and continues to fan out live updates until the subscription is cleared. Typical flow: 1. Client sends `TradeCaptureReportRequest (35=AD)` identifying the client IDs to monitor. 2. Gateway replies with `TradeCaptureReportRequestAck (35=AQ)` indicating whether the subscription is active or rejected. 3. When accepted, historical executions are replayed followed by live drop copy `ExecutionReport` traffic for the subscribed clients. 4. Sending another request with `SubscriptionRequestType (263)=2` clears the subscription and stops delivery. ## TradeCaptureReportRequest (35=AD) Used to start or adjust a drop copy subscription. At least one party entry with `PartyRole (452)=3` must be supplied, and each `PartyID (448)` must be a decimal client identifier that is authorized for the FIX session. | TAG | NAME | TYPE | REQ | DESCRIPTION | | --- | --- | --- | --- | --- | | 568 | TradeRequestID | string | N | Correlation identifier supplied by the client. Returned in the acknowledgement. | | 569 | TradeRequestType | int | N | Scope of data requested. Only `0 = ALL_TRADES` is supported; other values are ignored and treated as `ALL_TRADES`. | | 263 | SubscriptionRequestType | char | N | Controls subscription lifecycle:0 = Snapshot (processed as snapshot + updates)1 = Snapshot + Updates (default)2 = Disable previous subscription (clears any active client list). | | 453 | NoPartyIDs | int | Y | Number of party entries. Must be greater than zero and include at least one client identifier. | | ↳448 | PartyID | string | Y | Decimal client identifier to authorize for drop copy delivery. Multiple entries are permitted. | | ↳452 | PartyRole | int | Y | Role of the party entry. Must be `3 = Client ID`. Entries with other roles are ignored. | | 55 | Symbol | string | N | Optional symbol filter. Currently ignored. | | 167 | SecurityType | string | N | Optional security type filter. Currently ignored. | | 54 | Side | char | N | Optional side filter. Currently ignored. | If the request cannot be parsed or contains unauthorized client identifiers, the session rejects the subscription and clears the in-memory client list. ## TradeCaptureReportRequestAck (35=AQ) Returned for every trade capture request, indicating whether the subscription is active. The acknowledgement echoes identifiers from the request when they are present. | TAG | NAME | TYPE | REQ | DESCRIPTION | | --- | --- | --- | --- | --- | | 568 | TradeRequestID | string | N | Echoes the value from the request. | | 569 | TradeRequestType | int | N | Echoes the value from the request. | | 263 | SubscriptionRequestType | char | N | Echoes the value from the request. | | 911 | TotNumTradeReports | int | N | Total number of trade reports in the snapshot. Not populated for the current implementation. | | 749 | TradeRequestResult | int | Y | Outcome of the request:0 = Successful3 = Invalid parties (missing or malformed client identifiers)8 = TradeRequestType not supported9 = Unauthorized for trade capture report request99 = Other (unexpected error). | | 750 | TradeRequestStatus | int | Y | Subscription state:0 = Accepted1 = Completed2 = Rejected. | | 58 | Text | string | N | Human-readable reason (e.g., “Trade capture subscription accepted”, “No authorized client party provided”, or “Unauthorized trade capture client identifier”). | Clients must consider the request rejected when `TradeRequestStatus (750)=2` or when `TradeRequestResult (749)` is any value other than `0`. When the gateway acknowledges a disable request (`SubscriptionRequestType=2`), the result is `0` with text “Trade capture subscription cleared” and no further drop copy data is sent until a new subscription is established. ## ExecutionReport (35=8) After a subscription is accepted, the gateway replays and streams execution reports for the authorized clients. The payload mirrors the execution reports documented in the Order Entry section; key fields are summarized below. | TAG | NAME | TYPE | REQ | DESCRIPTION | | --- | --- | --- | --- | --- | | 6 | AvgPx | decimal128 | C | Present when `ExecType (150)=F` (Trade). Average execution price across fills for the order. | | 11 | ClOrdID | string | Y | Client order identifier from the originating order flow. | | 15 | Currency | string | Y | Currency for price and fee fields. | | 17 | ExecID | string | Y | Unique identifier assigned by the exchange for this execution event. | | 31 | LastPx | decimal128 | C | Present when `ExecType` indicates a fill. Price of the most recent execution. | | 32 | LastQty | decimal128 | C | Present when `ExecType` indicates a fill. Quantity of the most recent execution. | | 37 | OrderID | string | Y | Exchange-assigned order identifier. | | 38 | OrderQty | decimal128 | Y | Original order quantity. | | 39 | OrdStatus | char | Y | Current order status:0 = New1 = Partially Filled2 = Filled4 = Canceled6 = Pending Cancel8 = Rejected9 = SuspendedA = Pending NewE = Pending ReplaceC = Expired. | | 41 | OrigClOrdID | string | Y | Previous client order identifier for replace or cancel flows; unset for new orders. | | 150 | ExecType | char | Y | Execution type, matching the values documented for order entry (e.g., 0 = New, 4 = Canceled, F = Trade). | All other fields present in the order entry execution reports may also appear and retain their original semantics. Drop copy sessions never originate `ExecutionReport` messages; they only mirror activity generated by the matching engine for the subscribed client identifiers.