NewOrderSingle (35=D)

Used to submit a new spot or perpetual future order.

TagNameTypeRequiredDescription
11ClOrdIDstringYAn identifier specified by the sender to uniquely identify other messages correlating to this request. Must not exceed 18-31 characters depending on the character range or must be a variant 1 UUIDv4:

18 = All ASCII characters
20 = Alphanumeric characters and dash (-)
31 = Hexadecimal characters (0-9, a-f, lowercase and no preceding 0s)
36 = A UUID in standard format

If using a UUID it must be a variant 1 UUIDv4 that follows the standard format. This means all lowercase and hyphens that group the characters in sequences of 8, 4, 4, 4, 12 (e.g. 1985ca2d-61ef-49f1-bfce-6c39d8462914). Failure to follow this formatting will result in a reject.
453NoPartyIDsintYMarks the beginning of the Parties repeating group component. Currently a max of 1 party is supported to specify the portfolio UUID. In the future additional parties may get added.

Supported values:
1 = Specify portfolio UUID or client UUID
If no party is specified the message applies to the default portfolio UUID affiliated with the API key.
→ 448
PartyIDstringYThe unique identifier representing the party entry or portfolio that this order originates from. When PartyRole (452) = 24, set PartyID (448) equal to the UUID of the desired portfolio for this order. You can obtain this portfolio UUID in the response of the List all user portfolios endpoint.
→ 452
PartyRoleintYThe type of party entry that the PartyID (448) value represents. Currently supports:

3 = Client ID
24 = Customer account

The Customer Account (24) value indicates the PartyID value contains the UUID of the portfolio affiliated with the message. The Client ID (3) value indicates the PartyID value contains the UUID of a client managed by the broker (only applies to brokers).
18ExecInstcharCThe execution instruction flags for the order. Multiple values should be space delimited. Currently supports:

6 = Post only
E = Close only

Note: Close only orders must reduce the overall position size for a given instrument. Close only orders that increase position size will be rejected.
38OrderQtydecimalYThe amount of the base asset to be transacted.
40OrdTypecharYThe type of order for the request which can be:

1 = Market
2 = Limit
3 = Stop
4 = Stop Limit
O = Take Profit Stop Loss

Note: Market (1) orders automatically get converted to aggressively priced limit orders.
44PricedecimalCThe limit price for limit orders of the quote asset or USDC for perpetual futures. The decimal precision must fall within the requirements for each market, see the REST API for precision and decimal limits.
54SidecharYSide of the order, valid options:

1 = Buy
2 = Sell
55SymbolstringYSymbol of the instrument being traded (e.g. BTC-USDC or BTC-PERP)
59TimeInForcecharYSpecifies how long the order remains in effect. The following values are supported:

1 = Good Till Cancel (GTC, up to 30 days)
3 = Immediate or Cancel (IOC)
4 = Fill or Kill (FOK)
6 = Good Till Time (GTT, up to 30 days)
126ExpireTimeutc timestampCRequired when TimeInForce (59) is set to GTT (6). Specifies the time when a GTT order expires.
Time expressed in UTC, microseconds: YYYYMMDD-HH:MM:SS.ssssss
99StopPxdecimalCSpecifies the quote price at which the order activates for Stop, Stop Limit and TP/SL order types (40=3, 40=4, or 40=O).
3040StopLimitPxdecimalCSpecifies the limit price at which the TP/SL stop leg order is entered (40=O).
8000SelfTradePreventionStrategycharNThe following values specify what to do when two orders submitted by the same Organization/Account attempt to match:

N = Cancel aggressing order
Q = Cancel both orders
O = Cancel resting order
D = Decrement and cancel

Default if not specified is Cancel both orders (Q).
847TargetStrategyintCSpecifies the trading strategy. The following value is supported:

1001 = TWAP

OrderCancelReplaceRequest (35=G)

Used to modify a parameter of an existing order that is still live on exchange. Only the price and quantity can be modified.

