# Cboe Titanium U.S. Equities BOE Specification

Version 2.4.56 · August 4, 2026

## Introduction

This document describes Cboe Binary Order Entry (BOE), the Cboe proprietary order entry protocol.

Where applicable, the terminology (e.g., time in force) used in this document is similar to that used by the FIX protocol to allow those familiar with FIX to more easily understand BOE. This document assumes the reader has basic knowledge of the FIX protocol.

BOE fulfills the following requirements:

- CPU and memory efficiency. Message encoding, decoding, and parsing are simpler to code and can be optimized to use less CPU and memory at runtime.
- Application level simplicity. State transitions are simple and unambiguous. They are easy to apply to a Member’s representation of an order.
- Session level simplicity. The session level protocol (login, sequencing, replay of missed messages, logout) is simple to understand.

- CPU and memory efficiency. Message encoding, decoding, and parsing are simpler to code and can be optimized to use less CPU and memory at runtime.
- Application level simplicity. State transitions are simple and unambiguous. They are easy to apply to a Member's representation of an order.
- Session level simplicity. The session level protocol (login, sequencing, replay of missed messages, logout) is simple to understand.

While Cboe strives to preserve feature parity between FIX and BOE where possible, some features may only be available in one protocol or the other.

All binary values are in little Endian (used by Intel x86 processors), and not network byte order.

Each message is identified by a unique message type. Not all message types are used in all of Cboe’s trading environments globally. A listing of the supported message types is provided in List of Message Types.

All communication is via standard TCP/IP.

### Certification Requirement

All customers must complete a formal certification in the appropriate Cboe Certification test environment before production orders or quotes will be accepted by Cboe. Formal certification scripts can be found in the Cboe Customer Web Portal. Customers may complete the formal certification using the Certification Tool app and selecting the applicable certification script. Customers are advised to test all functionality they plan to use in production in the Cboe Certification test environment.

### Data Types

The following data types are used by BOE. The size of some data types varies by message. All data types have default values of binary zero, in both Member to Cboe and Cboe to Member contexts.

- Binary: Little Endian byte order, unsigned binary value. The number of bytes used depends on the context.
  - One byte: `FE`=254
  - Four bytes: `64 00 00 00`=100
- Signed Binary: Little Endian byte order, signed two's complement, binary value. The number of bytes used depends on the context.
  - One byte: `DF`=-33
  - Four bytes: `64 00 00 00`=+100
- Binary Price: Little Endian byte order value, signed two's complement, eight bytes in size, with four implied decimal places. So, if the value is 123,400, the actual value taking into account implied decimal places is -12.34.
  - `08 E2 01 00 00 00 00 00`=123,400/10, `000`=12.34
  - `F8 1D FE FF FF FF FF FF`= -123,400/10, `000`=-12.34
- Short Binary Price: Little Endian byte order value, signed two's complement, four bytes in size, with four implied decimal places. So, if the value is 12,300, the actual value taking into account implied decimal places is 1:23.
  - `0C 30 00 00`=12,300/10, `000`=1.34
- Signed Binary Price: Little Endian byte order value, signed two's complement, eight bytes in size, with four implied decimal places. So, the value is -123,400 is -12.34 after taking account for the four implied decimal places.
  - `08 E2 01 00 00 00 00 00`=123,400/10, `000`=12.34
  - `F8 1D FE FF FF FF FF FF`=-123,400/10, `000`=-12.34
- Signed Binary Fee: Little Endian byte order value, signed two's complement, eight bytes in size, with five implied decimal places. So, the value is -123,000 is -1.23 after taking account for the five implied decimal places.
  - `88 1F FE FF FF FF FF FF`=-123,000/100, `000`=-1.23
- Alpha: Uppercase letters (A-Z) and lowercase letters (a-z) only. ASCII NUL (0x00) filled on the right, if necessary. The number of bytes used depends on the context.
- Alphanumeric: Uppercase letters (A-Z), lowercase letters (a-z) and numbers (0-9) only. ASCII NUL (0x00) filled on the right, if necessary.
- Text: Printable ASCII characters only. ASCII NUL (0x00) filled on the right, if necessary.
- DateTime: 8 bytes. The date and time, in UTC, represented as nanoseconds past the UNIX epoch (00:00:00 UTC on 1 January 1970).
  - For example: 1,294,909,373,757,324,000 = 2011-01-13 09:02:53.757324 UTC.
- Date: Little Endian byte order, unsigned binary value, 4 bytes in size. The YYYYMMDD expressed as an integer.

### Optional Fields and Bit fields

Some messages such as `New Order` and `Modify Order` messages have a number of optional fields. A count and number of bitfields in the message specify which optional fields will be present at the end of the message. If a bit is set, the field will be present. Fields are appended to the end of the message. There is no implicit framing between the optional fields. In order to decode the optional fields, they must be appended in a particular order to the end of the message. The fields of the first bitfield are appended first, lowest order bit first. Next, the fields of the next bitfield are appended, lowest order bit first. This continues for all bitfields. While certain reserved bits within a defined bitfield are used within another Cboe market and will be ignored, bits that are reserved for future expansion must be set to 0 when noted in the bitfield description.

The size, data type, and values for each field are described in the List of Optional Fields.

Note that the set of optional fields returned for each Cboe to Member message type is determined at session login (using the `Login Request` message); hence, the exact size and layout of each message received by the client application can be known in advance. Any requested optional field which is irrelevant in a particular context will still be present in the returned message, but with all bytes set to binary zero (0x00).

Each return message from Cboe to Member indicates the optional fields which are present, even though the Member indicated during login which optional fields are to be sent. The reason for the inclusion (and duplication) is so that each message can be interpreted on its own, without having to find the corresponding login request or response to know which optional fields are present. So, for example, in a log file, decoding a message requires only that single message.

Example messages are shown with each message type which should help to make this concept clear.

### Hours of Operation

All times noted are Eastern Time zone (ET) based.

Refer to the website for the Cboe Holiday schedule.

BZX Exchange supports an opening and closing auction for BZX Exchange listed securities (refer to the Cboe Titanium U.S. Equities Auction Process Specification for more information).

Orders entered prior to the start of the Pre-Market or Regular Trading Session which are accepted will be queued for trading in the session designated by the order. Once trading begins, queued orders will be released to the respective book and crossing orders will be matched by time priority. Refer to the Cboe Titanium U.S. Equities Opening Process Specification for more information.

Orders are rejected if they are received outside the hours Cboe is available for trading or queuing. All orders remaining after the Post Market Session will be cancelled automatically (Execution Reports will be delivered).

Product and session trading hours can be found on the Cboe website.

### Protocol Features

For a full list of supported order types and relevant fields please refer to the Order Types and Features section in the Cboe Titanium U.S. Equities FIX Specification.

The exchange does not guarantee messages sent by Members/TPHs to the exchange, including through protocols such as TCP. Members/TPHs are responsible to monitor the status of the messages they send to the exchange.

#### Architecture and Message in Flight Settings

Each BOE order handler process will allow a single TCP connection from a member. Connection attempts from unknown source IP ranges will be blocked to prevent unauthorized access to BOE ports. The Cboe NOC should be contacted in the event that a Member desires to connect from a new source IP range.

Each BOE order handler will connect, using a proprietary UDP protocol, to all matching units. Connections from order handlers to matching engines are latency equalized. The connections between order handlers and matching units are governed by an internal flow control mechanism to control burst rates.

The number of messages in flight between each order handler and matching engine is 32. In addition, when the total number of unacknowledged messages exceeds 1,024, the BOE order handler will stop reading from the member-facing TCP socket. This will cause the order handler to stop removing bytes from the TCP receive buffer, and will prevent the member from sending more TCP data once the member’s send buffer is full.

When the total number of unacknowledged messages falls below 960, the reading of the member facing TCP socket will be resumed.

For message in flight counting purposes each new order, cancel/replace, or cancel message will count as one message.

Cboe may either update the message in flight or the total number of unacknowledged messages settings with notice. Changes to reduce either limit will be made only with two weeks’ notice. Cboe reserves the ability to increase either limit immediately with notice.

#### Dedicated Cores

Cboe offers an optional Dedicated Cores service that allows Members and Sponsored Access Participants to host their specific BOE logical order entry ports on their own dedicated CPU core(s). By utilizing the full processing power of a dedicated CPU core — rather than sharing a core among multiple logical order entry ports on a given server — Dedicated Cores may provide reduced latency, enhanced throughput, and improved performance.

Firms may operate across a mix of shared and dedicated CPU cores, enabling additional flexibility for risk and capacity management. There are no changes to the BOE order entry protocol associated with the use of Dedicated Cores.

Each Dedicated Core supports a single BOE logical port. When requesting a new BOE logical port, firms wishing to utilize this service must request that the new logical port be hosted on a Dedicated Core. Risk settings for BOE logical ports on Dedicated Cores can be managed independently; firms utilizing such ports are encouraged to confirm risk settings prior to use.

- The maximum number of Dedicated Cores allowed for each Member is 170.
- The maximum number of Dedicated Cores for each Sponsored Access Participant access relationship with a Sponsoring Member is 85.

Firms may request Dedicated Cores using the Logical Port Request Tool within the Cboe Customer Web Portal. Standard monthly logical port fees apply in addition to applicable Dedicated Core fees. For current fee schedules, refer to the applicable U.S. Equities Exchange fee schedule.

#### Cboe Market Close (BZX Only)

Cboe Market Close on the BZX Exchange allows for Members to submit buy and sell Market-On-Close orders designated for participation in CMC in order to obtain the official closing price for any matched shares. Any remaining shares will be cancelled back to Members.

At 2:30 a.m. ET, Members may enter new orders to participate in CMC. Members will populate the following BOE fields to send a CMC order.

**Table 1. CMC `New Order` Fields**

| Field Name | Req'd | Description |
|---|---|---|
| OrdType | Y | `1` = Market |
| TimeInForce | Y | `7` = At the Close |
| RoutingInst | Y | `B` = Book Only |
| CmcSessions | N | `A` = 3:15 p.m. `D` = 3:30 p.m. `L` = 3:49 p.m. `S` = 3:54 p.m. (Nasdaq-listed only) |

An `Order Restated` message will be sent for any fully or partially matched CMC order after the order executes in a CMC matching session. A standard `Order Canceled` message will be sent for any CMC order that does not have any matched quantity after the final CMC session when the eligible order has finished. The restatement will contain the following fields:

**Table 2. CMC `Order Restated` Fields**

| Field Name | Description |
|---|---|
| RestatementReason | `C` = CMC Restatement |
| LastShares | Number of Shares Cancelled (if any) |
| LeavesQty | Quantity of unexecuted shares. Will include shares already matched in a previous session. |
| CmcMatchQty | Matched size for CMC matching session. |

After the closing price is received one or more `Order Execution` messages, totaling the sum of the matched size from each restatement, will be sent for each CMC order. The execution message will contain the following fields:

**Table 3. CMC `Order Execution` Fields**

| Field Name | Description |
|---|---|
| LastShares | Execution Size |
| LastPx | Execution Price (official close price) |

If a closing price is not received from the primary listing exchange by 8:00 p.m. ET, then all CMC matched shares will be cancelled. In the event that a closing price is updated by the primary listing exchange after its initial publication, then a Trade Cancel or Correct message will be sent to update the execution price for each CMC execution impacted by the changed closing price. As a result, all firms that wish to submit CMC orders must be certified for Trade Cancel or Correct messages on BOE before they will be allowed to submit CMC orders.

#### Periodic Auctions (BYX Only)

The Periodic Auction process is a price forming auction that runs for a fixed time period of 100 milliseconds and is only available during the regular trading session. A Periodic Auction starts when two opposite side Periodic Auction orders of either type can match. Continuous book displayed and non-displayed orders are not eligible to initiate a Periodic Auction but may be swept into the auction at the end of the auction process. Members can populate the following instructions to send a Periodic Auction order.

**Table 1. Periodic Auctions Fields**

| Field Name | Req’d | Description |
|---|---|---|
| CrossTradeFlag | Y | Can be entered on individual orders or as a port setting. `0` = None (to override port settings if necessary) `1` = Periodic Auction Only `2` = Periodic Auction Eligible |
| TimeInForce | Y | `R` = Regular Hours only (Required for Periodic Auction Only orders) All TIFs except FOK and IOC supported for Periodic Auction Eligible orders. |
| DisplayIndicator | Y | `I` = Invisible |
| MinQty | N | Minimum total fill quantity, which may be made up of several consecutive smaller fills. If Enable True MinQty port attribute is set to ‘Yes’, orders will be converted into standard MinQty during a Periodic Auction. Periodic Auction Eligible orders will remain as True MinQty in the continuous book. |
| ExecInst | N | If OrdType (40) = P, only the following are accepted for Periodic Auction Only orders: `R` = Primary Peg `M` = Midpoint Peg If OrdType (40) = P, all instructions allowed for Periodic Auction Eligible orders. If ExecInst = m, the ‘No Trade in a Locked Market’ instruction will only be applied when the PAE order is live in continuous book trading and will not apply to either initiating a Periodic Auction or to executing at the conclusion of the Periodic Auction. |
| PegDifference | N | For Periodic Auction Only Orders, aggressive offsets only for primary peg orders. Orders with passive offsets will be rejected. No restrictions for Periodic Auction Eligible Orders. |

The Execution Report will contain a new SubLiquidityIndicator value for Periodic Auction orders.

**Table 2. Periodic Auctions Execution Report Field**

| Field Name | Req’d | Description |
|---|---|---|
| SubLiquidityIndicator | Y | `P` = Periodic Auction |

#### Maximum Open Order Limits

The exchange limits the maximum number of open orders allowed on a BOE port to 100,000 per port (BYX/EDGA) and 300,000 per port (BZX/EDGX). New orders will be rejected once this limit is breached until the number of open orders drops back below the limit.

#### Stale NBBO

A stale NBBO will occur when the Cboe trading system determines that one or more SIP quote channels is impaired or down completely. If the trading system detects that an NBBO is stale, new orders for the affected symbol(s) will be rejected. Any existing orders will remain on the book but will not be allowed to update (user updates, peg movements, or sliding updates). Members will be allowed to cancel any open orders. Regular trading will resume when the NBBO for a given symbol is determined to be healthy by the Cboe trading system.

## Session

### Message Headers

Each message has a ten byte header. The two initial StartOfMessage bytes are present to aid in message reassembly for network capture purposes. The MatchingUnit field is only populated on sequenced, non-session level messages sent from Cboe to the Member. Messages from Member to Cboe and all session level messages must always set this value to 0.

**Table 1. Message Header Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | Message type. |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. For session level traffic, the unit is set to 0. For messages from Member to Cboe, the unit must be 0. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Messages from Cboe to Member are sequenced distinctly per matching unit. Messages from Member to Cboe are sequenced across all matching units with a single sequence stream. Member can optionally send a 0 sequence number on all messages from Member to Cboe. Cboe highly recommends that Members send sequence number on all inbound messages. |

### Login, Replay and Sequencing

Session level messages, both inbound (Member to Cboe) and outbound (Cboe to Member) are unsequenced.

Inbound (Member to Cboe) application messages are sequenced. Upon reconnection, Cboe informs the Member of the last processed sequence number; the Member may choose to resend any messages with sequence numbers greater than this value. A gap forward in the Member's incoming sequence number is permitted at any time and is ignored by Cboe. Gaps backward in sequence number (including the same sequence number used twice) are never permitted and will always result in a `Logout` message being sent and the connection being dropped.

Most (but not all) outbound (Cboe to Member) application messages are monotonically sequenced per matching unit. Each message's documentation will indicate whether it is sequenced or unsequenced. While matching units on BOE correspond directly to matching units on Multicast PITCH, sequence numbers do not.

Upon reconnection, a Member sends the last received sequence number per matching unit in a `Login Request` message. Cboe will respond with any missed messages. However, when the `Login Request` message NoUnspeciedUnitReplay flag is enabled, Cboe will exclude messages from unspecified matching units during replay. Cboe will send a `Replay Complete` message when replay is finished. If there are no messages to replay, a `Replay Complete` message will be sent immediately after a `Login Response` message. Cboe will reject all orders during replay.

Assuming a Member has requested replay messages using a properly formatted `Login Request` message after a disconnect, any unacknowledged orders remaining with the Member after the `Replay Complete` message is received should be assumed to be unknown to Cboe.

Unsequenced messages will not be included during replay.

A session is identified by the username and session sub-identifier (both supplied by Cboe). Only one concurrent connection per username and session sub-identifier is permitted.

If a login is rejected, an appropriate `Login Response` message will be sent and the connection will be terminated.

### Sequence Reset

A reset sequence operation is not available for Binary Order Entry. However, a Member can send a `Login Request` message with NoUnspecifiedUnitReplay field enabled, and NumberOfUnits field set to zero. Then, upon receiving a `Login Response` message from Cboe, the Member can use the field LastReceivedSequenceNumber as the sequence starting point for sending future messages.

### Heartbeats

`Client Heartbeat` messages are sent from Member to Cboe and `Server Heartbeat` messages are sent from Cboe to Member if no other data has been sent in that direction for one second. Like other session level messages, heartbeats from Cboe to the Member do not increment the sequence number. If Cboe receives no inbound data or heartbeats for five seconds, a `Logout` message will be sent and the connection will be terminated. Members are encouraged to have a one second heartbeat interval and to perform similar connection staleness logic.

### Logging Out

To gracefully log out of a session, a `Logout Request` message should be sent by the Member. Cboe will finish sending any queued data for that port and will then respond with its own `Logout` message and close the connection. After receipt of a `Logout Request` message, Cboe will ignore all other inbound (Member to Cboe) messages except for `Client Heartbeat` message.

## Session Messages

### Member to Cboe

#### Login Request Message Fields

A `Login Request` message must be sent as the first message upon connection.

A number of repeating parameter groups, some of which may be required, are sent at the end of the message. Ordering of parameter groups is not important. New parameter groups may be added in the future with no notice.

**Table 1. Login Request Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x37` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |
| SessionSubID | 10 | 4 | Alphanumeric | Session Sub ID supplied by Cboe. |
| Username | 14 | 4 | Alphanumeric | Username supplied by Cboe. |
| Password | 18 | 10 | Alphanumeric | Password supplied by Cboe. |
| NumberOfParam Groups | 28 | 1 | Binary | A number, n (possibly 0), of parameter groups to follow. |
| ParamGroup1 |  |  |  | First parameter group. |
| … |  |  |  |  |
| ParamGroupn |  |  |  | Last parameter group. |

Unit Sequences Parameter Group

This parameter group includes the last consumed sequence number per matching unit received by the Member. Cboe uses these sequence numbers to determine what outbound (Cboe to Member) traffic, if any, was missed by the Member. If this parameter group is not sent, it's assumed the Member has not received any messages (e.g., start of day).

The Member does not need to include a sequence number for a unit if they have never received messages from it. For example, if the Member has received responses from units 1, 3, and 4, the `Login Request` message need not include unit 2. If the Member wishes to send a value for unit 2 anyway, 0 would be the only allowed value.

Only one instance of this parameter group may be included.

**Table 2. Login Request Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| ParamGroupLength | 0 | 2 | Binary | Number of bytes for the parameter group, including this field. |
| ParamGroupType | 2 | 1 | Binary | `0x80` |
| NoUnspecified UnitReplay | 3 | 1 | Binary | Flag indicating whether to replay missed outgoing (Cboe to Member) messages for unspecified units. `0x00` = False (Replay Unspecified Units) `0x01` = True (Suppress Unspecified Units Replay) |
| NumberOfUnits | 4 | 1 | Binary | A number, n (possibly 0), of unit/sequence pairs to follow, one per unit from which the Member has received messages. |
| UnitNumber 1 |  | 1 | Binary | A unit number. |
| UnitSequence1 |  | 4 | Binary | Last received sequence number for the unit. |
| … |  |  |  |  |
| UnitNumber n |  | 1 | Binary | A unit number. |
| UnitSequencen |  | 4 | Binary | Last received sequence number for the unit. |

This parameter group, which may be repeated, indicates which attributes of a message will be returned by Cboe for the remainder of the session. This allows Members to tailor the echoed results to the needs of their system without paying for bandwidth or processing they do not need.

Listing of the return bitfields which are permitted per message is contained in Return Bitfields Per Message.

**Table 3. Return Bitfields Parameter Group**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| ParamGroupLength | 0 | 2 | Binary | Number of bytes for the parameter group, including this field. |
| ParamGroupType | 2 | 1 | Binary | `0x81` |
| MessageType | 3 | 1 | Binary | Return message type for which the bitfields are being specified (e.g., `0x25` for an Order Acknowledgment message). |
| NumberOfReturn Bitfields | 4 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield1 | 5 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldn |  | 1 | Binary | Last bit field. |

Note this example is for illustrative purposes only. Actual login messages will contain specification of return bitfields for a larger set of messages and each return bitfield specification will be complete whereas the example below is only an illustration for purposes of demonstrating the construction of the `Login Request` message.

**Table 4. Login Request Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `43 00` | 67 bytes |
| MessageType | `37` | `Login Request` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |
| SessionSubID | `30 30 30 31` | 0001 |
| Username | `54 45 53 54` | `TEST` |
| Password | `54 45 53 54 49 4E 47 00 00 00` | `TESTING` |
| NumberOfParam Groups | `03` | 3 parameter groups |
| ParamGroupLength | `14 00` | 20 bytes for this parameter group |
| ParamGroupType | `80` | `0x80` = Unit Sequences |
| NoUnspecified UnitReplay | `01` | True (replay only specified units) |
| NumberOfUnits | `03` | Two unit/sequence pairs to follow; |
| UnitNumber1 | `01` | Unit 1 |
| UnitSequence1 | `4A BB 01 00` | Last received sequence of 113,482 |
| UnitNumber2 | `02` | Unit 2 |
| UnitSequence2 | `00 00 00 00` | Last received sequence of 0 |
| UnitNumber3 | `04` | Unit 4 |
| UnitSequence3 | `79 A1 00 00` | Last received sequence of 41,337 |
| ParamGroupLength | `08 00` | 8 bytes for this parameter group |
| ParamGroupType | `81` | `0x81` = Return Bitfields |
| MessageType | `25` | `0x25` = `Order Acknowledgment` |
| NumberOfReturn Bitfields | `03` | 3 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| ReturnBitfield3 | `05` | Account, ClearingAccount |
| ParamGroupLength | `0C 00` | 12 bytes for this parameter group |
| ParamGroupType | `81` | `0x81` = Return Bitfields |
| MessageType | `2C` | `0x2C` = `Order Execution` |
| NumberOfReturn Bitfields | `07` | 7 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| ReturnBitfield3 | `07` | Account, ClearingFirm, ClearingAccount |
| ReturnBitfield4 | `00` | No bitfields from byte 4 |
| ReturnBitfield5 | `40` | BaseLiquidityIndicator |
| ReturnBitfield6 | `00` | No bitfields from byte 6 |
| ReturnBitfield7 | `01` | SubLiquidityIndicator |

#### Logout Request Message Fields

To end the session, the Member should send a `Logout Request` message. Cboe will finish sending any queued data and finally respond with a `Logout` message and close the connection.

A Member may simply close the connection without logging out, but may lose any queued messages by doing so.

**Table 1. Logout Request Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x02` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |

**Table 2. Logout Request Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `08 00` | 8 bytes |
| MessageType | `02` | Logout Request |
| MatchingUnit | `00` | Always 0 for inbound messages. |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages. |

#### Client Heartbeat Message Fields

See Heartbeats for more information about heartbeats and the session level protocol.

**Table 1. Client Heartbeat Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x03` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |

**Table 2. Client Heartbeat Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `08 00` | 8 bytes |
| MessageType | `03` | Client Heartbeat |
| MatchingUnit | `00` | Always 0 for inbound messages. |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages. |

### Cboe to Member

#### Login Response Message Fields

`A Login Response` message is sent in response to a `Login Request` message. On a successful login, the LoginResponseStatus will be set to `A`. On a failed login, LoginResponseStatus will be set to a value other than `A`, and LoginResponseText will be set to an appropriate failure description. The length of the LoginResponse will vary depending on acceptance or rejection of the LoginRequest and the parameter groups included on the LoginResponse. Customers should be prepared to handle variable length LoginResponse messages.

Cboe will verify Return Bitfields at login time. If the Return Bitfields in a Return Bitfields Parameter Group are invalid, LoginResponseStatus will be set to F, and LoginResponseText will include a description of which byte and bit are invalid. This is done to ensure that reserved fields are not used, and only options that apply to the local market are set. See Return Bitfields Per Message for additional information.

Note that two sets of sequence numbers are available on the `Login Response` message. The set of sequence numbers in the body are the actual Cboe to Member sequence numbers indicating the highest sequence numbers available per matching unit. If specified during login, the Unit Sequences Parameter Group will be returned as an echo of the sequence numbers the Member presented during login as the highest received. If the sequence numbers are different, the gap will be filled by Cboe during the replay. A subset of units can be provided in the `Login Request`; however, all units will be provided in the `Login Response` message.

**Table 1. Login Response Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x24` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for session level messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |
| LoginResponseStatus | 10 | 1 | Alphanumeric | Accepted, or the reason for the rejection. `A` = Login Accepted `N` = Not authorized (invalid username/password) `D` = Session is disabled `B` = Session in use `S` = Invalid session `Q` = Sequence ahead in Login message `I` = Invalid unit given in Login message `F` = Invalid return bit field in Login message `M` = Invalid Login Request message structure |
| LoginResponseText | 11 | 60 | Text | Human-readable text with additional information about the reason for rejection. ASCII NUL (0x00) filled on the right, if necessary. |
| NoUnspecified UnitReplay | 71 | 1 | Binary | Echoed back from the original `Login Request` message. |
| LastReceived SequenceNumber | 72 | 4 | Binary | Last inbound (Member to Cboe) message sequence number processed by Cboe. |
| NumberOfUnits | 76 | 1 | Binary | A number, n, of unit/sequence pairs to follow, one per unit. A pair for every unit will be sent, even if no messages have been sent to this port today. For unsuccessful logins, this will be 0. |
| UnitNumber 1 |  | 1 | Binary | A unit number. |
| UnitSequence1 |  | 4 | Binary | Highest available Cboe to Member sequence number for the unit. |
| … |  |  |  |  |
| UnitNumber n |  | 1 | Binary | A unit number. |
| UnitSequencen |  | 4 | Binary | Highest available Cboe to Member sequence number for the unit. |
| NumberOfParam Groups |  | 1 | Binary | Echoed back from the original `Login Request` message. |
| ParamGroup1 |  |  |  | Echoed back from the original `Login Request` message. |
| … |  |  |  |  |
| ParamGroupn |  |  |  | Echoed back from the original `Login Request` message. |

**Table 2. Login Response Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `88 00` | 136 bytes |
| MessageType | `24` | Login Response |
| MatchingUnit | `00` | Always 0 for session messages. |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages. |
| LoginResponseStatus | `41` | `A` = Login Accepted |
| LoginResponseText | `41 63 63 65 70 74 65 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Accepted |
| NoUnspecified | `01` | True (replay only specified units) |
| UnitReplay |  |  |
| Last Received | `54 4A 02 00` | Last sequence Cboe received of 150,100 |
| Sequence Number |  |  |
| NumberOfUnits | `04` | Four unit/sequence pairs to follow; |
| UnitNumber 1 | `01` | Unit 1 |
| UnitSequence1 | `4A BB 01 00` | Actual last sequence of 113,482 |
| UnitNumber 2 | `02` | Unit 2 |
| UnitSequence2 | `00 00 00 00` | Actual last sequence of 0 |
| UnitNumber 3 | `02` | Unit 3 |
| UnitSequence3 | `00 00 00 00` | Actual last sequence of 0 |
| UnitNumber 4 | `02` | Unit 4 |
| UnitSequence4 | `79 A1 00 00` | Actual last sequence of 41,337 |
| NumberOfParam Groups | `03` | 3 parameter groups |
| ParamGroupLength | `14 00` | 20 bytes for this parameter group |
| ParamGroupType | `80` | `0x80` = Unit Sequences |
| NoUnspecified | `01` | True (replay unspecified units) |
| UnitReplay |  |  |
| NumberOfUnits | `03` | Three unit/sequence pairs to follow; |
| UnitNumber1 | `01` | Unit 1 |
| UnitSequence1 | `4A BB 01 00` | Last received sequence of 113,482 |
| UnitNumber2 | `02` | Unit 2 |
| UnitSequence2 | `00 00 00 00` | Last received sequence of 0 |
| UnitNumber3 | `04` | Unit 4 |
| UnitSequence3 | `79 A1 00 00` | Last received sequence of 41,337 |
| ParamGroupLength | `08 00` | 8 bytes for this parameter group |
| ParamGroupType | `81` | `0x81` = Return Bitfields |
| MessageType | `25` | `0x25` = `Order Acknowledgment` |
| NumberOfReturnBitfields | `03` | 3 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| ReturnBitfield3 | `05` | Account, ClearingAccount |
| ParamGroupLength | `0C 00` | 12 bytes for this parameter group |
| ParamGroupType | `81` | `0x81` = Return Bitfields |
| MessageType | `2C` | `0x2C` = `Order Execution` |
| NumberOfReturn Bitfields | `07` | 7 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| ReturnBitfield3 | `07` | Account, ClearingFirm, ClearingAccount |
| ReturnBitfield4 | `00` | No bitfields from byte 4 |
| ReturnBitfield5 | `40` | BaseLiquidityIndicator |
| ReturnBitfield6 | `00` | No bitfields from byte 6 |
| ReturnBitfield7 | `01` | SubLiquidityIndicator |

#### Logout Message Fields

A `Logout` message is usually sent in response to a `Logout Request` message. Any queued data is transmitted, a `Logout` message is sent, and Cboe will close the connection. However, a `Logout` message may also be sent if the Member violates the protocol specification (e.g., by moving backwards in sequence number).

The `Logout` message contains the last transmitted sequence number for each unit, allowing the Member to check that their last received sequence number matches.

**Table 1. Logout Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x08` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for session level messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |
| LogoutReason | 10 | 1 | Alphanumeric | The reason why the `Logout` message was sent. `U` = User Requested `E` = End of Day `A` = Administrative `!` = Protocol Violation |
| LogoutReasonText | 11 | 60 | Text | Human-readable text with additional information about the reason for logout. Particularly useful if LogoutReason = ! (Protocol Violation). |
| LastReceived SequenceNumber | 71 | 4 | Binary | Last inbound (Member to Cboe) message sequence number processed by Cboe. |
| NumberOfUnits | 75 | 1 | Binary | A number, n (possibly 0), of unit/sequence pairs to follow, one per unit from which the client has received messages. |
| UnitNumber 1 |  | 1 | Binary | A unit number. |
| UnitSequence1 |  | 4 | Binary | Highest available sequence number for the unit. |
| … |  |  |  |  |
| UnitNumber n |  | 1 | Binary | A unit number. |
| UnitSequencen |  | 4 | Binary | Highest available sequence number for the unit. |

**Table 2. Logout Response Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `55 00` | 85 bytes |
| MessageType | `08` | Logout |
| MatchingUnit | `00` | Always 0 for session level messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |
| LogoutReason | `55` | `U` = User Requested |
| LogoutReasonText | `55 73 65 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | User |
| LastReceived | `54 5A 02 00` | Last Cboe received sequence of 150,100 |
| SequenceNumber |  |  |
| NumberOfUnits | `03` | Two unit/sequence pairs to follow; |
| UnitNumber1 | `01` | Unit 1 |
| UnitSequence1 | `4A BB 01 00` | Last sent sequence of 113,482 |
| UnitNumber2 | `02` | Unit 2 |
| UnitSequence2 | `00 00 00 00` | Last sent sequence of 0 |
| UnitNumber3 | `04` | Unit 2 |
| UnitSequence3 | `79 A1 00 00` | Last sent sequence of 41,337 |

#### Server Heartbeat Message Fields

See Heartbeats for more information about heartbeats and the session level protocol.

**Table 1. Server Heartbeat Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x09` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for session level messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |

**Table 2. Server Heartbeat Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `08 00` | 8 bytes |
| MessageType | `09` | Server Heartbeat |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |

#### Replay Complete Message Fields

See Login, Replay and Sequencing for more information.

**Table 1. Replay Complete Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x13` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for session level messages. |
| SequenceNumber | 6 | 4 | Binary | Always 0 for session level messages. |

**Table 2. Replay Complete Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `08 00` | 8 bytes |
| MessageType | `13` | Replay Complete |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `00 00 00 00` | Always 0 for session level messages |

## Application Messages

### Member to Cboe

#### New Order Message Fields

A `New Order` message consists of a number of required fields followed by a number of optional fields. The optional fields used are specified by setting bits in the NewOrderBitfields. Fields must be appended at the end of the message, starting with the lowest order enabled bit in the first bit field first.

Permitted input optional fields are described in New Order.

**Table 1. New Order Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x38` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| ClOrdID | 10 | 20 | Text | Corresponds to ClOrdID (11) in Cboe FIX. ID chosen by the client. Characters in the ASCII range 33-126 are allowed, except for comma, semicolon, pipe, the ‘at’ symbol and double quotes. If the ClOrdID matches a live order, the order will be rejected as duplicate. Note: Cboe only enforces uniqueness of ClOrdID values among currently live orders. However, we strongly recommend that you keep your ClOrdID values unique. |
| Side | 30 | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell `5` = Sell Short (client affirms ability to borrow) `6` = Sell Short Exempt |
| OrderQty | 31 | 4 | Binary | Corresponds to OrderQty (38) in Cboe FIX. Order quantity. System limit is 999,999 shares. |
| NumberOf NewOrder Bitfields | 35 | 1 | Binary | Bitfield identifying which bitfields are set. Field values must be appended to the end of the message. |
| NewOrderBitfield¹ | 36 | 1 | Binary | Bitfield identifying fields to follow. |
| …. |  |  |  |  |
| NewOrderBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

Required Order Attributes:

The following are required to be sent on new orders:

- Some form of symbology (see Symbology below);
- Price (limit orders) or Price and/or OrdType (limit order market orders); and,
- Capacity

All other values have defaults. See the table in Purge Rejected for additional information about each optional field, including its default value.

Symbology:

For additional information, refer to Cboe Titanium U.S. Symbology Reference.

**Table 2. New Order Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `4A 00` | 73 bytes |
| MessageType | `38` | `New Order` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| Side | `31` | Buy |
| OrderQty | `E8 03 00 00` | 1,000 shares |
| NumberOfNewOrder Bitfields | `03` | 3 bitfields to follow |
| NewOrderBitfield1 | `04` | Price |
| NewOrderBitfield2 | `C1` | Symbol, Capacity, RoutingInst |
| NewOrderBitfield3 | `01` | Account |
| Price | `44 D6 12 00 00 00 00 00` | $123.45 |
| Symbol | `4D 53 46 54 00 00 00 00` | MSFT |
| Capacity | `50` | `P`=Principal |
| RoutingInst | `52 00 00 00` | `R`=Routable |
| Account | `44 45 46 47 00 00 00 00 00 00 00 00 00 00 00 00` | DEFG |

#### Cancel Order Message Fields

Request to cancel an order.

Permitted input optional fields are described in Cancel Order.