TagNameTypeRequiredDescription
11ClOrdIDstringYAn identifier specified by the sender to uniquely identify other messages correlating to this request. Must not exceed 18-31 characters depending on the character range or must be a variant 1 UUIDv4:

18 = All ASCII characters
20 = Alphanumeric characters and dash (-)
31 = Hexadecimal characters (0-9, a-f, lowercase and no preceding 0s)
36 = A UUID in standard format

If using a UUID it must be a variant 1 UUIDv4 that follows the standard format. This means all lowercase and hyphens that group the characters in sequences of 8, 4, 4, 4, 12 (e.g. 1985ca2d-61ef-49f1-bfce-6c39d8462914). Failure to follow this formatting will result in a reject.
453NoPartyIDsintCMarks the beginning of the Parties repeating group component. Currently a max of 1 party is supported to specify the portfolio UUID. In the future additional parties may get added.

Supported values:
1 = Specify portfolio UUID or client UUID

If no party is specified the message applies to the default portfolio UUID affiliated with the API key.
If populated it must match the value on the referenced order specified in the OrigClOrdID(41).
→ 448
PartyIDstringCThe unique identifier used to represent the party entry.

If populated it must match the value on the referenced order specified in the OrigClOrdID(41).
→ 452
PartyRoleintCThe type of party entry that the PartyID (448) value represents. Currently supports:
3 = Client ID
24 = Customer account

The Customer Account (24) value indicates the PartyID value contains the UUID of the portfolio affiliated with the message. The Client ID (3) value indicates the PartyID value contains the UUID of a client managed by the broker (only applies to brokers).

If populated it must match the value on the referenced order specified in the OrigClOrdID(41).
41OrigClOrdIDstringYAn identifier matching the ClOrdID from the OrderSingle or OrderCancelReplaceRequest that this request applies to.
38OrderQtydecimalNThe amount of the base asset to be transacted, this value can be changed from the order referenced in OrigClOrdId(41)
44PricedecimalNThe limit price for limit orders of the quote asset or USDC for perpetual futures. The decimal precision must fall within the requirements for each market, see the REST API for precision and decimal limits. This value can be different from the message that the OrigClOrdID references.
55SymbolstringYMust match the symbol on the message that the OrigClOrdID references.
99StopPxdecimalNSpecifies the quote price at which the order activates for Stop and Stop Limit order types (44=3 or 44=4). Must match the StopPx on the message that OrigClOrdId references.

OrderCancelRequest (35=F)

Used to cancel an order that is still live on the exchange.

TagNameTypeRequiredDescription
11ClOrdIDstringYAn identifier specified by the sender to uniquely identify other messages correlating to this request. Must not exceed 18-31 characters depending on the character range or must be a variant 1 UUIDv4:

18 = All ASCII characters
20 = Alphanumeric characters and dash (-)
31 = Hexadecimal characters (0-9, a-f, lowercase and no preceding 0s)
36 = A UUID in standard format

If using a UUID it must be a variant 1 UUIDv4 that follows the standard format. This means all lowercase and hyphens that group the characters in sequences of 8, 4, 4, 4, 12 (e.g. 1985ca2d-61ef-49f1-bfce-6c39d8462914). Failure to follow this formatting will result in a reject.
453NoPartyIDsintCMarks the beginning of the Parties repeating group component. Currently a max of 1 party is supported to specify the portfolio UUID. In the future additional parties may get added.

Supported values:
1 = Specify portfolio UUID or client UUID

If no party is specified the message applies to the default portfolio UUID affiliated with the API key.
If populated it must match the value on the referenced order specified in the OrigClOrdID(41).
→ 448
PartyIDstringCThe unique identifier used to represent the party entry.

If populated it must match the value on the referenced order specified in the OrigClOrdID(41).
→ 452
PartyRoleintCThe type of party entry that the PartyID (448) value represents. Currently supports:

3 = Client ID
24 = Customer account