**Table 1. Cancel Order Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x39` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| OrigClOrdID | 10 | 20 | Text | Corresponds to OrigClOrdID (41) in Cboe FIX. ClOrdID of the order to cancel. |
| NumberOf CancelOrderBitfields | 30 | 1 | Binary | Bitfield identifying bitfields which are set. May be 0. Field values must be appended to the end of the message. |
| CancelOrder Bitfield¹ | 31 | 1 | Binary | Bitfield identifying fields to follow. Only present if NumberOfCancelOrderBitfields is non-zero. |
| … |  |  |  |  |
| CancelOrder Bitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Cancel Order Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `22 00` | 34 bytes |
| MessageType | `39` | `Cancel Order` |
| MatchingUnit | `0` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence Number 100 |
| OrigClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| NumberOfCancel | `01` | 1 bitfield to follow |
| OrderBitfields |  |  |
| CancelOrderBitfield1 | `01` | ClearingFirm |
| ClearingFirm | `54 45 53 54` | TEST |

#### Modify Order Message Fields

Request to modify an order. The order attributes to be modified are selected using NumberOfModifyBitfields and some number of bitfields to follow.

Only Price, Side, OrderQty, StopPx, MaxFloor, and OrdType may be adjusted. Modifies will result in a loss of time priority unless the modification involves a decrease in OrderQty, a change to MaxFloor, a change to StopPx, or a change in Side from sell long to sell short or vice-versa.

Other fields (including ExecInst will be ignored, and the value from the original order will be reused. In particular, note that when a Day ISO is modified, the ISO designation is applied to the new order.

A change in MaxFloor takes effect on the next reserve reload. A zero value for MaxFloor will be ignored. If MaxFloor is to be removed completely, then the order should be cancelled and a new order sent.

Changes in OrderQty result in an adjustment of the current order's OrderQty. The new OrderQty does not directly replace the current order's LeavesQty. Rather, a delta is computed from the current OrderQty and the replacement OrderQty. This delta is then applied to the current LeavesQty. If the resulting LeavesQty is less than or equal to zero, the order is cancelled. This results in safer behavior when the modification request overlaps partial fills for the current order, leaving the Member in total control of the share exposure of the order.

A `Modify Order` message should not be issued until the `Order Acknowledgment` message for the previous `New Order` or `Order Modified` message for the previous `Modify Order` message has been received. The BOE handler will reject a new `Modify Order` message if it has not been accepted or it has not seen the result of the prior modification from the Matching Engine. However, `Modify Order` message requests that merely reduce OrderQty may be overlapped if the existing ClOrdID is reused, as long as the trading identifier has not been opted-in to daily limit trading risk controls. This is the only case where reuse of the ClOrdID is allowed.

The OrderQty and Price fields in the optional field block must be present on all `Modify Order` message requests. Messages sent without OrderQty or Price fields will be rejected. Price is optional for market orders.

A maximum of 1,295 `Modify Order` message requests may be made to a single order each trading day. Once the 1,295th modification is made, the next user-generated message on the order should be a `Cancel Order` message request.

Permitted input optional fields are described in Modify Order.

**Table 1. Modify Order Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x3A` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| ClOrdID | 10 | 20 | Text | New ClOrdID for this order. |
| OrigClOrdID | 30 | 20 | Text | Corresponds to OrigClOrdID (41) in Cboe FIX. ClOrdID of the order to replace. In the case of multiple changes to a single order, this will be the ClOrdID of the most recently accepted change. |
| NumberOfModifyOrder Bitfields | 50 | 1 | Binary | Bitfield identifying bitfields which are set. May be 0. Field values must be appended to the end of the message. |
| ModifyOrderBitfield1 | 51 | 1 | Binary | Bitfield identifying fields to follow. |
| … |  |  |  |  |
| ModifyOrderBitfieldn |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Modify Order Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `3E 00` | 62 bytes |
| MessageType | `3A` | `Modify Order` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence Number 100 |
| ClOrdID | `41 42 43 31 32 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC124 |
| OrigClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| NumberOfModify | `01` | 1 bitfield to follow |
| OrderBitfields |  |  |
| ModifyOrderBitfield1 | `0C` | OrderQty, Price |
| OrderQty | `E0 2E 00 00` | 12,000 shares |
| Price | `08 E2 01 00 00 00 00 00` | $12.34 |

#### Purge Orders

Request to cancel a group of orders across all of the firm’s sessions. `Purge Orders` messages are only accepted on dedicated BOE Purge Ports. The MassCancelInst optional field is required and must be selected and populated. In addition, a firm may choose to implement one or more filters:

- MPID Filter - optionally cancel based on MPID. This is required for any self-imposed lockouts or for service bureaus. Set using first character of MassCancelInst and sending ClearingFirm.
- Symbol Filter - optionally cancel based on symbol. Set by sending a valid symbol. Cannot be combined with RiskGroupID filter.
- RiskGroupID Filter - optionally cancel based on RiskGroupID. A maximum of 10 RiskGroupIDs may be included on a single `Purge Orders` message. Set by populating RiskGroupIDCnt to a non-zero value. Cannot be combined with symbol filter.

A firm may use the second character of MassCancelInst to set the acknowledgment style. If a single `Mass Cancel Acknowledgment` message is selected, then MassCancelID must be sent.

A firm may also impose a lockout using the third character of MassCancelInst, which cancels any open orders and causes inbound orders received after the lockout to be rejected. A self-imposed lockout requires an MPID (ClearingFirm) to be sent. The firm may also choose to lockout by symbol or RiskGroupID but not by both.

RiskGroupID or MPID purges with no Symbol may be directed to a specific matching unit using the MatchingUnit optional field. If MatchingUnit is zero or not specified, then these purge types will be sent to all matching units starting with unit 1. Note that this may result in self-imposed, risk lockouts occurring on select units while other units are still trading.

The system limits the rate at which identical `Purge Orders` message requests can be submitted to the system. Requests are restricted to twenty (20) messages per second per port.

An identical purge message is defined as a message having all of the same RiskGroupID, Symbol, SymbolSfx, ClearingFirm, MatchingUnit, and Lockout Instruction field values, as a previously received message.

Permitted input optional fields are described in Purge Orders.

**Table 1. Purge Order Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x47` |
| MatchingUnit | 5 | 1 | Binary | Always 0 for inbound (Member to Cboe) messages. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. |
| ReservedInternal | 10 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfPurgeOrders Bitfields | 11 | 1 | Binary | Bitfield identifying bitfields which are set. May be 0. Field values must be appended to the end of the message. |
| PurgeOrdersBitfield1 | 12 | 1 | Binary | Bitfield identifying fields to follow. |
| … |  |  |  |  |
| PurgeOrdersBitfieldn |  | 1 | Binary | Last bitfield. |
| RiskGroupIDCnt |  | 1 | Binary | Number of repeating RiskGroupID values included in this message. |
| RiskGroupID1 |  | 2 | Binary | First RiskGroupID. Only present if RiskGroupIDCnt is non-zero. |
| … |  |  |  |  |
| RiskGroupIDn |  | 2 | Binary | Last RiskGroupID. |
| Optional fields. . . |  |  |  |  |

**Table 2. Purge Orders Message with RiskGroupID and Lockout Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `29 00` | 58 bytes |
| MessageType | `47` | `Purge Orders` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ReservedInternal | `00` | Reserved |
| NumberOfPurgeOrdersBitfields | `01` | 1 bitfield to follow |
| PurgeOrdersBitfield1 | `15` | ClearingFirm, MassCancelInst, MassCancelID |
| RiskGroupIDCnt | `02` | Two RiskGroupID values to follow |
| RiskGroupID1 | `BF BE` | 48831 |
| RiskGroupID2 | `C0 BE` | 48832 |
| ClearingFirm | `54 45 53 54` | TEST |
| MassCancelInst | `46 53 4C 00 00 00 00 00 00 00 00 00 00 00 00 00` | `F` = Cancel orders matching ClearingFirm `S` = Single ack `L` = Lockout both RiskGroupIDs |
| MassCancelID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |

**Table 3. Purge Orders Message with Symbol and Lockout Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `3F 00` | 63 bytes |
| MessageType | `47` | `Purge Orders` |
| MatchingUnit | `00` | Always 0 for inbound messages |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| ReservedInternal | `00` | Reserved |
| NumberOfPurgeOrdersBitfields | `02` | 2 bitfields to follow |
| PurgeOrdersBitfield1 | `15` | ClearingFirm, MassCancelInst, MassCancelID |
| PurgeOrdersBitfield2 | `01` | Symbol |
| RiskGroupIDCnt | `00` | No RiskGroupID values to follow |
| ClearingFirm | `54 45 53 54` | TEST |
| MassCancelInst | `46 53 4C 00 00 00 00 00 00 00 00 00 00 00 00 00` | `F` = Cancel orders matching ClearingFirm `S` = Single ack `L` = Lockout symbol |
| MassCancelID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| Symbol | `41 42 43 44 45 00 00 00` | ABCDE |

### Cboe to Member

#### Order Acknowledgment Message Fields

`Order Acknowledgment` messages are sent in response to a `New Order` message. The message corresponds to a FIX Execution Report with ExecType (150) = 0 (New).

Per the instructions given in a Return Bitfields Parameter Group on the `Login Request` message (see Login Request Message Fields) optional fields may be appended to echo back information provided in the original `New Order` message. Fields which have been requested to be echoed back but which were not filled in will still be sent, but filled with binary zero ( `0x00`).

Permitted return optional fields are described in Order Acknowledgment.

**Table 1. Order Acknowledgment Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x25` |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | Echoed back from the original order. |
| OrderID | 38 | 8 | Binary | Corresponds to OrderID (37) in Cboe FIX. Order identifier supplied by Cboe. This identifier corresponds to the identifiers used in Cboe market data products. |
| ReservedInternal | 46 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 47 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 48 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Acknowledgment Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `4E 00` | 78 bytes |
| MessageType | `25` | `Order Acknowledgment` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `03` | 3 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `41` | Symbol, Capacity |
| ReturnBitfield3 | `05` | Account, ClearingAccount |
| Symbol | `4D 53 46 54 00 00 00 00` | MSFT |
| Capacity | `50` | `P`=Principal |
| Account | `41 42 43 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC |
| ClearingAccount | `00 00 00 00` | (empty) |

**Table 3. Minimal Order Acknowledgment Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `2E 00` | 46 bytes |
| MessageType | `25` | `Order Acknowledgment` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `00` | No bitfields to follow |

#### Order Rejected Message Fields

`Order Rejected` messages are sent in response to a `New Order` message which must be rejected. This message corresponds to a FIX Execution Report with ExecType (150) = 8 (Rejected). `Order Rejected` messages are unsequenced.

Permitted return optional fields are described in Order Rejected.

**Table 1. Order Rejected Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x26` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | Echoed back from the original order. |
| OrderRejectReason | 38 | 1 | Text | Reason for an order rejection. See Reason Codes for a list of possible reasons. |
| Text | 39 | 60 | Text | Human readable text with more information about the reject reason. |
| ReservedInternal | 99 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 100 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 101 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `76 00` | 118 bytes |
| MessageType | `26` | `Order Rejected` |
| MatchingUnit | `0` | Unsequenced message, `unit`=0 |
| SequenceNumber | `00 00 00 00` | Unsequenced message, `sequence`=0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderRejectReason | `44` | D |
| Text | `44 75 70 6C 69 63 61 74 65 20 43 6C 4F 72 64 49 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Duplicate ClOrdID |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `03` | 3 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `01` | Symbol |
| ReturnBitfield3 | `06` | ClearingFirm, ClearingAccount |
| Symbol | `4D 53 46 54 00 00 00 00` | MSFT |
| ClearingFirm | `54 45 53 54` | TEST |
| ClearingAccount | `00 00 00 00` | (empty) |

#### Order Modified Message Fields

`Order Modified` messages are sent in response to a `Modify Request` to indicate that the order has been successfully modified.

Note: You must opt-in to receiving LeavesQty in `Order Modified` messages. In some cases, the last message to be received on an order's lifecycle will be an `Order Modified` message. The way to know the order is no longer live is to inspect LeavesQty. An example of this would be modification of an order whilst an execution is being generated, resulting in the order being reduced to zero outstanding quantity.

Permitted return optional fields are described in Order Modified.

**Table 1. Order Modified Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x27` |
| MatchingUnit | 5 | 1 | Binary | The Matching Unit which created this message. Matching units in BOE correspond to Matching Units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per Matching Unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | Client order ID. This is the ClOrdID from the `Modify Order` message. |
| OrderID | 38 | 8 | Binary | Corresponds to OrderID (37) in Cboe FIX. The unique OrderID . Modifications do not change the OrderID . |
| ReservedInternal | 46 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 47 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 48 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Modified Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `35 00` | 63 bytes |
| MessageType | `27` | `Order Modified` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `05` | 5 bitfields to follow |
| ReturnBitfield1 | `04` | Price |
| ReturnBitfield2 | `00` | No fields from byte 2 |
| ReturnBitfield3 | `00` | No fields from byte 3 |
| ReturnBitfield4 | `00` | No fields from byte 4 |
| ReturnBitfield5 | `02` | LeavesQty |
| Price | `08 E2 01 00 00 00 00 00` | $12.34 |
| LeavesQty | `00 00 00 00` | 0 (order done) |

#### Order Restated Message Fields

`Order Restated` messages are sent to inform the Member that an order has been asynchronously modified for some reason without an explicit `Modify Order` message request having been sent. Some example (non-exhaustive) reasons for `Order Restated` messages being sent:

- A reserve (iceberg) order has been reloaded.
- An order's remaining quantity was decremented because of a prevented wash trade.
- A routed order has returned to rest on the book after matching liquidity on another market.

Members should be prepared to accept and apply `Order Restated` messages for any reason. The return bitfields indicate the characteristics of the order which have changed. Optional fields will be present at the end of the message with the new values.

Note: You must opt-in to receiving LeavesQty in `Order Restated` messages. In some cases, the last message to be received on an order's lifecycle will be an `Order Restated` message. The way to know the order is no longer live is to inspect LeavesQty. An example of this would be restatement of an order in some cases due to PreventMatch being set to d.

Permitted return optional fields are described in Order Restated.

**Table 1. Order Restated Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be 0xBA 0xBA. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | 0x28 |
| MatchingUnit | 5 | 1 | Binary | The Matching Unit which created this message. Matching units in BOE correspond to Matching Units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per Matching Unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | The ClOrdID is the identifier from the open order. |
| OrderID | 38 | 8 | Binary | Corresponds to OrderID (37) in Cboe FIX. The unique OrderID . For informational purposes only. Restatements do not change the OrderID . |
| RestatementReason | 46 | 1 | Alphanumeric | The reason for this Order Restated message. `C` = Cboe Market Close (CMC) `L` = Reload `P` = Peg or Price Sliding Reprice `Q` = Liquidity Updated `R` = Reroute `S` = Reduction of OrderQty due to SWP `W` = Wash or MTP Decrement Cboe reserves the right to add new values as necessary without prior notice. |
| ReservedInternal | 47 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 48 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 49 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Restated Message for a Reserve (Iceberg) Reload Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `41 00` | 65 bytes |
| MessageType | `28` | `Order Restated` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| RestatementReason | `4C` | `L`=Reload |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `06` | 6 bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `00` | No fields from byte 2 |
| ReturnBitfield3 | `00` | No fields from byte 3 |
| ReturnBitfield4 | `00` | No fields from byte 4 |
| ReturnBitfield5 | `02` | LeavesQty |
| ReturnBitfield6 | `01` | SecondaryOrderID |
| LeavesQty | `64 00 00 00` | 100 shares |
| SecondaryOrderID | `0A 10 1E B7 5E 39 2F 02` | 171WC100000A (base 36) |

#### User Modify Rejected Message Fields

`User Modify Rejected` messages are sent in response to a `Modify Order` message for an order which cannot be modified. `User Modify Rejected` messages are unsequenced.

This message corresponds to a FIX Execution Report with MsgType (35) = 9 (Order Cancel Reject) and CxlRejResponseTo (434) = 2 (Order Cancel/Replace Request).

Permitted return optional fields are described in User Modify Rejected.

**Table 1. User Modify Rejected Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x29` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | The ClOrdID of the modify request which was rejected. |
| ModifyReject Reason | 38 | 1 | Text | Reason for a modify rejection. See Reason Codes for a list of possible reasons. |
| Text | 39 | 60 | Text | Human readable text with more information about the reject reason. |
| ReservedInternal | 99 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 100 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 101 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. User Modify Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `63 00` | 99 bytes |
| MessageType | `29` | `User Modify Rejected` |
| MatchingUnit | `00` | Unsequenced Message, `unit`=0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, `sequence`=0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ModifyRejectReason | `50` | Pending Fill |
| Text | `50 65 6E 64 69 6E 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | Pending |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn | `00` | No optional fields |
| Bitfields |  |  |

#### Order Cancelled Message Fields

An order has been cancelled.

Permitted return optional fields are described in Order Cancelled.

**Table 1. Order Cancelled Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x2A` |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | The order which was cancelled. |
| CancelReason | 38 | 1 | Text | Reason for the order cancellation. See Reason Codes for a list of possible reasons. |
| ReservedInternal | 39 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 40 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 41 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Order Cancelled Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `48 00` | 72 bytes |
| MessageType | `2A` | `Order Cancelled` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| CancelReason | `55` | `U`=User Requested |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `05` | 5 bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `00` | No fields from byte 2 |
| ReturnBitfield3 | `06` | ClearingFirm, ClearingAccount |
| ReturnBitfield4 | `00` | No fields from byte 4 |
| ReturnBitfield5 | `01` | OrigClOrdID |
| ClearingFirm | `54 45 53 54` | TEST |
| ClearingAccount | `31 32 33 34` | 1234 |
| OrigClOrdID | `41 42 43 31 32 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC121 |

#### Cancel Rejected Message Fields

A `Cancel Rejected` message is sent in response to a `Cancel Order` message to indicate that the cancellation cannot occur. `Cancel Rejected` messages are unsequenced.

Permitted return bitfields are described in Cancel Rejected.

**Table 1. Cancel Rejected Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x2B` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | The order whose cancel was rejected. |
| CancelRejectReason | 38 | 1 | Text | Reason for the order cancellation. See Reason Codes for a list of possible reasons. |
| Text | 39 | 60 | Text | Human readable text with more information about the reject reason. |
| ReservedInternal | 99 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 100 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 101 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Cancel Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `63 00` | 99 bytes |
| MessageType | `2B` | `Cancel Rejected` |
| MatchingUnit | `00` | Unsequenced Message, `unit`=0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, `sequence`=0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| CancelRejectReason | `4A` | J |
| Text | `54 4F 4F 20 4C 41 54 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | TOO LATE |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn | `00` | No optional fields |
| Bitfields |  |  |

#### Order Execution Message Fields

An `Order Execution` message is sent for each fill on an order.

Rather than returning a monetary value indicating the rebate or charge for an execution, the FeeCode is an indication of a fee classification corresponding to an item on the venue's fee schedule.

Permitted return bitfields are described in Order Execution.

**Table 1. Order Execution Message Fields**

| Field | Offset | Length | Data Type | Description |  |  |  |  |  |  |  |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |  |  |  |  |  |  |  |  |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |  |  |  |  |  |  |  |  |
| MessageType | 4 | 1 | Binary | `0x2C` |  |  |  |  |  |  |  |  |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |  |  |  |  |  |  |  |  |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |  |  |  |  |  |  |  |  |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |  |  |  |  |  |  |  |  |
| ClOrdID | 18 | 20 | Text | Order receiving the execution. |  |  |  |  |  |  |  |  |
| ExecID | 38 | 8 | Binary | Corresponds to ExecID (17) in Cboe FIX. Execution ID. Unique across all matching units on a given day. Note: ExecIDs will be represented on ODROP and FIXDROP ports as nine character, base 36 ASCII. Leading zeros should be added if the converted base 36 value is shorter than nine characters. Table 2. Example Conversion Decimal Base 36 28294005440239 A1234B567 76335905726621 R248BC23H 728557228187 09AP05V2Z | Decimal | Base 36 | 28294005440239 | A1234B567 | 76335905726621 | R248BC23H | 728557228187 | 09AP05V2Z |
| Decimal | Base 36 |  |  |  |  |  |  |  |  |  |  |  |
| 28294005440239 | A1234B567 |  |  |  |  |  |  |  |  |  |  |  |
| 76335905726621 | R248BC23H |  |  |  |  |  |  |  |  |  |  |  |
| 728557228187 | 09AP05V2Z |  |  |  |  |  |  |  |  |  |  |  |
| LastShares | 46 | 4 | Binary | Corresponds to LastShares (32) in Cboe FIX. Executed share quantity. Reports the amount of shares cancelled for Cboe Market Close restatements, which are sent at approximately 3:49 p.m. ET. Reports the size of Cboe Market Close fills, which are sent after the official closing price is received from the primary listing exchange . |  |  |  |  |  |  |  |  |
| LastPx | 50 | 8 | Binary Price | Corresponds to LastPx (31) in Cboe FIX. Price of this fill. Note the use of Binary Price type to represent positive and negative prices, which can occur with complex instruments. Reports the price of Cboe Market Close fills, which are sent after the official closing price is received from the primary listing exchange . |  |  |  |  |  |  |  |  |
| LeavesQty | 58 | 4 | Binary | Corresponds to LeavesQty (151) in Cboe FIX. Quantity still open for further execution. If zero, the order is complete. |  |  |  |  |  |  |  |  |
| BaseLiquidity Indicator | 62 | 1 | Alphanumeric | Indicates whether the trade added or removed liquidity. `A` = Added Liquidity `C` = Auction/Uncrossing `R` = Removed Liquidity `W` = Waiting for execution at pre-market time as defined by TimeInForce value and 'Hold Early to 7am' port setting. Only applied on the initial order acknowledgment. `X` = Routed to Another Market |  |  |  |  |  |  |  |  |
| SubLiquidityIndicator | 63 | 1 | Alphanumeric | Cboe may add additional values without notice. Members must gracefully ignore unknown values. ASCII NUL (0x00) = No additional information `E` = Trade added RPI liquidity ( BYX and EDGX ) `H` = Trade added hidden liquidity `I` = Trade added hidden liquidity that was price improved `J` = Execution from first order to join the NBBO `P` = Periodic Auction ( BYX Only ) `S` = NBBO-Setter fee eligible `V` = Visible liquidity add trade that was price improved `m` = Midpoint Peg Order `s` = Order set the NBBO but is not fee eligible |  |  |  |  |  |  |  |  |
| ContraBroker | 64 | 4 | Alphanumeric | Corresponds to ContraBroker (375) in Cboe FIX. All externally matched (routed) executions will identify the away exchange. `AMEX` = Routed to NYSE American `ARCA` = Routed to NYSE Arca `BEX` = Routed to Nasdaq Texas `CHX` = Routed to NYSE Texas `ICRS` = Routed to Intelligent Cross (pending approval) `IEX` = Routed to Investors Exchange `INET` = Routed to Nasdaq `LTSE` = Routed to Long Term Stock Exchange `MEMX` = Routed to Members Exchange `NYSE` = Routed to NYSE `PERL` = Routed to MIAX PEARL Exchange `PSX` = Routed to Nasdaq PSX `NSX` = Routed to NYSE National `DRT` = Routed to DRT Pool `TFXE` = Routed to 24X National Exchange `TXSE` = Routed to Texas Stock Exchange `BATS` = Routed to Cboe BZX Exchange* `BYXX` = Routed to Cboe BYX Exchange* `EDGA` = Routed to Cboe EDGA Exchange* `EDGX` = Routed to Cboe EDGX Exchange* * Internally matched if ContraBroker matches the identifier of the local trading platform’s book. |  |  |  |  |  |  |  |  |
| ReservedInternal | 68 | 1 | Binary | Reserved for Cboe internal use. |  |  |  |  |  |  |  |  |
| NumberOfReturn Bitfields | 69 | 1 | Binary | Number of bitfields to follow. |  |  |  |  |  |  |  |  |
| ReturnBitfield¹ | 70 | 1 | Binary | Bitfield identifying fields to return. |  |  |  |  |  |  |  |  |
| … |  |  |  |  |  |  |  |  |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |  |  |  |  |  |  |  |  |
| Optional fields… |  |  |  |  |  |  |  |  |  |  |  |  |

**Table 3. Order Execution Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes |
| MessageLength | `53 00` | 83 bytes |
| MessageType | `2C` | `Order Execution` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| ExecID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| LastShares | `64 00 00 00` | 100 shares |
| LastPx | `08 E2 01 00 00 00 00 00` | 12.34 |
| LeavesQty | `14 00 00 00` | 20 contracts |
| BaseLiquidityIndicator | `41` | `A`=Added |
| SubLiquidityIndicator | `00` | (unset) |
| ContraBroker | `42 41 54 53` | BATS |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `03` | 3 bitfields to follow |
| ReturnBitfield1 | `00` | No bitfields from byte 1 |
| ReturnBitfield2 | `00` | No bitfields from byte 2 |
| ReturnBitfield3 | `46` | ClearingFirm, ClearingAccount, OrderQty |
| ClearingFirm | `54 45 53 54` | TEST |
| ClearingAccount | `31 32 33 43` | 1234 |
| OrderQty | `78 00 00 00` | 120 shares |

#### Trade Cancel or Correct Message Fields

Used to relay a trade which has been cancelled (busted) or corrected (price change only). The CorrectedPrice field will be set to 0 for cancelled trades and to the new trade price for corrected trades. `Trade Cancel or Correct` messages can be sent for same day as well as previous day trades.

Permitted return bitfields are described in Trade Cancel or Correct.

**Table 1. Trade Cancel or Correct Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x2D` |
| MatchingUnit | 5 | 1 | Binary | The matching unit which created this message. Matching units in BOE correspond to matching units on Multicast PITCH. |
| SequenceNumber | 6 | 4 | Binary | The sequence number for this message. Distinct per matching unit. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| ClOrdID | 18 | 20 | Text | ClOrdID of the order whose fill is being cancelled or corrected. |
| OrderID | 38 | 8 | Binary | Corresponds to OrderID (37) in Cboe FIX. Order whose fill is being cancelled or corrected. |
| ExecRefID | 46 | 8 | Binary | Corresponds to ExecRefID (19) in Cboe FIX. Refers to the ExecID of the fill being cancelled or corrected. |
| Side | 54 | 1 | Alphanumeric | Side of the order. |
| BaseLiquidity Indicator | 55 | 1 | Alphanumeric | Indicates whether the trade added or removed liquidity. `A` = Added Liquidity `R` = Removed Liquidity `X` = Routed to Another Market `C` = Auction/Uncrossing `W` = Waiting for execution at pre-market time as dictated by TimeInForce value and 'Hold Early to 7am' port setting. Only applied on the initial order acknowledgment. |
| ClearingFirm | 56 | 4 | Alpha | Echoed back from the original order. |
| ClearingAccount | 60 | 4 | Text | Echoed back from the original order. |
| LastShares | 64 | 4 | Binary | Number of shares of the trade being cancelled. |
| LastPx | 68 | 8 | Binary Price | Price of the trade being cancelled. Note the use of Binary Price type to represent positive and negative prices, which can occur with complex instruments. |
| CorrectedPrice | 76 | 8 | Binary Price | For trade corrections, this is the new trade price. For trade breaks, this is set to 0. |
| OrigTime | 84 | 8 | DateTime | Corresponds to OrigTime (42). The date and time of the original trade, in GMT. |
| ReservedInternal | 92 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 93 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield¹ | 94 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldᶯ |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Trade Cancel or Correct Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `66 00` | 102 bytes |
| MessageType | `2D` | `Trade Cancel or Correct` |
| MatchingUnit | `03` | Matching Unit 3 |
| SequenceNumber | `64 00 00 00` | Sequence number 100 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| ClOrdID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| OrderID | `05 10 1E B7 5E 39 2F 02` | 171WC1000005 (base 36) |
| ExecRefID | `01 F0 B7 D9 71 21 00 00` | D19800001 (base 36) |
| Side | `31` | Buy |
| BaseLiquidity Indicator | `41` | `A`=Added |
| ClearingFirm | `54 45 53 54` | TEST |
| ClearingAccount | `00 00 00 00` | (empty) |
| LastShares | `C4 09 00 00` | 2,500 shares |
| LastPx | `5C 13 04 00 00 00 00 00` | $26.71 |
| CorrectedPrice | `00 00 00 00 00 00 00 00` | 0 (cancelled) |
| OrigTime | `E0 BA 75 95 15 4C EB 11` | 1,291,209,373,757,324,000 |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `02` | 2 bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `01` | Symbol |
| Symbol | `4D 53 46 54 00 00 00 00` | MSFT |

#### Mass Cancel Acknowledgment Message Fields

A `Mass Cancel Acknowledgment` message is an unsequenced message sent when a `Purge Orders` message requesting a mass cancellation has completed canceling all individual orders. This message type only appears on dedicated BOE Purge Ports.

**Table 1. Mass Cancel Acknowledgment Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA.` |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x36` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application. Message Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| MassCancelID | 18 | 20 | Text | Copied from the MassCancelID passed on the original `Purge Orders` message. This field corresponds to MassCancelID (7695) in Cboe FIX. |
| CancelledOrderCount | 38 | 4 | Binary | Number of orders cancelled. This field corresponds to CancelledOrderCount (7696) in Cboe FIX. |
| ReservedInternal | 42 | 1 | Binary | Reserved for Cboe internal use. |

**Table 2. Mass Cancel Acknowledgement Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA` | Start of message bytes. |
| MessageLength | `29 00` | 41 bytes |
| MessageType | `36` | `Mass Cancel Acknowledgment` |
| MatchingUnit | `00` | Unsequenced Message, `unit`=0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, `sequence`=0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| MassCancelID | `41 42 43 31 32 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ABC123 |
| CancelledOrderCount | `63 00 00 00` | 99 orders were cancelled |
| ReservedInternal | `00` | Ignore |

#### Purge Rejected

A `Purge Rejected` message is sent in response to a `Purge Orders` message to indicate that the mass cancellation cannot occur. `Purge Rejected` messages are unsequenced. This message type only appears on dedicated BOE Purge Ports.

Permitted return bitfields are described in Purge Rejected.

**Table 1. Purge Rejected Message Fields**

| Field | Offset | Length | Data Type | Description |
|---|---|---|---|---|
| StartOfMessage | 0 | 2 | Binary | Must be `0xBA 0xBA`. |
| MessageLength | 2 | 2 | Binary | Number of bytes for the message, including this field but not including the two bytes for the StartOfMessage field. |
| MessageType | 4 | 1 | Binary | `0x48` |
| MatchingUnit | 5 | 1 | Binary | Unsequenced application message. Matching unit will be set to 0. |
| SequenceNumber | 6 | 4 | Binary | Unsequenced application message. Sequence number will be set to 0. |
| TransactionTime | 10 | 8 | DateTime | The time the event occurred in the Cboe Matching Engine (not the time the message was sent). |
| PurgeRejectReason | 18 | 1 | Text | Reason for a purge rejection. See Reason Codes for a list of possible reasons. |
| Text | 19 | 60 | Text | Human readable text with more information about the reject reason. |
| ReservedInternal | 79 | 1 | Binary | Reserved for Cboe internal use. |
| NumberOfReturn Bitfields | 80 | 1 | Binary | Number of bitfields to follow. |
| ReturnBitfield1 | 81 | 1 | Binary | Bitfield identifying fields to return. |
| … |  |  |  |  |
| ReturnBitfieldn |  | 1 | Binary | Last bitfield. |
| Optional fields. . . |  |  |  |  |

**Table 2. Purge Rejected Message Example**