The Customer Account (24) value indicates the PartyID value contains the UUID of the portfolio affiliated with the message. The Client ID (3) value indicates the PartyID value contains the UUID of a client managed by the broker (only applies to brokers).

If populated it must match the value on the referenced order specified in the OrigClOrdID(41).
41OrigClOrdIDstringYAn identifier matching the ClOrdID from the OrderSingle or OrderCancelReplaceRequest that this request applies to.
55SymbolstringYMust match the message that the OrigClOrdID references.

OrderMassCancelRequest (35=q)

Used to cancel multiple orders that is still live on the exchange.

TagNameTypeRequiredDescription
11ClOrdIDstringYAn identifier specified by the sender to uniquely identify other messages correlating to this request. Must not exceed 18-31 characters depending on the character range or must be a variant 1 UUIDv4:

18 = All ASCII characters
20 = Alphanumeric characters and dash (-)
31 = Hexadecimal characters (0-9, a-f, lowercase and no preceding 0s)
36 = A UUID in standard format

If using a UUID it must be a variant 1 UUIDv4 that follows the standard format. This means all lowercase and hyphens that group the characters in sequences of 8, 4, 4, 4, 12 (e.g. 1985ca2d-61ef-49f1-bfce-6c39d8462914). Failure to follow this formatting will result in a reject.
54sidestringYSide of the order, valid options:

1 = Buy
2 = Sell. If Side is not provided, the request cancels all orders in that portfolio regardless of side.
55SymbolstringYSymbol of the instrument being traded (e.g. BTC-USDC or BTC-PERP). If Symbol is not provided, the request cancels all orders in that portfolio regardless of symbol.
453NoPartyIDsintCMarks the beginning of the Parties repeating group component. Currently a max of 1 party is supported to specify the portfolio UUID. In the future additional parties may get added.

Supported values:
1 = Specify portfolio UUID or client UUID

If no party is specified the message applies to the default portfolio UUID affiliated with the API key.
If populated it must match the value on the referenced order specified in the OrigClOrdID(41).
→ 448
PartyIDstringCThe unique identifier used to represent the party entry.

If populated it must match the value on the referenced order specified in the OrigClOrdID(41).
→ 452
PartyRoleintCThe type of party entry that the PartyID (448) value represents. Currently supports:

3 = Client ID
24 = Customer account

The Customer Account (24) value indicates the PartyID value contains the UUID of the portfolio affiliated with the message. The Client ID (3) value indicates the PartyID value contains the UUID of a client managed by the broker (only applies to brokers).

If populated it must match the value on the referenced order specified in the OrigClOrdID(41).

ExecutionReport (35=8)

Sent by the exchange to provide an update on a submitted order.

TagNameTypeRequiredDescription
11ClOrdIDstringYAn identifier specified by the sender to uniquely identify other messages relating to this request.
41OrigClOrdIDstringCAn identifier matching the ClOrdID from the OrderSingle or OrderCancelReplaceRequest if this execution report belongs to an OrderCancelRequest or an OrderCancelReplaceRequest.
880TrdMatchIDstringCA unique ID provided on trade messages that is affiliated with the match. The same ID is provided on both sides of the trade which can aid in self trade detection.
17ExecIDstringYA globally unique 64bit monotonically increasing integer identifier specified by Coinbase International that identifies an event generated in the system. Please reference this identifier when speaking with Coinbase International Support.
20ExecTransTypecharYIndicates whether this message is original or an amendment. The potential values include:

0 = New
1 = Cancel
2 = Correct

All original messages get marked as New. Trade busts get marked as Cancel and trade corrections get marked as Correct. The trade bust and correct functionality will get implemented at a future date.
37OrderIDstringYA unique identifier assigned by the exchange for the order. Please use this ID when referencing the order for support.
453NoPartyIDsintCMarks the beginning of the Parties repeating group component. Currently a max of 1 party is supported to specify the portfolio UUID. In the future additional parties may get added.

Supported values:
1 = Specify portfolio UUID or client UUID

If no party is specified the message applies to the default portfolio UUID affiliated with the API key.
→ 448
PartyIDstringCThe unique identifier used to represent the party entry.
→ 452
PartyRoleintCThe type of party entry that the PartyID (448) value represents. Currently supports:

3 = Client ID
24 = Customer account

The Customer Account (24) value indicates the PartyID value contains the UUID of the portfolio affiliated with the message. The Client ID (3) value indicates the PartyID value contains the UUID of a client managed by the broker (only applies to brokers).
150ExecTypecharYThe type of execution report indicating what happened to the order.

Potential values include:
0 = New
1 = Partial Fill
2 = Fill
4 = Canceled
5 = Replaced
8 = Rejected
C = Expired
L = Stop Triggered
39OrdStatuscharYIdentifies the current state of the order.

The potential values include:
0 = New
1 = Partially Filled
2 = Filled
4 = Canceled
5 = Replaced
8 = Rejected
C = Expired
103OrdRejReasonintCUsed for reject messages, a set of code based references for common types of rejects.

The potential values include:
0 = Unknown
1 = Invalid order parameter
2 = Price violation
55SymbolstringYSymbol of the instrument being traded (e.g. BTC-USDC or BTC-PERP)
54SidecharYSide of the order, valid options:

1 = Buy
2 = Sell
38OrderQtydecimalCRequired for limit orders. The quantity specified on the order.
40OrdTypecharYThe order type specified on the order.
44PricedecimalCRequired for limit orders. Price specified on the order.
99StopPxdecimalCRequired for stop orders. The stop price specified on the order.
3040StopLimitPxdecimalCRequired for TP/SL orders. The stop leg limit price specified on the order.
15CurrencystringYThe currency used for prices and commission values reflected in this message.
59TimeInForcecharNTime in force specified on the order. The following values are supported:

1 = Good Till Cancel (GTC, up to 30 days)
3 = Immediate or Cancel (IOC)
4 = Fill or Kill (FOK)
6 = Good Till Time (GTT, up to 30 days)
126ExpireTimeutc timestampCRequired when TimeInForce (59) is set to GTT (6). Specifies the time when a GTT order expires.
18ExecInstcharCThe execution instruction flags for the order. Multiple values should be space delimited. Currently supports:

6 = Post only
E = Close only
32LastQtydecimalCRequired for trades (150=1 or 150=2). Represents the total amount of the order’s specified OrderQty that traded.
31LastPxdecimalCRequired for trades (150=1 or 150=2). Price in the currency (tag 15) at which the LastQty (tag 32) amount traded.
151LeavesQtydecimalYThe amount of the OrderQty that remains open for further execution.
14CumQtydecimalYThe total amount of the OrderQty that has traded so far including the LastQty amount if applicable (i.e. if 150=1 or 150=2).
6AvgPxdecimalYThe average price in Currency (tag 15) of the CumQty (tag 14) traded at so far including the current trade if applicable (i.e. if 150=1 or 150=2).
60TransactTimeutc timestampYThe original time that this execution report occurred (useful for replays).
58TextstringNA text message that gets populated when the context of the execution report requires explanation (e.g. rejects or unsolicited cancels).
851LastLiquidityIndintCProvided for trades (150=1 or 150=2). Provides context on how the order traded on the exchange for use in reference to trading fees.

Values include:
1 = Added liquidity
2 = Removed liquidity
136NoMiscFeesintCUsed for trades (150=1 or 150=2). Provides information on the fees affiliated with the transaction. If specified and the value is > 0 it marks the beginning of a repeating group of the following 3 tags.
→ 137
MiscFeeAmtdecimalCThe total fee amount in units of MiscFeeCurr
→ 138
MiscFeeCurrstringCThe currency the fee amount is charged in (e.g. USDC)
→ 139
MiscFeeTypestringCSpecifies the type of fee. Values may include:

4 = Exchange fees
7 = Other
14 = Asset lending
8000SelfTradePreventionStrategycharYThe self trade prevention strategy associated with the order.

The following values specify what to do when two orders submitted by the same Organization/Account attempt to match:
N = Cancel aggressing order
Q = Cancel both orders
O = Cancel resting order
D = Decrement and cancel smaller order

Default if not specified is Cancel both orders (Q).
847TargetStrategyintCSpecifies the trading strategy. The following value is supported:

1001 = TWAP

OrderMassCancelReport (35=r)

Sent by the exchange to provide an update on a submitted order mass cancel.

TagNameTypeRequiredDescription
11ClOrdIDstringYAn identifier specified by the sender to uniquely identify other messages relating to this request.
1369MassActionReportIDstringYA globally unique 64bit monotonically increasing integer identifier specified by Coinbase International that identifies an event generated in the system. Please reference this identifier when speaking with Coinbase International Support.
55SymbolstringNSymbol of the instrument being traded (e.g. BTC-USDC or BTC-PERP)
54SidecharNSide of the order, valid options:

1 = Buy
2 = Sell
531MassCancelResponsecharYIdentifies the response of order mass cancel request. For accepted requests, the value will be CANCEL_ALL_ORDERS (7). For rejected requests, the value will be CANCEL_REQUEST_REJECTED (0) and MassCancelRejectReason will be provided.

The potential values include:
0 = Cancel Request Rejected
1 = Cancel orders for a security
2 = Cancel orders for an Underlying security
3 = Cancel orders for a Product
4 = Cancel orders for a CFICode
5 = Cancel orders for a SecurityType
6 = Cancel orders for a trading session
7 = Cancel all orders
532MassCancelRejectReasonintNIdentifies the rejected reason of order mass cancel request. For rejected requests, the value will be MASS_CANCEL_NOT_SUPPORTED (0).

The potential values include:
0 = Mass Cancel Not Supported
1 = Invalid or unknown Security
2 = Invalid or unknown Underlying security
3 = Invalid or unknown Product
4 = Invalid or unknown CFICode
5 = Invalid or unknown SecurityType
6 = Invalid or unknown trading session
99 = Other
533TotalAffectedOrdersdecimalNTotal number of orders affected by order mass cancel request
60TransactTimeutc timestampNThe original time that this order mass cancel report occurred
58TextstringNA message providing more detail about the order mass cancel reject

OrderCancelReject (35=9)

Sent by the exchange when a cancel or cancel-replace request fails.

TagNameTypeRequiredDescription
11ClOrdIDstringYAn identifier specified by the sender to uniquely identify other messages correlating to this request.
41OrigClOrdIDstringYAn identifier matching the ClOrdID from the OrderSingle or OrderCancelReplaceRequest that this request applies to.
37OrderIDstringYAn identifier specified by Coinbase International that uniquely identifies the order in the system. Please reference this identifier when speaking with Coinbase International Support. If the cancel or cancel-replace request was unable to find the OrigClOrdID specified in the message this value contains the text NONE.
58TextstringNA message providing more detail about the cancel reject
102CxlRejReasonintNA code to identify common reasons why for the cancel reject. Potential values include:

0 = Too late to cancel
1 = Unknown order
3 = Order already pending cancel or cancel replace
434CxlRejResponseTocharYIndicates whether this message is in response to a cancel request or cancel replace request.

Values include:
1 = Order Cancel Request
2 = Order Cancel/Replace Request

BusinessMessageReject (35=j)

An application level reject message sent when the FIX session can’t process a message.

TagNameTypeRequiredDescription
45RefSeqNumintNThe MsgSeqNum of the referenced message that was rejected.
372RefMsgTypeintYThe message type that this reject message applies to.