| Field Name | Hexadecimal | Notes |
|---|---|---|
| StartOfMessage | `BA BA` | Start of message bytes. |
| MessageLength | `72 00` | 114 bytes |
| MessageType | `48` | `Purge Rejected` |
| MatchingUnit | `00` | Unsequenced Message, `unit`=0 |
| SequenceNumber | `00 00 00 00` | Unsequenced Message, `sequence`=0 |
| TransactionTime | `E0 FA 20 F7 36 71 F8 11` | 1,294,909,373,757,324,000 |
| PurgeRejectReason | `41` | A |
| Text | `41 44 4D 49 4E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | ADMIN |
| ReservedInternal | `00` | Ignore |
| NumberOfReturn Bitfields | `0F` | 15 bitfields to follow |
| ReturnBitfield1 | `00` | No fields from byte 1 |
| ReturnBitfield2 | `00` | No fields from byte 2 |
| ReturnBitfield3 | `00` | No fields from byte 3 |
| ReturnBitfield4 | `00` | No fields from byte 4 |
| ReturnBitfield5 | `00` | No fields from byte 5 |
| ReturnBitfield6 | `00` | No fields from byte 6 |
| ReturnBitfield7 | `00` | No fields from byte 7 |
| ReturnBitfield8 | `00` | No fields from byte 8 |
| ReturnBitfield9 | `00` | No fields from byte 9 |
| ReturnBitfield10 | `00` | No fields from byte 10 |
| ReturnBitfield11 | `00` | No fields from byte 11 |
| ReturnBitfield12 | `00` | No fields from byte 12 |
| ReturnBitfield13 | `00` | No fields from byte 13 |
| ReturnBitfield14 | `00` | No fields from byte 14 |
| ReturnBitfield15 | `08` | MassCancelID |
| MassCancelID | `54 45 53 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00` | TEST |

## Input Bitfields Per Message

**Table 1. Bitfield Table Legend**

| Entry | Description |
|---|---|
| R | Indicates that the field must be specified for a message |
| O | Indicates that the field can be specified for a message |
| (Blank) | Indicates that the field is not used by Cboe Equities and cannot be specified for a message |

Input messages containing invalid fields (i.e., Blank) will be rejected. In the case of rejected input messages, the associated Reject message sent back to the customer will contain a RejectReason code non-optional field (See Reason Codes) and a Text non-optional field containing descriptive text.

### New Order

**Table 1. New Order Input Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | ClearingFirm | O |  | 6 | 1 | DisplayRange | O |
| 2 | ClearingAccount | O |  | 2 | StopPx | O |  |  |
| 4 | Price | O |  | 4 | RoutStrategy | O |  |  |
| 8 | ExecInst | O |  | 8 | RouteDeliveryMethod | O |  |  |
| 16 | OrdType | O |  | 16 | ExDestination | O |  |  |
| 32 | TimeInForce | O |  | 32 | EchoText | O |  |  |
| 64 | MinQty | O |  | 64 | AuctionId |  |  |  |
| 128 | MaxFloor | O |  | 128 | RoutingFirmID |  |  |  |
| 2 | 1 | Symbol | R |  | 7 | 1 | AlgorithmicIndicator |  |
| 2 | SymbolSfx | O |  | 2 | RiskGroupID | O |  |  |
| 4 | Currency |  |  | 4 | ClientQualifiedRole |  |  |  |
| 8 | IdSource |  |  | 8 | InvestorQualifiedRole |  |  |  |
| 16 | SecurityId |  |  | 16 | ExecutorQualifiedRole |  |  |  |
| 32 | SecurityExchange |  |  | 32 | CtiCode |  |  |  |
| 64 | Capacity | R |  | 64 | ManualOrderIndicator |  |  |  |
| 128 | RoutingInst | O |  | 128 | OperatorId |  |  |  |
| 3 | 1 | Account | O |  | 8 | 1 | (Reserved) |  |
| 2 | DisplayIndicator | O |  | 2 | (Reserved) |  |  |  |
| 4 | (Reserved) |  |  | 4 | ClearingOptionalData |  |  |  |
| 8 | DiscretionAmount | O |  | 8 | ClientIDAttr |  |  |  |
| 16 | PegDifference | O |  | 16 | FrequentTraderID |  |  |  |
| 32 | PreventMatch | O |  | 32 | Compression |  |  |  |
| 64 | LocateReqd | O |  | 64 | FloorDestination |  |  |  |
| 128 | ExpireTime | O |  | 128 | FloorRoutingInst |  |  |  |
| 4 | 1 | MaturityDate |  |  | 9 | 1 | OrderOrigin |  |
| 2 | StrikePrice |  |  | 2 | ORS |  |  |  |
| 4 | PutOrCall |  |  | 4 | PriceType |  |  |  |
| 8 | RiskReset | O |  | 8 | (Reserved) |  |  |  |
| 16 | OpenClose |  |  | 16 | (Reserved) |  |  |  |
| 32 | CMTANumber |  |  | 32 | (Reserved) |  |  |  |
| 64 | TargetPartyID |  |  | 64 | CrossTradeFlag | O |  |  |
| 128 | (Reserved) |  |  | 128 | (Reserved) |  |  |  |
| 5 | 1 | SessionEligibility |  |  | 10 | 1 | Held |  |
| 2 | AttributedQuote | O |  | 2 | LocateBroker | O |  |  |
| 4 | BookingType |  |  | 4 | CmcSessions | O |  |  |
| 8 | ExtExecInst | O |  | 8 | StepUpAmount | O |  |  |
| 16 | ClientID |  |  | 16 | (Reserved) |  |  |  |
| 32 | InvestorID |  |  | 32 | (Reserved) |  |  |  |
| 64 | ExecutorID |  |  | 64 | (Reserved) |  |  |  |
| 128 | OrderOrigination |  |  | 128 | (Reserved) |  |  |  |
|  |  |  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |  |  |

### Cancel Order

**Table 1. Cancel Order Input Bitfields**

| Byte | Bit | Field |  |
|---|---|---|---|
| 1 | 1 | ClearingFirm | O |
| 2 | MassCancelLockout |  |  |
| 4 | MassCancel |  |  |
| 8 | RiskRoot |  |  |
| 16 | MassCancelID |  |  |
| 32 | RoutingFirmID |  |  |
| 64 | ManualOrderIndicator |  |  |
| 128 | OperatorId |  |  |
| 2 | 1 | MassCancelInst |  |
| 2 | Symbol |  |  |
| 4 | SymbolSfx |  |  |
| 8 | SendTime |  |  |
| 16 | (Reserved) |  |  |
| 32 | (Reserved) |  |  |
| 64 | (Reserved) |  |  |
| 128 | (Reserved) |  |  |

ClearingFirm is required for service bureau ports.

### Modify Order

**Table 1. Modify Order Input Bitfields**

| Byte | Bit | Field |  |
|---|---|---|---|
| 1 | 1 | ClearingFirm | O |
| 2 | (Reserved) |  |  |
| 4 | OrderQty | R |  |
| 8 | Price | R |  |
| 16 | OrdType | O |  |
| 32 | CancelOrigOnReject | O |  |
| 64 | ExecInst | O |  |
| 128 | Side | O |  |
| 2 | 1 | MaxFloor | O |
| 2 | StopPx | O |  |
| 4 | RoutingFirmID |  |  |
| 8 | ManualOrderIndicator |  |  |
| 16 | OperatorId |  |  |
| 32 | FrequentTraderID |  |  |
| 64 | (Reserved) |  |  |
| 128 | LocateBroker | O |  |

The OrderQty and Price fields in the optional field block must be present on all `Modify Order` message requests. Messages sent without both fields will be rejected. Price is optional for market orders.

ClearingFirm is required for service bureau ports.

### Purge Orders

**Table 1. Purge Order Input Bitfields**

| Byte | Bit | Field |  |
|---|---|---|---|
| 1 | 1 | ClearingFirm | O |
| 2 | MassCancelLockout |  |  |
| 4 | MassCancelInst | R |  |
| 8 | RiskRoot |  |  |
| 16 | MassCancelID | O |  |
| 32 | RoutingFirmID |  |  |
| 64 | ManualOrderIndicator |  |  |
| 128 | OperatorId |  |  |
| 2 | 1 | Symbol | O |
| 2 | SymbolSfx | O |  |
| 4 | (Reserved) |  |  |
| 8 | (Reserved) |  |  |
| 16 | (Reserved) |  |  |
| 32 | (Reserved) |  |  |
| 64 | SendTime |  |  |
| 128 | MatchingUnit | O |  |

## Return Bitfields Per Message

**Table 1. Bitfield Table Legend**

| Entry | Description |
|---|---|
| R | Indicates that the field must be specified for a message |
| O | Indicates that the field can be specified for a message |
| - | Indicates that the field cannot be specified for a message |
| (Blank) | Indicates that the field is not used by Cboe Equities and cannot be specified for a message |

Input messages that containing invalid fields (i.e., Blank) will be rejected. In the case of rejected input messages, the associated Reject message sent back to the customer will contain a RejectReason code non-optional field (See Reason Codes) and a Text non-optional field containing descriptive text.

### Order Acknowledgment

**Table 1. Order Acknowledgment Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | O |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | O |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | O |  | 2 | EchoText | O |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | O |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | O |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | O |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | O |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | O |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | O |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | O |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | O |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | O |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | O |  |  |  |
| 16 | ExtExecInst | O |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | O |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | O |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | - |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | O |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Rejected

**Table 1. Order Rejected Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | O |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | O |  | 2 | EchoText | O |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | O |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | - |  |  |  |
| 16 | ExtExecInst | O |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | - |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | - |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | - |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Modified

**Table 1. Order Modified Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | O |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | O |  | 2 | EchoText | O |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | O |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | O |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | O |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | O |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | O |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | O |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | O |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | O |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | O |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | O |  |  |  |
| 16 | ExtExecInst | O |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | O |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | - |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | - |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Restated

**Table 1. Order Restated Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | O |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | O |  | 2 | EchoText | O |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | O |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | O |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | O |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | O |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | O |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | O |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | O |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | O |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | O |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | - |  |  |  |
| 16 | ExtExecInst | O |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | - |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | - |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | O |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | O |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### User Modify Rejected

**Table 1. User Modify Rejected Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | - |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | - |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | - |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | - |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | - |  | 2 | EchoText | - |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | - |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | - |  |  |  |
| 16 | ExtExecInst | - |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | - |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | - |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | - |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Cancelled

**Table 1. Order Cancelled Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | O |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | O |  | 2 | EchoText | O |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | O |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | O |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | O |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | O |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | O |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | O |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | O |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | O |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | O |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | O |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | O |  |  |  |
| 16 | ExtExecInst | O |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | - |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | - |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | - |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Cancel Rejected

**Table 1. Cancel Rejected Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | O |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | O |  | 2 | EchoText | O |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | - |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | - |  |  |  |
| 16 | ExtExecInst | - |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | - |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | - |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | - |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Order Execution

**Table 1. Order Execution Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | O |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | O |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | O |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | O |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | O |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | O |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | O |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | O |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | O |  | 2 | EchoText | O |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | O |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | O |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | O |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | O |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | O |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | O |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | O |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | O |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | O |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | O |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | O |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | O |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | O |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | O |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | O |  |  |  |
| 16 | ExtExecInst | O |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | O |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | - |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | - |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Trade Cancel or Correct

**Table 1. Trade Cancel or Correct Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | O |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | - |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | - |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | - |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | O |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | O |  | 2 | EchoText | - |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | O |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | - |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | - |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | - |  |  |  |
| 16 | ExtExecInst | - |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | - |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | - |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | - |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

### Purge Rejected

**Table 1. Purge Rejected Return Bitfields**

| Byte | Bit | Field |  |  | Byte | Bit | Field |  |  | Byte | Bit | Field |  |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Side | - |  | 7 | 1 | SubLiquidityIndicator | - |  | 13 | 1 | CumQty |  |
| 2 | PegDifference | - |  | 2 | TradeReportTypeReturn |  |  | 2 | DayOrderQty |  |  |  |  |
| 4 | Price | - |  | 4 | TradePublishIndReturn |  |  | 4 | DayCumQty |  |  |  |  |
| 8 | ExecInst | - |  | 8 | Text |  |  | 8 | AvgPx |  |  |  |  |
| 16 | OrdType | - |  | 16 | Bid |  |  | 16 | DayAvgPx |  |  |  |  |
| 32 | TimeInForce | - |  | 32 | Offer |  |  | 32 | PendingStatus |  |  |  |  |
| 64 | MinQty | - |  | 64 | LargeSize |  |  | 64 | DrillThruProtection |  |  |  |  |
| 128 | (Reserved) |  |  | 128 | LastMkt |  |  | 128 | MultilegReportingType |  |  |  |  |
| 2 | 1 | Symbol | - |  | 8 | 1 | FeeCode | - |  | 14 | 1 | LegCFICode |  |
| 2 | SymbolSfx | - |  | 2 | EchoText | - |  | 2 | LegMaturityDate |  |  |  |  |
| 4 | Currency |  |  | 4 | StopPx | - |  | 4 | LegStrikePrice |  |  |  |  |
| 8 | IdSource |  |  | 8 | RoutingInst | - |  | 8 | RoomId |  |  |  |  |
| 16 | SecurityId |  |  | 16 | RoutStrategy | - |  | 16 | SecondaryExecId |  |  |  |  |
| 32 | SecurityExchange |  |  | 32 | RouteDeliveryMethod | - |  | 32 | UserRequestID |  |  |  |  |
| 64 | Capacity | - |  | 64 | ExDestination | - |  | 64 | SISUsername |  |  |  |  |
| 128 | ContraTrader |  |  | 128 | TradeReportRefID |  |  | 128 | UserStatus |  |  |  |  |
| 3 | 1 | Account | - |  | 9 | 1 | MarketingFeeCode |  |  | 15 | 1 | TradeReportingIndicator |  |
| 2 | ClearingFirm | - |  | 2 | TargetPartyID |  |  | 2 | EquityPartyId |  |  |  |  |
| 4 | ClearingAccount | - |  | 4 | AuctionId |  |  | 4 | EquityNBBOProtect |  |  |  |  |
| 8 | DisplayIndicator | - |  | 8 | OrderCategory |  |  | 8 | MassCancelId | O |  |  |  |
| 16 | MaxFloor | - |  | 16 | LiquidityProvision |  |  | 16 | TradePublishInd |  |  |  |  |
| 32 | DiscretionAmount | - |  | 32 | CmtaNumber |  |  | 32 | ReportTime |  |  |  |  |
| 64 | OrderQty | - |  | 64 | CrossType |  |  | 64 | LegSymbolSfx |  |  |  |  |
| 128 | PreventMatch | - |  | 128 | CrossPrioritization |  |  | 128 | ClientIDAttr |  |  |  |  |
| 4 | 1 | MaturityDate |  |  | 10 | 1 | CrossId |  |  | 16 | 1 | FrequentTraderID |  |
| 2 | StrikePrice |  |  | 2 | AllocQty |  |  | 2 | SessionEligibility |  |  |  |  |
| 4 | PutOrCall |  |  | 4 | GiveUpFirmID |  |  | 4 | ComboOrder |  |  |  |  |
| 8 | OpenClose |  |  | 8 | RoutingFirmID |  |  | 8 | Compression |  |  |  |  |
| 16 | ClOrdIdBatch |  |  | 16 | WaiverType |  |  | 16 | FloorDestination |  |  |  |  |
| 32 | CorrectedSize |  |  | 32 | CrossExclusionIndicator |  |  | 32 | FloorRoutingInst |  |  |  |  |
| 64 | PartyID |  |  | 64 | PriceFormation |  |  | 64 | MultiClassSprd |  |  |  |  |
| 128 | AccessFee |  |  | 128 | ClientQualifiedRole |  |  | 128 | OrderOrigin |  |  |  |  |
| 5 | 1 | OrigClOrdID | - |  | 11 | 1 | ClientID |  |  | 17 | 1 | PriceType |  |
| 2 | LeavesQty | - |  | 2 | InvestorID |  |  | 2 | StrategyID |  |  |  |  |
| 4 | LastShares | - |  | 4 | ExecutorID |  |  | 4 | TradingSessionId |  |  |  |  |
| 8 | LastPx | - |  | 8 | OrderOrigination |  |  | 8 | TradeThroughAlertType |  |  |  |  |
| 16 | DisplayPrice | - |  | 16 | Algo |  |  | 16 | SenderLocationID |  |  |  |  |
| 32 | WorkingPrice | - |  | 32 | DeferralReason |  |  | 32 | FloorTraderAcronym |  |  |  |  |
| 64 | BaseLiquidityIndicator | - |  | 64 | InvestorQualifiedRole |  |  | 64 | ExecLegCFICode |  |  |  |  |
| 128 | ExpireTime | - |  | 128 | ExecutorQualifiedRole |  |  | 128 | CustOrderHandlingInst |  |  |  |  |
| 6 | 1 | SecondaryOrderID | - |  | 12 | 1 | CtiCode |  |  | 18 | 1 | (Reserved) |  |
| 2 | CCP |  |  | 2 | ManualOrderIndicator |  |  | 2 | CrossInitiator |  |  |  |  |
| 4 | ContraCapacity |  |  | 4 | OperatorId |  |  | 4 | Subreason |  |  |  |  |
| 8 | AttributedQuote | - |  | 8 | TradeDate |  |  | 8 | CrossTradeFlag | - |  |  |  |
| 16 | ExtExecInst | - |  | 16 | ClearingPrice |  |  | 16 | (Reserved) |  |  |  |  |
| 32 | BulkOrderIds |  |  | 32 | ClearingSize |  |  | 32 | Held |  |  |  |  |
| 64 | BulkRejectReasons |  |  | 64 | ClearingSymbol |  |  | 64 | LocateBroker | - |  |  |  |
| 128 | PartyRole |  |  | 128 | ClearingOptionalData |  |  | 128 | (Reserved) |  |  |  |  |
|  |  |  |  |  |  |  |  |  |  | 19 | 1 | FloorTradeTime |  |
|  |  |  |  |  |  |  |  | 2 | EquityExDestination |  |  |  |  |
|  |  |  |  |  |  |  |  | 4 | CrossOnBehalfOfID |  |  |  |  |
|  |  |  |  |  |  |  |  | 8 | CmcSessions | - |  |  |  |
|  |  |  |  |  |  |  |  | 16 | IntraFirmTradeInd |  |  |  |  |
|  |  |  |  |  |  |  |  | 32 | CmcMatchQty | - |  |  |  |
|  |  |  |  |  |  |  |  | 64 | StepUpAmount | - |  |  |  |
|  |  |  |  |  |  |  |  | 128 | Reserved |  |  |  |  |

## List of Optional Fields

The following are descriptions of optional fields which may be sent or received.

**Table 1. List of Optional Fields**

| Field | Length | Data Type | Description |
|---|---|---|---|
| Account | 16 | Text | Corresponds to Account (1) in Cboe FIX. Reflected back on execution reports associated with this order. May be made available in the Member’s clearing file. Allowed characters are alphanumeric and colon. |
| AttributedQuote | 1 | Alphanumeric | Optional. Allows for an order to be attributed to a firm's MPID or optionally RTAL (for retail firms) in Cboe’s market data feeds. The order may also be included in attributed summary information displays related to quote/trade information on the Cboe website. Must opt-in to support through the Cboe Trade Desk. `N` = Do not attribute firm MPID to this order `Y` = Attribute firm MPID to this order `R` = Attribute RTAL to this order |
| BaseLiquidityIndicator | 1 | Alphanumeric | Indicates whether the trade added or removed liquidity. `A` = Added Liquidity `R` = Removed Liquidity `X` = Routed to Another Market `C` = Auction/Uncrossing `W` = Waiting for execution at pre-market time as dictated by TimeInForce value and 'Hold Early to 7am' port setting. Only applied on the initial order acknowledgment. |
| CancelOrigOnReject | 1 | Alpha | Corresponds to CancelOrigOnReject (9619) in Cboe FIX. Indicates handling of original order on failure to modify. `N` = Leave original order alone `Y` = Cancel original order if modification fails |
| Capacity | 1 | Alpha | Corresponds to OrderCapacity (47) in Cboe FIX. `A` = Agency `P` = Principal `R` = Riskless Principal |
| ClearingAccount | 4 | Text | Corresponds to OnBehalfOfSubID (116) and ClearingAccount (440) in Cboe FIX. Supplemental identifier. Recorded and made available in execution reports. Available via Drop feeds. |
| ClearingFirm | 4 | Alpha | Corresponds to OnBehalfOfCompID (115) and ClearingFirm (439) Cboe FIX. MPID that will clear the trade. Must be an allowed NSCC MPID. Port attribute value of ‘Default EFID’ is used if not provided. |
| CmcMatchQty | 4 | Binary | Corresponds to CmcMatchQty (25023) in Cboe FIX. Matched size for CMC matching session. |
| CmcSessions | 2 | Text | 2 character field. Specifies the range of CMC sessions the order is eligible to participate in. If not specified CMC orders will be eligible to participate in all CMC matching sessions. 1st Character: First CMC session the order is eligible to participate in. If the second character is not provided the order will only participate in this session. 2nd Character: If provided, specifies the final CMC session the order is eligible to participate in. `A` = 3:15 p.m. `D` = 3:30 p.m. `L` = 3:49 p.m. `S` = 3:54 p.m. (Nasdaq-listed only) |
| CrossTradeFlag (BYX Only) | 1 | Alphanumeric | Corresponds to CrossTradeFlag (9355) in Cboe FIX. Used to set eligibility for Periodic Auctions. Can be entered on individual orders or as a port setting. `0` = None (to override port setting as necessary) `1` = Periodic Auction Only `2` = Periodic Auction Eligible |
| DiscretionAmount | 2 | Binary | Corresponds to DiscretionAmount (9622) in Cboe FIX. Two implied decimal places (e.g., `10` = $0.10 ) Discretion is implicitly added to bid prices and subtracted from offer prices Order will be displayed at Price, but can be executed in the discretionary range. A discretionary order will use the minimum amount of discretion necessary to achieve execution. Maximum range is -9999 to 9999 (i.e., -99.99 to 99.99) May not be used with IOC orders. May not be used with Post Only orders. |
| DisplayIndicator | 1 | Alphanumeric | Corresponds to DisplayIndicator (9479) in Cboe FIX. Re-pricing Options: `V` = Default. As determined by port level setting (defaults to S) `P` = Price Adjust `m` = Multiple Price Adjust `R` = Cancel back the order if it cannot be booked and displayed without adjustment `r` = Hidden; cancel back the order if it cannot be booked without adjustment `S` = Display Price Sliding (this is to override an opt-out of Display Price Siding at the port level) `L` = Display Price Sliding, but cancel back if order crosses the NBBO on entry `M` = Multiple Display Price Sliding `h` = Hidden Multiple Price Slide (effective 09/04/26) Other Options: `v` = Visible (for visible peg orders only; others will be rejected) `I` = Invisible (implied for Midpoint Peg orders) `N` = No Rescrape at Limit. Applicable only to fully routable, IOC orders ( RoutingInst = R and TimeInForce = 3). After walking the price to the limit, there will be no final scrape at Cboe and the cancel reason code will state X (Expired) rather than N (No Liquidity). |
| DisplayPrice | 8 | Binary Price | Only present when order is fully or partially booked. If the order has to be displayed at a less aggressive price for some reason, then that price will be reported here, otherwise equals Price. Present for hidden orders, indicating the price the order would have been displayed at. |
| DisplayRange | 4 | Binary | Corresponds to DisplayRange (8020) in Cboe FIX. Used for random replenishment of reserve orders. Random replenishment establishes a range of possible values for the order quantity that is to be displayed. For example, `if MaxFloor` = 2,000, `and DisplayRange` = 200 , the displayed quantity will be selected from one of the following values: 1,800, 1,900, 2,000, 2,100, or 2,200. Must be specified in round lots. |
| EchoText | 64 | Text | Corresponds to Text (58) in Cboe FIX. Free format text string. May be echoed back on Cboe to Member messages. |
| ExDestination | 1 | Text | Corresponds to ExDestination (100) in Cboe FIX. Used to specify the designated away venue for RoutStrategy = DIRC and for RoutingInst = A (Post to Away). `A` = NYSE American 1 `B` = Nasdaq Texas 1 `C` = NYSE National `F` = Texas Stock Exchange 1 `G` = 24X National Exchange `H` = MIAX Pearl `I` = Investors Exchange `J` = EDGA 1 `K` = EDGX 1,2 `L` = Long Term Stock Exchange M = NYSE Texas 1 `N` = NYSE 1 `P` = NYSE Arca 1 `Q` = Nasdaq 1 `T` = Intelligent Cross (pending approval) `U` = MEMX `X` = Nasdaq PSX `Y` = BYX 1 `Z` = BZX 1 1 Post to Away option available for ROUT and ROUX only. 2 Post to EDGX (for ROUT, ROUX, ROUZ, RDOT). |
| ExecInst | 1 | Text | Corresponds to ExecInst (18) in Cboe FIX. `f` = Intermarket Sweep (Directed or Book/Post only) `P` = Market Peg (peg Buy [Sell] to NBBO Offer [Bid]) `Q` = Market Maker Peg (see Cboe Titanium U.S. Equities Market Maker Specification ) `R` = Primary Peg (peg Buy [Sell] to NBB Bid [Offer]) `U` = Supplemental Peg Order `M` = Midpoint (peg to NBBO Midpoint) `m` = Midpoint (peg to NBBO Midpoint, but do not match when NBBO is locked) `L` = Alternate Midpoint (less aggressive of midpoint and 1 tick inside NBBO) EDGA and EDGX: `d` = Midpoint Discretionary Order `e` = Midpoint Discretionary Order with Quote Depletion Protection BZX: `r` = Late (for use with Auction Only orders); see the Cboe Titanium U.S. Equities Auction Process Specification BZX and EDGX: `o` = Listing Market Opening (for ROOC RoutStrategy only) `c` = Listing Market Close (for ROOC RoutStrategy only) `a` = Both Listing Market Open and Close (for ROOC RoutStrategy strategy only; also eligible for participation in halt auctions) |
| ExpireTime | 8 | DateTime | Corresponds to ExpireTime (126) in Cboe FIX. Required for TimeInForce = 6 orders, specifies the date-time (in UTC) that the order expires. |
| ExtExecInst | 1 | Text | Corresponds to ExtendedExecInst (9416) in Cboe FIX. `N` = None `R` = Retail Order, eligible for Retail rebate. BYX and EDGX : `P` = Retail Order (Price Improvement Only) `T` = Retail Price Improving Order EDGX : `X` = Retail Priority Order; eligible for Retail Priority and Retail rebate rate. |
| FeeCode | 2 | Alphanumeric | Corresponds to FeeCode (9882) in Cboe FIX. Indicates fee associated with an execution. Fee codes are published in the pricing schedule. New fee codes may be sent with little or no notice. Members are encouraged to code their systems to accept unknown fee codes. |
| LastPx | 8 | Binary Price | Corresponds to LastPx (31) in Cboe FIX. Price of this fill. |
| LastShares | 4 | Binary | Corresponds to LastShares (32) in Cboe FIX. Executed share quantity. |
| LeavesQty | 4 | Binary | Corresponds to LeavesQty (151) in Cboe FIX. Quantity still open for further execution. If zero, the order is complete. |
| LocateBroker | 4 | Alpha | Corresponds to LocateBroker (5700) in Cboe FIX. Used for short sale orders to identify the broker that the short seller has identified as the source from which they will borrow the securities they are selling short. |
| LocateReqd | 1 | Alpha | Corresponds to LocateReqd (114) in Cboe FIX. Optional, only processed for Sell Short and Sell Short Exempt orders. `N` = Client affirms ability to borrow (default) `Y` = Client does not affirm ability to borrow (results in reject) |
| MassCancelID | 20 | Text | Corresponds to MassCancelID (7695) in Cboe FIX. Copied from the MassCancelID passed on the original `Purge Orders` message. |
| MassCancelInst | 16 | Text | Corresponds to MassCancelInst (7700) in Cboe FIX. Used for specification of `Purge Orders` message functionality. At least one character must be provided (MPID Filter). Contiguous characters must be specified up to total length. Truncated/unspecified characters will default to values indicated (D) below. 1st Character: MPID Filter `A` = No filtering by MPID is performed. `F` = All orders that were sent under the MPID specified in ClearingFirm optional field. If ‘F’ specified and ClearingFirm not provided, the Purge Orders message will be rejected. If ‘F’ specified and ClearingFirm is provided but is blank (NULL), the Mass Cancel or Purge Orders message will be treated like ‘A’, and no filtering by clearing firm relationship is performed. 2nd Character: Acknowledgment Style `M` = (D) Order Cancelled messages are sent for each cancelled order. If "M" is set and the MassCancelID optional field is specified, the MassCancelID value is ignored. `S` = A single Mass Cancel Acknowledgment message is sent once all cancels have been processed. The MassCancelID optional field must be specified or the Mass Cancel or Purge Orders message will be rejected. `B` = Both individual Order Cancelled and Mass Cancel Acknowledgment messages will be sent. Also requires MassCancelID optional filed to be specified or the Mass Cancel or Purge Orders message will be rejected . 3rd Character: Lockout Instruction `N` = (D) No lockout `L` = Lockout until corresponding RiskReset received. Lockout can be used only with MPID Filter set to ‘F’, otherwise the Purge Orders message will be rejected. Lockout will apply to all New Order and Modify Order messages for the ClearingFirm (and symbol or RiskGroupIDs , if specified). A self-imposed lockout can be released using the RiskReset optional field in a `New Order` message. |
| MatchingUnit | 1 | Binary | Corresponds to MatchingUnit (25017) in Cboe FIX. Matching unit number the `Purge Orders` message will be sent toward. If blank or 0, the `Purge Orders` message will be sent to all units. Incompatible with symbol-level purges, specifying both symbol and MatchingUnit will cause the `Purge Orders` message to be rejected. If both MassCancelInst lockout instruction = `L` and MatchingUnit are specified, a lockout will occur and will impact only the specified matching unit. Subsequent risk resets will clear risk locks on all units. |
| MaxFloor | 4 | Binary | Corresponds to MaxFloor (111) in Cboe FIX. Portion of OrderQty to display. The balance is reserve. 0 displays the entire quantity. The displayed quantity of each order at a price level is decremented first. When the displayed quantity is decremented below one round lot, it is is reloaded up to MaxFloor from reserve. `Default` = 0 |
| MinQty | 4 | Binary | Corresponds to MinQty (110) in Cboe FIX. Minimum fill quantity for non-routable hidden or non-routable IOC orders which only interact with liquidity on the target Cboe Exchange. Ignored if Enable True MinQty is set to ‘No’ and the order is a routable displayed or routable IOC. Order is rejected if Enable True MinQty is set to ‘Yes’ and the order is a routable displayed or routable IOC. Default is zero. Odd lot and mixed lot quantities allowed. When the remaining size on an order is less than the defined MinQty, then MinQty will be automatically set to the remaining size. When Enable True MinQty is set to ‘No’ the minimum total fill size may be made up of several consecutive smaller fills. Setting this port attribute to ‘Yes’ will require every fill to meet the defined MinQty. See U.S. Equities BOE Port Attributes for details. If Enable True MinQty is set to ‘Yes’, orders will be converted into standard MinQty during a Periodic Auction. BYX ​: Periodic Auction Eligible orders will remain as True MinQty in the continuous book. |
| OrderQty | 4 | Binary | Corresponds to OrderQty (38) in Cboe FIX. Order quantity. System limit is 999,999 shares. On `Order Restated` messages the OrderQty may be updated (for example, for SWP or CMC restatements). |
| OrdType | 1 | Alphanumeric | Corresponds to OrdType (40) in Cboe FIX. `1` = Market `2` = Limit (default) `3` = Stop `4` = Stop Limit `P` = Pegged Pegged requires ExecInst be set to ‘L’, ‘M’, ‘m’, ‘P’, ‘Q’, or ‘R’. Market implies a TimeInForce of Day. Market day orders post in LULD straddle state or if a short sale during a Regulation SHO short sale circuit breaker. Pegged orders may not be routable except for midpoint pegs BYX where RoutStrategy = RMPT, RMPL, or DIRC. |
| OrigClOrdID | 20 | Text | Corresponds to OrigClOrdID (41) in Cboe FIX. |
| PegDifference | 8 | Signed Binary Price | Corresponds to PegDifference (211) in Cboe FIX. Optional signed value up to four decimal places*, when the peg difference is below $1.00, is added to the result of peg calculation. When the peg difference is above $1.00 a maximum of two decimal places can be specified. Previously was required to be only a non-aggressive offset. Must be zero for non-pegged orders. Default is zero for Midpoint Discretionary Orders with ExecInst = d. Default is $0.01 (-$0.01) for sell (buy) Midpoint Discretionary Orders with ExecInst (18) = e. Displayed Primary Peg orders with non-aggressive offset must have TimeInForce = R (Regular Hours Only) or 0 (Day). Day orders must be submitted after 9:30 a.m. ET. BYX and EDGX : If ExtExecInst = T (Retail Price Improving order): May be priced in $0.001 increments Must be ≥ 0 for Buy orders Must be ≤ 0 for Sell orders *PegDifference is rounded (down for buy, up for sell) to fit the tick size. For Periodic Auction Only orders, aggressive offsets only for primary peg orders. No restrictions for Periodic Auction Eligible orders. Orders with passive offsets will be rejected. |
| PreventMatch | 3 | Alpha | Corresponds to PreventMemberMatch (7928) in Cboe FIX. Three characters: 1 st character - MTP Modifier: `N` = Cancel Newest `O` = Cancel Oldest `B` = Cancel Both `S` = Cancel Smallest `D` = Decrement larger / Cancel Smaller `d` = Same as D above, but only decrement LeavesQty. Do not restate OrderQty . 2nd character - Unique ID Level: `F` = Prevent Match at Firm(Member) Level `M` = Prevent Match at MPID Level `X` = Prevent Match at the Affiliate (Exchange Member) or Sponsored Participant Level 3rd character - Trading Group ID (optional): Member specified alphanumeric value 0-9, A-Z, or a-z. The Unique ID level (character 2) of both orders must match to prevent a trade. If specified on both orders, Trading Group ID (character 3) must match to prevent a trade. The MTP Modifier (character 1) of the inbound order will be honored, except that if the inbound order specifies Decrement and the resting order does not, and the resting order is larger, then both orders will be cancelled. This exception is to protect the order entry software for the resting order from receiving an unexpected restatement message. If order entry software is prepared to handle unexpected restatement messages, this exception may be overridden at the port level by requesting Allow MTP Decrement Override functionality. Uses of MTP Modifier D or d and users of Allow MTP Decrement Override functionality must be prepared to receive an `Order Restated` message that decrements LeavesQty (and, for method D, OrderQty as well). Match Trade Prevention will be supported for Periodic Auctions (BYX only) . |
| Price | 8 | Binary Price | Corresponds to Price (44) in Cboe FIX. Limit price. Four implied decimal places. Required for limit orders ( OrdType = 2). If specified on market order ( OrdType = 1), the order will be rejected. This field is also used to specify an optional cap price for pegged orders. |
| RiskGroupID | 2 | Binary | Corresponds to RiskGroupID (7699) in Cboe FIX for `New Order` and `Purge Orders` messages. Used to group orders for use in `Purge Orders` messages where multiple orders can be cancelled by specifying a list of RiskGroupIDs . |
| RiskReset | 8 | Text | Corresponds to RiskReset (7692) in Cboe FIX. For use by customers to release MPID, symbol or RiskGroupID level lockout conditions resulting from self-imposed lockouts issued via `Purge Orders` messages. Single Character Values: `S` = Symbol level lockout reset `F` = MPID level lockout reset `C` = RiskGroupID lockout reset Values may be combined together to allow for resets of multiple self-imposed lockouts in a single message. For example, ‘FS’, ‘SC’, ‘FC’, and ‘SFC’ are all acceptable values. If orders have been locked out any level, inbound orders for the locked symbol , MPID , or RiskGroupID will be rejected until this field is filled with the appropriate value on a `New Order` message. |
| RouteDeliveryMethod | 3 | Text | Corresponds to RouteDeliveryMethod (9350) in Cboe FIX. `RTI` = Route to improve (default if not specified). Ability to receive price improvement will take priority over speed of execution. `RTF` = Route to Fill. Speed of execution will take priority over potential price improvement. Only applicable to RoutStrategy = ROUT, ROUX, and ROUE. |
| RoutingInst | 4 | Text | Corresponds to RoutingInst (9303) in Cboe FIX. 1 st character: `B` = Book Only (not routable, will remove from local book) 1 `P` = Post Only (not routable) 2 `R` = Routable `S` = Super Aggressive - Cross or Lock (order will be removed from the book and routed to any away quote that is locking or crossing the order). May remove liquidity after posting. `X` = Aggressive - Cross or Lock (order will be removed from the book and routed to any away quote that is locking or crossing the order) `K` = Super Aggressive When Odd Lot (routable order will be automatically assigned Super Aggressive status when it becomes an odd lot) `A` = Post to Away (a limit order that will post remainder to an away venue specified in ExDestination for applicable routing strategies) `N` = Non-Displayed Swap - Book only, Hidden order that may remove liquidity after posting. Requires DisplayIndicator = I . 2nd character (for use with RoutStrategy = DIRC, TRIM, SLIM, SLIM+ only): `D` = Eligible to route to DRT `L` = Route to displayed markets only |
| RoutStrategy | 6 | Text | Corresponds to RoutStrategy (9400) in Cboe FIX. Please note: DRT : Dark Routing Technique LCPMC : Low Cost Protected Market Centers All exchanges: `ALLB` = Book + IOC Other Cboe Exchanges `RDOT` = Book + DRT + IOC/Day NYSE `ROUT` = Book + DRT + Street ( default if not specified ) `ROUX` = Book + Street `ROUZ` = Book + DRT `SWPA` = ISO Sweep of All Protected Markets `DIRC` = Book + DRT + Directed IOC or Directed ISO if ExecInst = f. ExDestination must also be sent. EDGA/EDGX: `ROUC` = Book + DRT + LCPMC + All Other Protected Markets + Posts to EDGX (EDGX only) or EDGA (EDGA only) BYX: `DIRC` = Book + Midpoint IOC IEX (also requires Ordtype = P, ExecInst = M or m, and ExDestination = I) `RMPT` = Book + Midpoint IOC Select DRT/Lit Venues) + Post to Local Book if non-IOC (must be used in conjunction with Midpoint Peg order type) `RMPL` = Book + Midpoint IOC RMPT Venues + Midpoint IOC RMPL Venues + Post to Local Book if non-IOC (must be used in conjunction with Midpoint Peg order type) BYX : `TRIM` = Book + NYSE National + Nasdaq Texas+ (DRT) `SLIM` = Book + LCPMC + (DRT) + LCPMC + All other protected markets BZX: `TRIM` = Book + BYX + NYSE National + Nasdaq Texas + NYSE American + (DRT) `SLIM` = Book + BYX + LCPMC + (DRT) + LCPMC + All other protected markets SLIM+ = BYX 1 + BZX + LCPMC + (DRT) + LCPMC + All other protected markets BZX/EDGX: `ROOC` = Listing Market Open + Book + DRT + Street + Listing Market Close 2 1 Route to BYX prior to scraping BZX unless price improvement is available. 2 Can be used with ExecInst = a, c, or o to specify listing market opening/closing eligibility. |
| SecondaryOrderID | 8 | Binary | Corresponds to SecondaryOrderID (198) in Cboe FIX. Denotes an alternative OrderID which is present on Cboe market data feeds (for example, to hide that a reserve (iceberg) order has reloaded). Or, OrderID of the contra side of a prevented match. |
| Side | 1 | Alphanumeric | Corresponds to Side (54) in Cboe FIX. `1` = Buy `2` = Sell `5` = Sell Short (client affirms ability to borrow) `6` = Sell Short Exempt |
| StopPx | 8 | Binary Price | Corresponds to StopPx (99) in Cboe FIX. Stop price. Required if OrdType = 3 (Stop) or 4 (Stop Limit). Stop and Stop Limit orders will only be triggered off Last Sale Eligible trades. |
| StepUpAmount (BYX only) | 8 | Binary Price | Corresponds to StepUpAmount (25025) in Cboe FIX. StepUpAmount is implicitly added to bid prices and subtracted from offers prices for Enhanced RPI (Retail Price Improvement) orders. The StepUpAmount value is specified in 0.001 minimum increments. The minimum value is 0.000 (default). The maximum value is 99.999. |
| SubLiquidityIndicator | 1 | Alphanumeric | Additional information about an execution. Cboe may add additional values without notice. Members must gracefully ignore unknown values. ASCII NUL (0x00) = No Additional Information `E` = Trade added RPI liquidity ( BYX and EDGX ) `H` = Trade added hidden liquidity `I` = Trade added hidden liquidity that was price improved `J` = Execution from first order to join the NBBO `P` = Periodic Auction ( BYX Only ) `S` = NBBO-Setter fee eligible `V` = Visible liquidity add trade that was price improved `m` = Midpoint peg order `s` = Order set the NBBO but is not fee eligible |
| Symbol | 8 | Alphanumeric | Corresponds to Symbol (55) in Cboe FIX. Entire Cboe format symbol or symbol root if using CQS or CMS format. |
| SymbolSfx | 8 | Alphanumeric | Corresponds to SymbolSfx (65) in Cboe FIX. CMS or CQS suffix. Do not send SymbolSfx if using Cboe format or if the symbol does not have a suffix. |
| TimeInForce | 1 | Alphanumeric | Corresponds to TimeInForce (59) in Cboe FIX. `0` = Day (Default) (Early Trading Session until end of Regular Session) `1` = GTC (allowed, but treated as Day) `2` = At the Open ( BZX only and Cboe listed securities only) `3` = IOC (Portion not filled immediately is cancelled) `4` = FOK (an IOC where the entire size must be filled, else the order will be cancelled back) `5` = GTX (Early Trading Session until end of Post-Market Session) `6` = GTD (Early Trading Session; expires at earlier of ExpireTime or end of Post-Market Session) `7` = At the Close ( BZX only and applicable to Cboe Listed securities and Cboe Market Close symbols `E` = PRE (Pre-Market Trading Session until end of Regular Session) `R` = RHO (Regular Hours/Session Only) `T` = PTD (Pre-Market Trading Session; expires at earlier of specified ExpireTime or end of Post-Market Session) `X` = PTX (Pre-Market Trading Session until end of Post-Market Session) |
| WorkingPrice | 8 | Binary Price | Corresponds to WorkingPrice (9690) in Cboe FIX. If price had to be adjusted to a less aggressive value for some reason, then the adjusted price will be reported here, otherwise equals Price . |

## Reason Codes

The following is a list of all reason codes used by Cboe. These reason codes are used in a variety of contexts (order cancellations and order rejections). All reasons are not valid in all contexts. The reason code will be followed by free-form text. The specific text the system delivers may vary from the test listed below, to provide clarification of the reject reason. Cboe may add additional reason codes without notice. Members must gracefully ignore unknown values.

**Table 1. Reason Codes**

| Code | Description |
|---|---|
| A | Admin |
| C | Capacity undefined |
| D | Duplicate identifier (e.g., ClOrdID) |
| E | Size reduction due to SWP restatement |
| F | Failed to quote |
| H | Halted |
| I | Incorrect data center |
| J | Too late to cancel |
| K | Order rate threshold exceeded |
| L | Order would lock or cross NBBO |
| M | Order size exceeded |
| N | Ran out of liquidity to execute against |
| O | ClOrdID doesn't match a known order |
| P | Can't modify an order that is pending fill |
| Q | Waiting for first trade |
| R | Routing Unavailable |
| S | Short sale price violation |
| T | Fill would trade through the NBBO |
| U | User requested |
| V | Would wash |
| W | Add liquidity only order would remove |
| X | Order expired |
| Y | Symbol not supported |
| Z | Unforeseen reason |
| f | Risk management MPID or RiskGroupID level |
| m | Market access risk limit exceeded |
| o | Max open orders count exceeded |
| r | Reserve reload |
| s | Risk management symbol level |
| u | Limit Up Limit Down (LULD) |
| w | Would remove on unslide |
| x | Crossed market |
| y | Order received by Cboe during replay |

## List of Message Types

### Member to Cboe

**Table 1. Message Types - Member to Cboe**

| Message Name | Level | Type | Sequenced |
|---|---|---|---|
| Login Request | Session | `0x37` | No |
| Logout Request | Session | `0x02` | No |
| Client Heartbeat | Session | `0x03` | No |
| New Order | Application | `0x38` | Yes |
| Cancel Order | Application | `0x39` | Yes |
| Modify Order | Application | `0x3A` | Yes |
| Purge Orders | Application | `0x47` | Yes |

### Cboe to Member

**Table 1. Message Types - Cboe to Member**

| Message Name | Level | Type | Sequenced |
|---|---|---|---|
| Login Response | Session | `0x24` | No |
| Logout | Session | `0x08` | No |
| Server Heartbeat | Session | `0x09` | No |
| Replay Complete | Session | `0x13` | No |
| Order Acknowledgment | Application | `0x25` | Yes |
| Order Rejected | Application | `0x26` | No |
| Order Modified | Application | `0x27` | Yes |
| Order Restated | Application | `0x28` | Yes |
| User Modify Rejected | Application | `0x29` | No |
| Order Cancelled | Application | `0x2A` | Yes |
| Cancel Rejected | Application | `0x2B` | No |
| Order Execution | Application | `0x2C` | Yes |
| Trade Cancel or Correct | Application | `0x2D` | Yes |
| Mass Cancel Acknowledgment | Application | `0x36` | No |
| Purge Rejected | Application | `0x48` | No |

## U.S. Equities BOE Port Attributes

The table below lists BOE port attributes that are configurable on the port or firm level. Changes to these attributes can be made by contacting the Cboe Trade Desk.

**Table 1. US Equities BOE Port Attributes**

| Attribute | Default | Description |
|---|---|---|
| All Routable to Halt Auction (BZX and EDGX Only) | No | Send all routable orders to the halt auction on the primary listing exchange. This applies to all routing strategies. |
| Allow Directed ISO * | Yes | Allow or disallow ISO orders directed to other market centers. |
| Allow ISO * | Yes | Allow or disallow ISO orders. |
| Allow MTP Decrement Override *^ | No | Overrides the exception that requires both the resting and inbound order to be marked as "Decrement". |
| Allow Post-Market | Yes | Allow orders to be entered after the Regular Session close. |
| Allow Pre-Market | Yes | Allow orders to be entered prior to Regular Session open. |
| Allow Sponsored Participant MTP Control *^ | No | Allow Sponsored Participant to override port default for match trade prevention by using PreventMatch on the order level. |
| Allow Test Symbols Only | Disabled | Allow or disallow orders in non-test symbols. |
| Allowed Clearing MPIDs** | All MPIDs | MPID(s) allowed for trading on the port. If Sponsored Port attribute is enabled, only one Clearing MPID is allowed for trading on that port. |
| Cancel on Disconnect | Option 1 | Cancels open orders upon order handler session disconnect; both graceful and ungraceful. If Cancel On Disconnect is set, open orders in Symbols that are not in Closed state at the time of the disconnect are cancelled. `1` = Cancel continuous book orders only (default) `2` = Cancel all open orders (continuous + auction*) `3` = Do not cancel any open orders *If disconnect occurs during the cut-off period for an auction, On-Open, On-Close and Late orders that are to participate in the auction will not be cancelled. |
| Cancel on ME Disconnect | Yes | When set to ‘No’, this setting allows orders to remain open on a Matching Unit failover. When set to ‘Yes’, all open orders associated with a session are immediately cancelled in the event of loss of connectivity to a Matching Unit. In any event, if a failover takes longer than five minutes, all orders are cancelled unconditionally. |
| Cancel on Regulatory Halt | No | Cancels open orders upon receipt of a Regulatory Halt. |
| Cancel on Reject + | No | Cancels an order upon a modify reject. |
| Cancel Open Orders on DROP Port Disconnect * | None | Only applicable if Reject Orders on DROP Port Disconnect has been enabled. When the last Standard FIX DROP port associated with an order handler session has disconnected, open orders, associated with the session are cancelled. `No` = Disabled `Yes` = Cancel all open orders Note this parameter applies to Standard FIX DROP ports and not Order-By-Order DROP ports (ODROP). |
| Capacity Override | None | When set, the capacity of individual orders received on the port will default to the Member specified order capacity. `None` = No override (Default) `A` = Agency `P` = Principal `R` = Riskless Principal |
| Crossed Market Cancel / Reject | No | Reject new orders when the NBBO in the security is crossed. Routable orders will have any remaining quantity cancelled back when the order returns to the book. Order modifications which cause a loss in priority will result in a cancel of the original order if the NBBO is crossed upon receipt of the modify request. |
| Default Attributed Quote *+ | (see description) | Default value for AttributedQuote (9732). May override at order level. `Yes` = Attribute to MPID `RTAL` = Attribute as RTAL `No` = Don’t Attribute (may override at order level) Never* = Never Attribute *May only change this setting to ‘Yes’ or ‘No’ after executing Attribution Addendum to Exchange User Agreement. |
| Default CrossTradeFlag (BYX Only) | 0 | Sets default CrossTradeFlag for inbound orders to designate Periodic Auction eligibility. `0` = None (Default) `1` = Periodic Auction Only `2` = Periodic Auction Eligible `3` = Midpoint Peg - Periodic Auction Only When set to '2', IOC, FOK, and displayed orders are not converted to a Periodic Auction Eligible order and are sent to the book as-is. When set to '2', DisplayIndicator (9479) will be ignored if ExecInst (18) = `m` or `M` . When set to ‘3’, IOC, FOK, IOC/FOK orders with ExecInst (18) = M, and all other orders where ExecInst (18) does not = m will not be converted and will be sent to the book as-is. When set to ‘3’, all non-IOC/FOK orders with ExecInst (18) = M will be converted to RHO Midpoint Peg - Periodic Auction Only order. . |
| Default Exec Instruction +* | (None) | Default execution instruction for new orders. See ExecInst for details. If a port level setting is present, new orders sent with a value of NULL 0x00 will use the port level setting. |
| Default MPID | None | Default MPID to use if none is sent on a `New Order` message. |
| Default MTP Value *^+ | None | Specifies default value for PreventMatch. When set to ‘X’, Affiliate Firm’s or Sponsored Participant’s match trade prevention will be used by default. |
| Default Price Sliding(Hidden Order Override) + | S | Default price sliding behavior for hidden orders. See DisplayIndicator for details. |
| Default Price Sliding + | S | Default price sliding behavior. See DisplayIndicator for details. |
| Default Routing Instruction (Hidden Order Override) + |  | Specifies a default value for RoutingInst that is applied to hidden orders only. |
| Default Routing Instruction + |  | Specifies a default value for routing. Fields can be overridden at the order level. The defaults are RoutingInst = R, RouteDeliveryMethod = RTI, and RoutStrategy = ROUT |
| Default to Retail Order *^+ | None | Default ExtExecInst = R or P. |
| Default True MinQty | No | Do not aggregate multiple contra orders to meet the MinQty specified on an order. If set to ‘Yes’, orders will be converted into standard MinQty during a Periodic Auction. Periodic Auction Eligible orders will remain as True MinQty in the continuous book (BYX Only) . |
| Disallow Market Orders | Option 1 | Controls the acceptance or rejection of inbound Market orders during continuous trading. Do not restrict Market orders. Reject Market orders during continuous trading, but allow Market orders during openings, re-openings, auctions, and auction routing (e.g. ROOC). Reject all Market orders except MOO and MOC orders (including CMC orders). |
| Duplicative Order Protection Action | Option 1 | Action taken when Duplicative Order Protection criteria is met: 1 = Not enabled. 2 = Reject new offending orders 3 = Disable port for ClearingFirm . Must call Cboe Trade Desk to reenable. |
| Duplicative Order Protection Order Count Threshold | None | Number of consecutive orders with the same ClearingFirm, Price, OrdQty, and Symbol that must be seen to initiate Duplicative Order Protection Action. |
| Early Trading Session Opt-Out | No | Allows orders to be executable during the Early Trading Session . If set to Yes, the following TimeInForce values will be translated: 0 (DAY) → E (PRE) 5 (GTX) → X (PTX) 6 (GTD) → T (PTD) |
| Enforce Rate Limit via Pause | False | When set to False, the existing Port Order Rate Threshold, Sustained Port Order Rate Threshold, Symbol Order Rate Threshold, and Sustained Symbol Order Rate Threshold port attributes will be enforced by rejects (as described). When set to True, Port Order Rate Threshold, Sustained Port Order Rate Threshold, Symbol Order Rate Threshold, and Sustained Symbol Order Rate Threshold port attributes will be enforced by read pause instead of by rejects. |
| Fat Finger Protection * | None | Orders entered through the NBBO by a specified percentage or dollar based limit price tolerance will be rejected. Limits may be different for different price ranges and price ranges may vary across markets. Please see the Cboe Titanium U.S. Equities/Options Web Portal Port Controls Specification for complete details. |
| Force MDO with QDP (EDGA and EDGX Only) | n | When set, midpoint and standard MDO order types will default to MDO with QDP orders. `n` = Do nothing (default) `b` = Book only MDO with QDP `p` = Post only MDO with QDP |
| Gross Daily Risk Limit Order Notional Cutoff * | None | Results in rejects for limit orders when gross exposure of limit orders exceeds this value for this port. Maximum whole dollar value of $1 billion/port. |
| Gross Daily Risk Market Order Notional Cutoff * | None | Results in rejects for market orders when gross exposure of limit orders exceeds this value for this port. Maximum whole dollar value of $1 billion/port. |
| Hold Early to 7am (BZX and EDGX Only) | False | Controls the executable time of orders submitted prior to 7:00 a.m. ET with a TimeInForce (59) that allows trading in the Early Trading Session. `False` = Orders may enter the book and trade as early as 4:00 a.m. ET. `True` = Orders will be queued until 7:00 a.m. ET. |
| Lock Auction Orders (BYX Only) | False | Disallow order cancellation during periodic auction. `False` = Allow cancellations `True` = Do not allow cancellations |
| Maximum Order Dollar Value * | Unlimited | Maximum dollar value per order. |
| Maximum Order Size * | 25,000 | Maximum order quantity |
| MPID Filter for Purge Ports | None | Specify up to ten MPIDs per purge port for which purges will be permitted. If a purge request specifies an MPID not included in the list of configured MPIDs, the purge request will be rejected. If a purge port is configured with multiple MPIDs and a purge request is sent without any MPIDs specified, the purge will be applied only to the list of configured MPIDs. |
| Net Daily Risk Limit Order Notional Cutoff * | None | Results in rejects for limit orders when net exposure of limit orders exceeds this value for this port. Maximum whole dollar value of $1 billion/port. |
| Net Daily Risk Market Order Notional Cutoff * | None | Results in rejects for market orders when netexposure of limit orders exceeds this value for this port. Maximum whole dollar value of $1 billion/port. |
| Notional Cutoff Aggregation Methods * | None | `Gross exposure` = CBB + CBO + CEB + CEO `Net exposure` = \|(CEO + CBO) - (CEB + CBB)\| On a given port, Cboe will calculate an track four values: `CBB` = Cumulative Notional Booked Bid Value. The sum of limit price x size for all booked sell limit orders. `CBO` = Cumulative Notional Booked Offer Value. The sum of limit price x size for all booked sell limit orders. `CEB` = Cumulative Notional Executed Bid Value. The sum of size x trade price for all executed buy orders. `CEO` = Cumulative Notional Executed Sell Value. The sum of size x trade price on all executed sell orders. |
| Port Order Rate Threshold | 5,000 msgs/s `Max allowed` = 10,000 msgs/s (EDGX Only) | The maximum allowed message rate on the session. When the first non-session level message is received, a one second window begins. During the second no more than 4,999 additional non-session level messages will be allowed within that window. If the rate is exceeded, all new orders in the time window are rejected, modifies are treated as cancels, and cancels are processed. , If maximum rate limit of 10,000 is requested, no more than 9,999 additional non-administrative messages will be allowed within that one second window. The default value is 5,000 msgs/sec and the maximum value is 10,000 msgs/sec (if requested) EDGX only . Note: Order handler burst rates towards each matching unit may be limited as described in Architecture and Message in Flight Settings . |
| Reject Market Orders Without NBBO | No | Reject Market Orders (including unpriced Peg Orders and Stop Orders) when there is no NBBO on the opposite side. |
| Reject Orders on DROP Port Disconnect * | No | If all associated Standard FIX DROP ports associated with an order entry session experience disconnection, new orders will be rejected until at least one Standard FIX DROP port session has been reestablished. Note this parameter does not apply to Order-By-Order drop ports (ODROP). |
| Reject Orders on DROP Port Timeout (seconds) * | 30 seconds | Only applicable if Reject Orders on DROP Port Disconnect has been enabled. When the last Standard FIX DROP port associated with an order entry session has disconnected, begin rejecting orders on the order entry session if a Standard FIX DROP session has not been reestablished within this timeout. Minimum value allowed is 0 seconds. |
| Risk Group Id(s) | No | A comma separated list of values that, if configured, will cause orders without one of the listed RiskGroupIDs to be rejected. |
| Routing Retail Indicator (EDGX Only) | No | Mark orders as retail when routing to dark liquidity pools. |
| Send Peg Restatements | Option 1 | Send restatements for Peg order movements. No Peg restatements (default). Market Maker Peg orders only. All Peg orders except Market Maker Peg orders. All Peg orders. |
| Send Trade Breaks ^ | No | Enables sending of `Trade Cancel or Correct` messages. |
| Single Order ADV Check | None | Reject orders when order size exceeds a specified percentage of the 20-day ADV. Members may also specify a 20-day ADV amount below which the check will not be applied. |
| Sponsored Port | No | Designates that the session will carry Sponsored flow. |
| Sponsoree Firm ID | None | Only available when Sponsored Port is set to 'Yes'. Will be populated with the Sponsored Firm's Firm ID. |
| Sustained Port Order Rate Threshold (EDGX Only) | 25,000 msgs/5 s | The maximum allowed message rate on the session. When the first non-session level message is received, a five second window begins. During the five seconds no more than 24,999 additional non-session level messages will be allowed within that window. If the rate is exceeded, all new orders in the time window are rejected, modifies are treated as cancels, and cancels are processed. Maximum value is 25,000 msgs/5 sec. Note: Order handler burst rates towards each matching unit may be limited as described in Architecture and Message in Flight Settings . |
| Sustained Symbol Order Rate Threshold (EDGX Only) | 25,000 msgs/5 s | Functions the same as the Port Order Rate Threshold, but is calculated at the symbol level. It is capped by the Port Order Rate Threshold. Maximum value is 25,000 msgs/5 sec. Note: Order handler burst rates towards each matching unit may be limited as described Architecture and Message in Flight Settings . |
| Symbol Order Rate Threshold | 5,000 msgs/s Max allowed = 10000 msgs/s (EDGX Only) | Functions the same as the Port Order Rate Threshold, but is calculated at the symbol level. It is capped by the Port Order Rate Threshold. The default value is 5,000 msgs/sec and the maximum value is 10,000 msgs/sec (if requested) (EDGX Only) . Note: Order handler burst rates towards each matching unit may be limited as described in Architecture and Message in Flight Settings . |

* Sponsored Participants require written approval from Sponsors to update these settings on ports associated to a Sponsor’s MPID.

† Port attribute can be overridden on an order by order basis.

^ Requires certification.

## Support

Please direct questions or comments regarding this specification to tradedesk@cboe.com.

## Revision History

| Date | Description |
|---|---|
| April 4, 2014 | Version 2.0.0 First Version 2 release. |
| May 1, 2014 | Version 2.0.1 Retail attribution value changed from RTL to RETL. |
| June 4, 2014 | Version 2.0.2 Removed references to CBSX and NSX. Retail attribute value changes from RETL to RTAL. Corrected length of NumberOfParamGroups to be one byte (not two bytes). Fixed naming inconsistency of AttributedQuote sometimes being called AttributedOrder . Added send peg restatements and retail order default port attributes. Noted that StopPx may be modified. |
| July 1, 2014 | Version 2.0.3 Corrected ExecInst to note that Midpoint Discretionary Order will only be available on EDGA. Corrected Cancel on Disconnect options |
| July 3, 2014 | Version 2.0.4 Added field descriptions for FeeCode and EchoText . |
| July 7, 2014 | Version 2.0.5 Removed all return bits from `User Modify Rejected V2` messages. No optional return fields are allowed. Corrected a number of optional return bits. Added RoutingInst , RoutStrategy , RouteDeliveryMethod , and ExDestination as optional return bits (byte 8). |
| July 9, 2014 | Version 2.0.6 Corrected instances where ContraCapacity and CorrectedSize may be requested as optional return fields. |
| August 12, 2014 | Version 2.0.7 Added RestatementReason value of S (size reduced due to SWP). The "Default Price Sliding" value incorrectly indicated H for EDGX instead of the correct value of P. Corrected description of Market Peg. |
| August 15, 2014 | Version 2.0.8 Removed text which indicated version 2 was not yet available as it is now live. |
| August 22, 2014 | Version 2.0.9 Removed ContraCapacity which is not available in US Equities. Added Super Aggressive When Odd Lot RoutingInst value. |
| August 26, 2014 | Version 2.0.10 Added Reason Code of w (Would Remove on Unslide). |
| August 27, 2014 | Version 2.0.11 Corrected stages of RMPT route strategy. |
| September 8, 2014 | Version 2.0.12 Corrections in allowed return bitfields. Updated Options-specific fields to match latest version of Options specification. Removed ContraCapacity from allowed return bitfields. Removed ContraBroker from List of Optional fields. |
| September 9, 2014 | Version 2.0.13 Removed AccessFee from `Order Execution V2` allowed return bitfields. Removed Options-specific `Bulk Order Acknowledgment V2` message fromSection 6. |
| September 11, 2014 | Version 2.0.14 Correction: ExtExecInst wasn’t marked as allowed for US Equities `New Order` `V2` . |
| September 29, 2014 | Version 2.0.15 Corrections: ROUC routing strategy will only be supported on EDGA/EDGX. Modified description of ROLF strategy to be Book + IOC LavaFlow. |
| October 10, 2014 | Version 2.0.16 Clarified ability to reuse ClOrdId with `Modify Order` s when daily limit trading risk controls are enabled. |
| November 13, 2014 | Version 2.0.17 Updated for EDGX Options. Added new fields TargetPartyID and MarketingFeeCode . Updated descriptions to note which fields are BZX Options or EDGX Options specific. |
| November 17, 2014 | Version 2.0.18 No functional changes. Clarified that LavaFlow’s representation in ExDestination is l which is a lowercase L. |
| December 2, 2014 | Version 2.0.19 MaxRemovePct will now be allowed on EDGA and EDGX, but must always be 0. |
| December 19, 2014 | Version 2.0.20 Correction for DiscretionAmount . The documentation incorrectly indicated this is a Signed Binary field when it is actually a Binary field. |
| January 8, 2015 | Version 2.0.21 Corrected `Order Execution V2` return bitfields to note that SubLiquidityIndicator is not allowed—it’s already available in the message body. Minor correction of PreventMatch text (no functional change). On DisplayIndicator , noted that I is implied on Midpoint Peg orders only |
| January 29, 2015 | Version 2.0.22 Removed references to ROLF and LavaFlow. |
| March 25, 2015 | Version 2.0.23 Corrected TRIM RoutStrategy descriptions. |
| May 19, 2015 | Version 2.1.0 Functionality modifications to EDGX to align with the other Bats equity exchanges: (effective 7/6/2015) EDGX Midpoint Match translated to Midpoint Peg No Lock, EDGX Hide Not Slide translated to Display Price Sliding, and EDGX price sliding default changes to Display Price Sliding. |
| June 10, 2015 | Version 2.1.1 Adjusted wording for ExecInst value of o. Added Reason Code value of T. Corrected message length of example `New Order V2` message. |
| July 6, 2015 | Version 2.1.2 Adjustments now that EDGX functionality changes are live. |
| July 27, 2015 | Version 2.1.3 Noted that RoutStrategy value of ROOC will only be available on BZX and EDGX effective 8/10/2015. Noted that ROOC orders with ExecInst set to c can route to halt auctions. |
| July 27, 2015 | Version 2.1.4 Added values to ExDestination and ContraBroker in anticipation of NSX reactivation on 8/31/2015. Added Routing Retail Indicator port attribute (EDGX only). Effective 9/10/2015. Added Single Order ADV Check port attribute. Effective 8/14/2015. Updated description of Fat Finger Protection port attribute. |
| August 10, 2015 | Version 2.1.5 Added EffectiveTime (effective 9/28/2015). Added Duplicative Order Protection port attributes. |
| October 26, 2015 | Version 2.1.6 Added port attribute "All Routable to Halt Auction". Updated RoutStrategy description of ROCO and ROBB. Updated effective date for EffectiveTime . |
| November 23, 2015 | Version 2.1.7 Added ALLB value to RoutStrategy . Updated effective date for "All Routable to Halt Auction." |
| February 17, 2016 | Version 2.1.8 Updated for new branding. |
| February 25, 2016 | Version 2.1.9 Added new RestatementReason value of P. |
| March 23, 2016 | Version 2.1.10 Updated description of RoutStrategy to state that routable ISOs must be sent using DIRC. Updated the minimum value of "Reject Orders on DROP Port Timeout" to be 0 seconds. |
| April 12, 2016 | Version 2.1.11 Added three TimeInForce values to support addition of Early Trading Session. Added "Allow Early Trading Session" port attribute. Added Hours of Operation section. All effective 5/23/2016. |
| April 14, 2016 | Version 2.1.12 Removed some route strategies. Removal of IOCM and ICMT effective May 5, 2016 on BYX Exchange and May 6, 2016 on EDGA Exchange. Removal of TRIM3 and TRIM3- effective May 6, 2016 on BZX Exchange. |
| April 25, 2016 | Version 2.1.13 Clarified when "Fat Finger Protection" is applied. Clarified wording for "Early Trading Session Opt-Out." |
| July 13, 2016 | Version 2.1.14 Added new ExecInst value of y (Trade at ISO). Added new ExDestination value of I (IEX, effective 9/2/2016) and ContraBroker value of IEX (effective 8/1/2016). |
| August 8, 2016 | Version 2.1.15 Updated effective date for supporting ExDestination of IEX to 8/19/2016. |
| January 24, 2017 | Version 2.1.16 Added IEX Midpoint routing to RoutStrategy. |
| March 2, 2017 | Version 2.1.17 Add new field type Date . |
| March 14, 2017 | Version 2.1.18 Add descriptions of port attributes "Allow Test Symbols Only", "Port Order Rate Threshold", and "Symbol Order Rate Threshold" |
| March 23, 2017 | Version 2.1.19 Added RMPL Route Strategy to RoutStrategy . |
| May 17, 2017 | Version 2.1.20 Added description of port attribute "Cancel on ME Disconnect" |
| June 14, 2017 | Version 2.1.21 Added IEX to the TRIM, TRIM-, TRIM2 and TRIM2- RoutStrategy venues. Added new RoutingInst value of N (Non-Displayed Swap) (effective 7/21/2017). |
| August 10, 2017 | Version 2.1.22 Added description of port attribute "Default Routing Instruction (Hidden Order Override)" |
| October 17, 2017 | Version 2.1.23 Cboe rebranding/logo changes. Removed `X` = Locked in cross RestatementReason as this is specific to European markets and was previously deprecated. |
| October 25, 2017 | Version 2.1.24 Corrected various spelling errors, field name and case inconsistencies. |
| December 4, 2017 | Version 2.1.25 Updated TimeInForce requirements for Displayed Primary Peg with non-aggressive PegDifference . Effective 12/15/17. |
| January 24, 2018 | Version 2.1.26 Reworked the `Modify Order` message to clarify when an order loses time priority and to harmonize with FIX Post to Away orders must be limit orders. |
| February 2, 2018 | Version 2.1.27 Added port attribute "Reject Market Orders Without NBBO" (effective 2/16/18). |
| March 20, 2018 | Version 2.1.28 Updated the market centers that support Post to Away in ExDestination. Added port attribute "Default True MinQty" (effective 4/18/18). |
| March 27, 2018 | Version 2.2.0 Added Cboe Market Close (CMC) functionality (effective TBD). Clarified that a zero MaxFloor (111) on a `Modify Order` message will be ignored. |
| May 08, 2018 | Version 2.2.1 LastShares will be used to report the number of shares cancelled on Cboe Market Close restatements. LeavesQty will be used for matched shares on CMC restatements. Updated description of Aggressive and Super Aggressive RoutingInst values. Added 15 th return byte to all messages from Cboe to Member. |
| May 11, 2018 | Version 2.2.2 Updated description on MinQty behavior and changes related to the release of Enable True MinQty port attribute. |
| June 08, 2018 | Version 2.2.3 Updated byte 15 Return Bitfields. None are applicable to US Equities. Defined Binary Signed Price data type, which is used for PegDifference . Added support for RoutingInst =N (NDS) on BYX, BZX, and EDGA (effective 6/14/18). |
| August 23, 2018 | Version 2.3.0 Added support for Equities Purge Ports (effective 10/1/18). Added `Purge Orders` , `Mass Cancel` `Acknowledgment` , and `Purge` `Rejected` message types and associated optional bitfields. Added definitions for MassCancelID, MassCancelInst, RiskGroupID, RiskGroupIDCnt, and RiskReset fields. Updated Trading Sessions to reflect that BZX is open until 8:00 p.m. ET. Added MDO ExecInst to EDGX effective 10/3/18. |
| August 27, 2018 | Version 2.3.1 Defined RiskGroupID Optional Field (effective 10/1/18). |
| September 13, 2018 | Version 2.3.2 Added CLNK as new value for RoutStrategy and h=HRT Execution Services LLC as new value for ExDestination . Effective 9/24/18 for EDGA only. |
| October 2, 2018 | Version 2.3.3 Removed Trade At ISO order due to Tick Pilot Sunset. |
| March 4, 2019 | Version 2.3.4 Updated trading session information to reflect extension of BYX Post-Market Session hours to 8:00 p.m. ET. Regarding `Login Response` , clarified that while a subset of units can be provided in the `Login Request` , all units will be provided in the `Login Response` . Added l=Virtu VEQ Link and v=Virtu VEQ as new values for ExDestination . Effective 3/8/19 for EDGA only. |
| March 22, 2019 | Version 2.3.5 Updated ROBB and ROCO routing strategies on EDGA. Updated TRIM and TRIM- on BYX and BZX. RDeprecated TRIM2 and TRIM2- on BZX. Deprecated SWPB routing strategy for all exchanges (effective 05/01/19). |
| June 25, 2019 | Version 2.3.6 Added ‘X’ value to ExtExecInst optional field to support Retail Priority on EDGX (effective TBD). |
| August 7, 2019 | Version 2.3.7 Corrected MessageType hexadecimal value to 28 in `Order Restated` message example. Changed Return Bitfield EquityNBBOProtect to "Reserved". |
| August 23, 2019 | Version 2.3.8 Updated Order Modified Return Bitfield to indicate Symbol field on second byte can be specified for a message. |
| October 11, 2019 | Version 2.3.9 Updated effective date for ExtExecInst optional field value "X - Retail Priority Order". Effective on EDGX only 11/1/19. |
| November 7, 2019 | Version 2.3.10 Added note indicating that the ‘at’ symbol and double quote characters are not permitted in the ClOrdID field ( effective 01/13/20) . |
| January 14, 2020 | Version 2.3.11 `Added reason code F` = Failed to quote . Added note indicating the specific reason code text the system delivers may vary from the text listed, to provide clarification of the reject reason. |
| January 17, 2020 | Version 2.3.12 Added note indicating routing strategy CLC will be replaced with DRT. The system will convert any instances of ROUD or ROUQ values in the RoutStrategy (FIX Tag 9400) instruction to the ROUZ value and convert any instance of ROUE values to the ROUT value. Effective on EDGX 2/3/20. |
| January 30, 2020 | Version 2.3.13 Added effective date for Cboe Marke Close (CMC), effective on BZX 3/6/20. Added "L" ExDestination value and "LTSE" ContraBroker value for Long Term Stock Exchange. |
| February 6, 2020 | Version 2.3.14 Updated Return Bitfield tables with bytes 16 and 17. Removed RoutingInst (9303) = Q, post only at limit. Removed MaxRemovePct (9618). Partial post only orders are no longer supported on BYX and BZX. |
| February 14, 2020 | Version 2.3.15 Added note indicating the CLC routing strategy will be deprecated and replaced with DRT. The system will convert any instances of ROUD or ROUQ values in the RoutStrategy (FIX Tag 9400) instruction to the ROUZ value and convert any instance of ROUE values to the ROUT value. Effective on EDGA 3/2/20. |
| March 11, 2020 | Version 2.3.16 Added ExDestination and ContraBroker values for MEMX and MIAX Pearl Exchanges. |
| April 29, 2020 | Version 2.3.17 Renamed CustomGroupID to RiskGroupID Added Port Attribute "Risk Group Id(s)" (effective May 15) |
| May 15, 2020 | Version 2.3.18 Added Maximum Order Limit section. Corrected values for ContraBroker in Example Order Execution Message. Added 'e' - Midpoint Discretionary Order with Quote Depletion Protection to ExecInst (effective 6/10/20). Updated effective date for Port Attribute "Risk Group (id(s)" to 5/22/20. |
| November 5, 2020 | Version 2.3.19 Updated DisplayIndicator (9479) description. Corrected RoutStrategy ROBB and ROCO description for EDGA. Corrected RoutStrategy TRIM - for BZX. Updated description for "Cancel Open Orders on DROP Port Disconnect" port attribute. Removed footnote indicating the ExDestination value 'I=Investors Exchange' has the Post to Away option available for ROUT and ROUX. Updated Maximum Open Orders Limits to 300,000 for EDGX and BZX. Clarifications to usage of PegDifference when using Midpoint Discretionary Orders. |
| November 10, 2020 | Version 2.3.20 Added note indicating EDGX Early Trading Session starting time will change from 7:00 a.m. to 4:00 a.m. , Order Acceptance starting time will change from 6:00 a.m. to 3:30 a.m., Order Acceptance end time will change from 7:00 a.m. to 4:00 a.m. ( EDGX Only ). |
| December 4, 2020 | Version 2.3.21 Updated effective date to TBD for changes to EDGX Early Trading Session to 4:00 a.m. and Order Acceptance starting time to 3:30 a.m.. |
| February 8, 2021 | Version 2.3.22 Added new port attribute 'Hold Early to 7am' ( EDGX Only ) (03/08/21). Corrected description of BaseLiquidityIndicator field to include `W` = Waiting value, as this value is already in use. Updated effective date for changes to EDGX Early Trading Session to 4:00 a.m. and Order Acceptance starting time to 3:30 a.m. (effective 03/08/21). Added ‘Section 1.5.1 - Architecture’ to provide high level overview of protocol architecture and source IP blocking feature. Added new ‘Section - Stale NBBO’ to describe system behavior when SIP NBBO is unavailable. |
| April 7, 2021 | Version 2.3.23 Removal of CLNK, INET, RDOX, AND TRIM- routing strategies (effective 04/21/21). |
| April 27, 2021 | Version 2.4.0 Added new section for Periodic Auctions, added CrossTradeFlag to the New Order and Order Acknowledgment bitfields, added new port attributes related to Periodic Auctions ( BYX Only ) (Effective 04/14/22 Effective Q3 2021 TBD ). |
| July 19, 2021 | Version 2.4.1 Updated Periodic Auctions effective date to (04/14/22 T BD ). |
| August 26, 2021 | Version 2.4.2 Updated EDGX Order Acceptance starting time to 2:30 a.m. (effective 09/07/21). |
| September 27, 2021 | Version 2.4.3 Added a new Port Attribute "Capacity Override" (effective 10/12/21). |
| October 6, 2021 | Version 2.4.4 Added a new Port Attribute "Force MDO with QDP" (EDGA and EDGX Only) (effective 10/28/21). |
| November 4, 2021 | Version 2.4.5 Duplicative Order Protection Time Threshold to be sunset (effective 12/07/21). Duplicative Order Protection Order Count will look at consecutive orders (effective 12/07/21). |
| December 2, 2021 | Version 2.4.6 Updated "Port Order Rate Threshold" and "Symbol Order Rate Threshold" Port Attributes to allow a maximum of 10000 msgs/sec (EDGX Only) (effective 12/14/21). Added new Port Attributes "Sustained Port Order Rate Threshold" and "Sustained Symbol Order Rate Threshold" (EDGX Only) (effective 12/14/21). |
| December 17, 2021 | Version 2.4.7 Updated Duplicative Order Protection Action description. Noted IOC Periodic Auction orders will not be accepted (BYX Only) (Effective 04/14/22 TBD). |
| January 13, 2022 | Version 2.4.8 Added a new MatchingUnit field to Optional Fields and Purge Order Bitfield (Effective 02/11/22 for EDGA and 02/14/22 for BYX, BZX, and EDGX). Updated the Purge Orders section indiciating that RiskGroupID or MPID purges with no Symbol may be directed to a specific matching unit using the MatchingUnit optional field (Effective 02/11/22 for EDGA and 02/14/22 for BYX, BZX, and EDGX). |
| March 7, 2022 | Version 2.4.9 MaxRemovePct field to be sunset (effective 05/08/22). |
| March 25, 2022 | Version 2.4.10 Updated Periodic Auctions effective date to 04/14/22 (BYX Only) . |
| April 8, 2022 | Version 2.4.11 Updated Execution Report with correct SubLiquidityIndicator value for Periodic Auctions (Effective 04/14/22) (BYX Only) . |
| May 9, 2022 | Version 2.4.12 Added new SubLiquidityIndicator value ‘s’ (effective 06/01/22). |
| May 25, 2022 | Version 2.4.13 Updated DiscretionAmount description in section 7. |
| June 15, 2022 | Version 2.4.14 Updated CrossTradeFlag return bitfields. |
| July 15, 2022 | Version 2.4.15 When Default CrossTradeFlag = `2` , IOC, FOK, and displayed orders will not be converted to a Periodic Auction Eligible order and will be sent to the book as-is (BYX Only) (effective 07/29/22). |
| August 19, 2022 | Version 2.4.16 Added LocateBroker to New Order and Order Acknowledgment bitfields (effective 10/14/22). MaxRemovePct field to be sunset (effective 01/20/23 effective 10/26/22 ). |
| August 31, 2022 | Version 2.4.17 Updated LocateBroker bitfield location (effective 10/14/22). |
| October 25, 2022 | Version 2.4.18 Updated effective date for MaxRemovePct field to be sunset (effective 01/20/23). |
| November 21, 2022 | Version 2.4.19 Clarified that the length of the LoginResponse will vary depending on acceptance or rejection of the LoginRequest . Added PreventMatch = `X` indicating prevent match at the affiliate (Exchange Member) level (effective 12/15/22). When Default MTP Value port attribute is set to ‘X’, affiliate match trade prevention will be used by default (effective 12/15/22). |
| December 6, 2022 | Version 2.4.20 Updated RestatementReason = `W` to indicate Wash or MTP Decrement. |
| January 26, 2023 | Version 2.4.21 SymbolSfx is an optional field on return order modified messages. |
| February 16, 2023 | Version 2.4.22 The CMC restatement will be sent at approximately 3:49 p.m. ET (effective 03/10/23). |
| March 10, 2023 | Version 2.4.23 ExecInst = `m` (Midpoint Peg- No Trade in a Locked Market) will be allowed for PAE orders ( CrossTradeFlag = `2` ) (BYX Only) (effective 3/29/23). Added ExDestination = `T` (pending approval) . |
| March 13, 2023 | Version 2.4.24 Added new "Sponsored Port" and "Sponsoree Firm ID" Port Attributes. |
| June 22, 2023 | Version 2.4.25 Added `ContraBroker` = ‘ICRS’ indicating routed to intelligent cross ( pending approval). |
| July 14, 2023 | Version 2.4.26 Updated "Allowed Clearing MPID(s)" Port Attribute to indicate only one Clearing MPID is allowed for trading on a port if "Sponsored Port" attribute is enabled. |
| July 28, 2023 | Version 2.4.27 Clarified that Price is optional on `Modify Order` requests for market orders. |
| August 22, 2023 | Version 2.4.28 TransactionTime in `Mass Cancel Acknowledgement` messages will indicate the time the event occurred in the Cboe Matching Engine (effective 08/31/23). |
| September 13, 2023 | Version 2.4.29 Added new Disallow Market Orders port attribute (effective 10/13/23). |
| September 15, 2023 | Version 2.4.30 Updated PreventMatch = `X` indicating prevent match at the affiliate (Exchange Member) or Sponsored Participant level. When "Default MTP Value" Port Attribute is set to ‘X’, C Firm’s or Sponsored Participant’s match trade prevention will be used by default. |
| September 22, 2023 | Version 2.4.31 Added new "MPID Filter for Purge Ports" Port Attribute (effective 10/06/23). When MassCancelInst = `F` , if ClearingFirm is provided but is blank (NULL), the `Mass Cancel` or `Purge Orders` will be treated like ‘A’. |
| October 30, 2023 | Version 2.4.32 Updated the identical Purge message definition to include MatchingUnit (effective 11/10/23). |
| November 17, 2023 | Version 2.4.33 Added new value of ‘3=Midpoint Peg - Periodic Auction Only’ to Default CrossTradeFlag port attribute (effective 12/15/23). |
| December 1, 2023 | Version 2.4.34 Added new Architecture and Message in Flight section (effective 01/19/24 on EDGA, and 02/09/24 on BYX, BZX, and EDGX). |
| February 2, 2024 | Version 2.4.35 Updated section 1.5 to include latency expectations as well as Members/TPH's responsibility to monitor the status of the messages they send to the exchange. |
| April 23, 2024 | Version 2.4.36 Noted a maximum of 1,295 `Modify Order` requests may be made to a single order each trading day. Clarified that for MaxFloor the displayed quantity is decremented below one round lot, it is is reloaded up to MaxFloor from reserve. |
| July 31, 2024 | Version 2.4.37 Added new Section 1.2 - Certification Requirement. |
| October 1, 2024 | Version 2.4.38 Effective 11/01/24, RoutStrategy = ROUC, DIRC, RMPT, RMPL, ROBB, ROCO, and TRIM will be removed or updated for EDGA, and RoutingInst = P will be supported for all applicable order types (EDGA Only) . |
| November 13, 2024 | Version 2.4.39 Added CmcSessions to Cboe Market Close section, to new Order byte 10, bit 4, new Order Acknowledgement byte 19, bit 8, to Order Restated byte 19, bit 8, and to List of Optional Fields (Effective 01/31/25). Added CmcMatchQty to Cboe Market Close section, to Order Restated byte 19, bit 8 and to List of Option Fields (Effective 01/31/25). Updated LeavesQty in CMC section to indicate that LeavesQty is the quantity of unexecuted shares. When Default CrossTradeFlag = '2' IOC, FOK, and displayed orders are not converted to a Periodic Auction Eligible order and are sent to the book as-is. |
| November 27, 2024 | Version 2.4.40 Effective 12/13/24, when the Default CrossTradeFlag port attribute set to `2` , DisplayIndicator (9479) will be ignored if ExecInst (18) = `m` or `M` . Additionally, orders with RPI instructions will set this port attribute to `0` (BYX only) . |
| January 15, 2025 | Version 2.4.41 Updated with Cboe Titanium branding. |
| January 27, 2025 | Version 2.4.42 Updated CmcSessions description in the Cboe Market Close section and List of Option Fields section to clarify that `S` = 3:54 p.m. (NASDAQ-listed only) (effective 01/31/25). |
| March 31, 2025 | Version 2.4.43 Added updated BZX times in trading session and added BZX to Hold Early to 7am Port Attribute (effective 05/01/25). |
| May 30, 2025 | Version 2.4.44 Added LocateBroker to Modify Order Input Bitfields . Added new "Enforce Rate Limit via Pause" Port Attribute (effective 06/27/25). |
| June 13, 2025 | Version 2.4.45 Updated ContraBroker to indicate that `CHX` = Routed to NYSE Texas Updated ExDestination to indicate that `M` = NYSE Texas . |
| July 15, 2025 | Version 2.4.46 Effective 08/15/25, Match Trade Prevention will be supported for Periodic Auctions (BYX only) |
| July 22, 2025 | Version 2.4.47 Added `G` = 24X to ExDestination in List of Optional Fields . Added `TFXE` = Routed to 24X to ContraBroker in Order Execution Message Fields . |
| August 19, 2025 | Version 2.4.48 Updated ExDestination in List of Optional Fields to indicate that `G` = 24X National Exchange Updated ContraBroker in Order Execution Message Fields to indicate that `TFXE` = Routed to 24X National Exchange |
| November 11, 2025 | Version 2.4.49 Updated RoutStrategy in List of Optional Fields to remove references to `ROBB` and `ROCO` . |
| December 30, 2025 | Version 2.4.50 Added StepUpAmount to List of Optional Fields and to byte 19 bit 64 on all return messages (effective 01/30/26). |
| January 26, 2026 | Version 2.4.51 Effective 03/27/26, the DateTime data type will begin populating the nanoseconds portion. |
| January 30, 2026 | Version 2.4.52 Updated Nasdaq BX to Nasdaq Texas. |
| March 23, 2026 | Version 2.4.53 Updated SubLiquidityIndicator in Order Execution Message Fields to indicate `E` = Trade added RPI liquidity will apply to both BYX and effective 04/10/26 EDGX. Updated SubLiquidityIndicator , ExtExecInst , and PegDifference in List of Optional Fields to indicate RPI will apply to BYX and effective 04/10/26 EDGX. Removed reference to RPI instructions from Default CrossTradeFlag (BYX Only) in US Equities BOE Port Attributes . Removed Trading Sessions table from Hours of Operations and added a link to the trading hours on the Cboe website . |
| April 17, 2026 | Version 2.4.54 Added ContraBroker and ExDestination values for Texas Stock Exchange. |
| April 24, 2026 | Version 2.4.55 Added section for Dedicated Cores . |
| August 4, 2026 | Version 2.4.56 Added DisplayIndicator (FIX Tag 9479) value of h = Hidden Multiple Price Slide (effective 09/04/26). |