Supported values include:
A = Logon
0 = Heartbeat
1 = TestRequest
D = NewOrderSingle
F = OrderCancelRequest
G = OrderCancelReplaceRequest
F1 = LastExecIDRequest
F3 = EventResendRequest
x = SecurityListRequest
V = MarketDataRequest
379BusinessRejectRefIDstringNAn identifier pointing to the message referenced for this reject. In the context of an order request this points to the ClOrdId.
380BusinessRejectReasonintNA code to quickly identify common reasons for a reject.

Values could include:
0 = Other
1 = Unknown ID
2 = Unknown asset or instrument
3 = Unsupported message type
4 = Application not available
5 = Conditionally required field missing
6 = Not authorized
8 = Throttle limit exceeded
9 = Throttle limit exceeded, session will be disconnected
58TextstringNA message explaining why the message was rejected.

TradeCaptureReport (35=AE)

Sent by the exchange when a trade occurs from an automated liquidation or liquidation triggered position transfer.

TagNameTypeRequiredDescription
828TrdTypeintYIndicates the type of trade for the liquidation:

0 = Regular trade
3 = Transfer

A regular trade occurs when the exchange’s liquidation engine automatically places orders in the open market. A transfer happens when the account gets closed out and the position goes to another participant that specializes in closing out liquidated positions.
830TransferReasonstringCUsed when TydType (828) = Transfer (3) to indicate the transfer context.

Values include:
LIQUIDATED
ASSIGNED

The LIQUIDATED value indicates a position getting transferred out of the portfolio. The ASSIGNED value indicates a position getting transferred into the portfolio (only applicable for LSP portfolios).
880TrdMatchIDstringYA unique ID provided on trade messages that is affiliated with the match. The same ID is provided on both sides of the trade which can aid in self trade detection.
17ExecIDstringYA globally unique 64bit monotonically increasing integer identifier specified by Coinbase International that identifies an event generated in the system. Please reference this identifier when speaking with Coinbase International Support.
820TradeLinkIDstringYAn identifier used to track all trades linked with the current phase of the liquidation process. Changes each time the portfolio gets flagged for handling by liquidation engine or if the portfolio gets transferred to liquidation specialists.
55SymbolstringYSymbol of the instrument being traded (e.g. BTC-USDC or BTC-PERP)
32LastQtydecimalCRepresents the total amount of the asset that traded.
31LastPxdecimalCPrice in the currency (tag 15) at which the LastQty (tag 32) amount traded.
60TransactTimeutc timestampYThe original time that this execution report occurred (useful for replays).
552NoSidesintYMarks the beginning of the repeating group for sides and will always be set to 1.
→ 54
SidecharYSide of the trade, valid options:

1 = Buy
2 = Sell
→ 453
NoPartyIDsintCMarks the beginning of the Parties repeating group component. Currently a max of 1 party is supported to specify the portfolio UUID. In the future additional parties may get added.

Supported values:
1 = Specify portfolio UUID or client UUID

If no party is specified the message applies to the default portfolio UUID affiliated with the API key.
→→ 448
PartyIDstringCThe unique identifier used to represent the party entry.
→→ 452
PartyRoleintCThe type of party entry that the PartyID (448) value represents.

Currently supports:
3 = Client ID
24 = Customer account

The Customer Account (24) value indicates the PartyID value contains the UUID of the portfolio affiliated with the message. The Client ID (3) value indicates the PartyID value contains the UUID of a client managed by the broker (only applies to brokers).
→ 136
NoMiscFeesintCProvides information on the fees affiliated with the transaction. If specified and the value is > 0 it marks the beginning of a repeating group of the following 3 tags.
→→ 137
MiscFeeAmtdecimalCThe total fee amount in units of MiscFeeCurr
→→ 138
MiscFeeCurrstringCThe currency the fee amount is charged in (e.g. USDC)
→→ 139
MiscFeeTypestringCSpecifies the type of fee.

Values may include:
4 = Exchange fees
7 = Other
14 = Asset lending

PreFillRequest (35=F6)

Used to subscribe to the PreFills channel to receive PreFillReports for portfolios scoped to your API key.

TagNameTypeRequiredDescription
22007PreFillRequestIDstringYClient generated ID for this request

A successful subscription is indicated by a PreFillRequestSuccess(35=F7) message with the PreFillRequestID field set to the same PreFillRequestID supplied in the PreFillRequest. An unsuccessful subscription is indicated by a BusinessMessageReject with the BusinessRejectRefID field set to the PreFillRequestID supplied in the PreFillRequest.

PreFillReport (35=F8)

Sent by the exchange on every fill on an order to PreFills subscribers. These are not aggregated across multiple fills. Each fill has a separate PreFillReport.

TagNameTypeRequiredDescription
11ClOrdIDstringYAn identifier specified by the sender to uniquely identify other messages relating to this request.
880TrdMatchIDstringYA unique ID provided on trade messages that is affiliated with the match. The same ID is provided on both sides of the trade which can aid in self trade detection.
37OrderIDstringYA unique identifier assigned by the exchange for the order. Please use this ID when referencing the order for support.
453NoPartyIDsintYMarks the beginning of the Parties repeating group component. Currently a max of 1 party is supported to specify the portfolio UUID. In the future additional parties may get added.

Supported values:
1 = Specify portfolio UUID or client UUID

If no party is specified the message applies to the default portfolio UUID affiliated with the API key.
→ 448
PartyIDstringYThe unique identifier used to represent the party entry.
→ 452
PartyRoleintYThe type of party entry that the PartyID (448) value represents. Currently supports:

3 = Client ID
24 = Customer account

The Customer Account (24) value indicates the PartyID value contains the UUID of the portfolio affiliated with the message. The Client ID (3) value indicates the PartyID value contains the UUID of a client managed by the broker (only applies to brokers).
55SymbolstringYSymbol of the instrument being traded (e.g. BTC-USDC or BTC-PERP)
54SidecharYSide of the order, valid options:

1 = Buy
2 = Sell
38OrderQtydecimalYThe quantity specified on the order.
44PricedecimalNPrice specified on the order, if any.
32LastQtydecimalYQuantity bought or sold of this (last) fill.
31LastPxdecimalYRepresents the price of this (last) fill.
60TransactTimeutc timestampYThe original time that this execution report occurred (useful for replays).
851LastLiquidityIndintYProvided for trades (150=1 or 150=2). Provides context on how the order traded on the exchange for use in reference to trading fees.

Values include:
1 = Added liquidity
2 = Removed liquidity

RFQ Request (35=AH)

Clients must send an RFQ Request message (35=AH) after each successful Logon message (35=A) for any session in which they are interested in receiving Quote Requests.

  • If the session submitting this request is not approved by Coinbase for participating in the RFQ program, this request is rejected with a Business Message Reject (j).If this request is acknowledged, and no symbol is specified, this session receives all Quote requests (all assets).
TagNameTypeRequiredNotes
644RFQReqIDUUIDYUnique identifier for RFQ Request

Quote Request (35=R)

Sent by the exchange to signal the start of the RFQ process. Coinbase sends a Quote Request to Liquidity Providers (LPs) on behalf of a customer looking to participate in an RFQ trade. LPs respond to a Quote Request with a Quote (S).

TagNameTypeRequiredNotes
131QuoteReqIDUUIDYUnique identifier for RFQ
146NoRelatedSymNumInGroupYAlways 1
55SymbolString32YExample: BTC-PERP
38OrderQtyFloat64YThe quantity the customer is looking to trade via RFQ
62ValidUntilTimeUTCTimestampYThe time by which quotes must be submitted for the RFQ
126ExpireTimeUTCTimestampYThe time by which the RFQ expires if there is no match
136NoMiscFeesNumInGroupYAlways 1
137MiscFeeAmtFloat64YFee as a percentage that Liquidity Providers are charged on a winning Quote.
139MiscFeeTypeInt32YAlways 4 = Exchange Fees
891MiscFeeBasisInt32YAlways 2 = Percentage
528OrderCapacityCharYA = Agency (default)
C = Corporate

Quote (35=S)

Quote (S) messages are submitted by Liquidity Providers (LP) in response to a Quote Request (R) in order to participate in the competitive RFQ auction.

Quotes can be submitted as either a one-way or two-way quote, and must be received by the ValidUntilTime (62) specified in the Quote Request. Only one side is traded if the Liquidity Provider wins the RFQ.

TagNameTypeRequiredNotes
131QuoteReqIDUUIDYUnique identifier for RFQ echoed from Quote Request
117QuoteIDUUIDYUnique identifier for Quote specified by Liquidity Provider
55SymbolString32YExample: BTC-PERP
132BidPxFloat64CRequired if submitting bid
133OfferPxFloat64CRequired if submitting offer
134BidSizeString32CRequired if submitting bid. Must match OrderQty (38) from Quote Request
135OfferSizeString32CRequired if submitting offer. Must match OrderQty (38) from Quote Request
453NoPartyIDsInt32CMarks the beginning of the Parties repeating group component. A max of 1 party is supported to specify the portfolio UUID. Supported values: 1 = Specify portfolio UUID If no party is specified, the message applies to the default portfolio UUID affiliated with the API key
448PartyIDString32CThe unique identifier used to represent the party entry or portfolio that this order generates from. When PartyRole(452)=24, set PartyID(448) equal to the UUID of the desired portfolio for this order.
452PartyRoleInt32CThe type of party entry that the PartyID (448) value represents. Currently supports: 24 = Customer account The Customer Account (24) value indicates the PartyID value contains the UUID of the portfolio affiliated with the message.

Quote Status Report (35=AI)

Sent by the exchange to Liquidity Providers with Quote statuses and expired Quote Requests.

  • If the Quote (S) is rejected b/c validation checks failed or it was sent too late, the response to the quoter is 297=5 (QuoteStatus = Rejected).
  • If the Quote (S) is accepted and eligible to participate in an RFQ auction, the response to the quoter is 297=16 (QuoteStatus = Active).
  • If the Quote (S) is accepted but not selected for execution, the response to the quoter is 297=17 (QuoteStatus = Canceled).
  • If the Quote (S) is accepted and selected for execution, the response to the quoter is 297=19 (QuoteStatus = Pending End Trade), followed by Execution Report - Filled.
  • If the Quote Request (r) is unmatched by ExpireTime (126) on the Quote Request, 297=7 (QuoteStatus = Expired) is broadcast to all LPs.
TagNameTypeRequiredNotes
131QuoteReqIDUUIDYUnique identifier for RFQ echoed from Quote Request
117QuoteIDUUIDYUnique identifier for Quote specified
55SymbolString32YExample: BTC-AVAX
54SideCharCBuy: 54=1, Sell: 54=2
Specified if QuoteStatus=Pending End Trade (297=19)
38OrderQtyFloat64YEchoed from Quote Request
132BidPxFloat64CEchoed from Quote
133OfferPxFloat64CEchoed from Quote
134BidSizeFloat64CEchoed from Quote
135OfferSizeFloat64CEchoed from Quote
62ValidUntilTimeUTCTimestampYEchoed from Quote Request
126ExpireTimeUTCTimestampYEchoed from Quote Request
297QuoteStatusInt32Y5 = Rejected: Quote failed validation checks or was sent too late
7 = Expired: Quote Request expired w/no match
16 = Active: Quote was acknowledged
17 = Canceled: Quote not selected b/c LP did not win auction or had insufficient funds
19 = Pending End Trade: Quote selected for execution
58TextStringCReason the Quote was rejected if QuoteStatus=5

17ExecIDStringYA globally unique 64bit monotonically increasing integer identifier specified by Coinbase International that identifies an event generated in the system. Equivalent to ExecID in ExecutionReport (9)