RFQ Overview:
The Request for Quote (RFQ) workflow enables price discovery through a three-phase process: request initiation, quote provision, and quote acceptance/rejection. It's particularly valuable for large orders, illiquid instruments, or when seeking competitive pricing from multiple counterparties.Business Context:
RFQs are standard practice in fixed income and OTC derivatives markets. They allow buyers and sellers to solicit firm prices before committing to trades, enabling better execution and price transparency. The platform supports bilateral RFQs where requesters target specific counterparties identified by LEI (Legal Entity Identifier).RFQ Workflow Overview#
Complete RFQ Lifecycle#
QuoteRequest (35=R)#
Purpose:
The QuoteRequest message initiates an RFQ, soliciting price quotes from one or more counterparties. The requester specifies the instrument, side, quantity, and target counterparty.For large orders requiring price discovery
When seeking competitive quotes before trading
For illiquid instruments without visible market depth
To establish bilateral trading relationships
Before executing block trades
Business Context:
QuoteRequests are the foundation of negotiated trading. They signal trading interest to counterparties and invite firm pricing. The platform validates the request, stores it, and broadcasts it to the specified counterparty (identified by CounterpartyLEI). Multiple quotes may be received from different counterparties, allowing the requester to select the best price.| Tag | Name | Required | Description |
|---|
| 131 | QuoteReqID | Y | Unique RFQ identifier |
| 1 | Account | Y | Account ID |
| 48 | SecurityID | Y | ISIN code |
| 22 | SecurityIDSource | Y | 4 = ISIN |
| 38 | OrderQty | N | Desired quantity |
| 54 | Side | Y | 1=BUY, 2=SELL |
| 59 | TimeInForce | N | 0=DAY, 1=GTC, 6=GTD |
| 126 | ExpireTime | N | Required if TIF=6 |
| 36010 | ReportingPartyLEI | N | Requester's LEI |
| 36012 | CounterpartyLEI | Y | Counterparty's LEI |
Example QuoteRequest#
8=FIXT.1.1|9=XXX|35=R|
131=RFQ-123456|1=ACC-001|
48=DE000BASF111|22=4|38=1000000|54=1|
59=1|
36012=549300VVUQHJQ56LTY28|
10=XXX|
QuoteStatusReport (35=AI)#
Purpose:
The QuoteStatusReport provides lifecycle status updates for RFQs and quotes. It confirms RFQ creation, quote acceptance, rejections, expirations, and cancellations.When to Use:
QuoteStatusReports are sent by the server automatically. Clients receive them:After sending QuoteRequest (Status=ACTIVE confirms RFQ created)
After counterparty sends Quote (Status=ACCEPTED confirms quote received)
After requester passes on quote (Status=REJECTED)
When RFQs or quotes expire (Status=EXPIRED)
When RFQs or quotes are cancelled (Status=CANCELED)
Business Context:
Status reports provide transparency into the RFQ workflow. They confirm that requests were processed, quotes were accepted by the platform, and final outcomes (acceptance, rejection, expiration). This enables robust RFQ management and audit trails.| Tag | Name | Required | Description |
|---|
| 649 | QuoteStatusReqID | N | From QuoteStatusRequest |
| 131 | QuoteReqID | N | From QuoteRequest |
| 117 | QuoteID | N | Quote identifier |
| 693 | QuoteRespID | N | From QuoteResponse |
| 297 | QuoteStatus | Y | Status code (see below) |
| 48 | SecurityID | Y | ISIN code |
| 22 | SecurityIDSource | Y | 4 = ISIN |
| 58 | Text | N | Additional details |
| 36010 | ReportingPartyLEI | Y | LEI of quote creator |
QuoteStatus Values (Tag 297)#
| Value | Description | When Sent |
|---|
| 0 | ACCEPTED | Quote/RFQ accepted |
| 5 | REJECTED | Quote/RFQ rejected |
| 7 | EXPIRED | Quote/RFQ expired |
| 16 | ACTIVE | RFQ active, awaiting quotes |
| 17 | CANCELED | Quote/RFQ canceled |
Example QuoteStatusReport#
8=FIXT.1.1|9=XXX|35=AI|
131=RFQ-123456|297=16|
48=DE000BASF111|22=4|
36010=549300VVUQHJQ56LTY28|
10=XXX|
QuoteRequestReject (35=AG)#
Purpose:
The QuoteRequestReject message allows counterparties to decline an RFQ. It signals that the counterparty will not provide a quote, along with a reason code.When a counterparty cannot or will not provide a quote
When market conditions are unfavorable for quoting
When the requested instrument is unknown or unavailable
When authorization or credit limits prevent quoting
When declining to participate in the RFQ (PASS)
Business Context:
Not all RFQs result in quotes. Counterparties may decline for various reasons - lack of inventory, unfavorable market conditions, credit concerns, or simply choosing not to participate. QuoteRequestReject provides transparency and allows the requester to seek quotes from other counterparties or adjust the RFQ parameters.| Tag | Name | Required | Description |
|---|
| 131 | QuoteReqID | Y | RFQ identifier |
| 1 | Account | Y | Account ID |
| 48 | SecurityID | Y | ISIN code |
| 22 | SecurityIDSource | Y | 4 = ISIN |
| 658 | QuoteRequestRejectReason | Y | Rejection reason |
| 58 | Text | N | Additional details |
| 36010 | ReportingPartyLEI | Y | LEI of requester |
| 36012 | CounterpartyLEI | N | LEI of counterparty (if rejecting) |
QuoteRequestRejectReason Values (Tag 658)#
| Value | Description |
|---|
| 1 | Unknown Symbol |
| 2 | Exchange/Security Closed |
| 6 | Not Authorized to Request Quote |
| 10 | Pass (Counterparty declines) |
| 99 | Other |
Example (Counterparty Pass)#
8=FIXT.1.1|9=XXX|35=AG|
131=RFQ-123456|
48=DE000BASF111|22=4|1=ACC-001|
658=10|58=Market conditions unfavorable|
36010=549300VVUQHJQ56LTY28|
36012=213800X8XXQXXR1QLX47|
10=XXX|
Quote (35=S)#
Purpose:
The Quote message provides a firm price in response to an RFQ. It represents the counterparty's willingness to trade at the specified price and quantity.In response to a QuoteRequest from a requester
When willing to provide firm pricing for the requested instrument
When market conditions allow for competitive pricing
As part of market-making or liquidity provision strategies
Business Context:
Quotes are firm commitments to trade. When a counterparty sends a Quote, they're expressing willingness to execute at the quoted price and size. The requester can then decide to accept (Hit/Lift) or decline (Pass) the quote. Quotes include either bid or offer prices depending on the side, along with corresponding quantities.| Tag | Name | Required | Description |
|---|
| 117 | QuoteID | Y | Unique quote ID |
| 131 | QuoteReqID | Y | RFQ ID from QuoteRequest |
| 1 | Account | Y | Account ID |
| 48 | SecurityID | Y | ISIN code |
| 22 | SecurityIDSource | Y | 4 = ISIN |
| 54 | Side | Y | 1=BUY, 2=SELL |
| 132 | BidPx | N | Bid price (if Side=BUY) |
| 133 | OfferPx | N | Offer price (if Side=SELL) |
| 134 | BidSize | N | Bid quantity (if Side=BUY) |
| 135 | OfferSize | N | Offer quantity (if Side=SELL) |
| 59 | TimeInForce | N | 0=DAY, 1=GTC, 6=GTD |
| 126 | ExpireTime | N | Required if TIF=6 |
| 36010 | ReportingPartyLEI | N | Quote creator's LEI |
Example (Sell Quote)#
8=FIXT.1.1|9=XXX|35=S|
117=Q-789012|131=RFQ-123456|
1=ACC-002|48=DE000BASF111|22=4|
54=2|133=1.0860|135=1000000|
59=1|
10=XXX|
Side (Tag 54) in Quote represents the counterparty's side, which is opposite to the requester's side
If requester wants to BUY (Side=1), counterparty quotes SELL (Side=2) with OfferPx/OfferSize
If requester wants to SELL (Side=2), counterparty quotes BUY (Side=1) with BidPx/BidSize
QuoteResponse (35=AJ)#
Purpose:
The QuoteResponse message is the requester's decision on a received quote. It can either accept the quote (HIT_LIFT), executing a trade, or decline it (PASS).After receiving a Quote from a counterparty
To accept a favorable quote and execute a trade (Type=HIT_LIFT)
To decline a quote without trading (Type=PASS)
As part of quote comparison when multiple quotes are received
Business Context:
QuoteResponse closes the RFQ loop. After reviewing received quotes, the requester decides whether to trade. Accepting a quote (HIT_LIFT) triggers trade execution and results in ExecutionReports for both parties. Passing on a quote allows the requester to wait for better quotes or abandon the RFQ. The platform enhanced QuoteResponse to include full order details (ClOrdID, Side, Price, Quantity, OrdType) for Hit/Lift scenarios, enabling proper trade matching.| Tag | Name | Required | Description |
|---|
| 693 | QuoteRespID | Y | Unique response ID |
| 117 | QuoteID | Y | Quote being responded to |
| 694 | QuoteRespType | Y | 1=HIT_LIFT, 6=PASS |
| 48 | SecurityID | Y | ISIN code |
| 22 | SecurityIDSource | Y | 4 = ISIN |
| 36010 | ReportingPartyLEI | Y | Responder's LEI |
| 36012 | CounterpartyLEI | Y | Quote creator's LEI |
| Tag | Name | Required | Description |
|---|
| 11 | ClOrdID | Y | Client order ID for resulting trade |
| 54 | Side | Y | 1=BUY, 2=SELL |
| 44 | Price | Y | Accepted price |
| 38 | OrderQty | Y | Accepted quantity |
| 40 | OrdType | Y | 1=MARKET, 2=LIMIT |
QuoteRespType Values (Tag 694)#
| Value | Description |
|---|
| 1 | HIT_LIFT (Accept) |
| 6 | PASS (Reject) |
Example (Accept - Hit/Lift)#
8=FIXT.1.1|9=XXX|35=AJ|
693=QR-345678|117=Q-789012|694=1|
48=DE000BASF111|22=4|
11=QA-111222|54=1|44=1.0860|38=1000000|40=2|
36010=549300VVUQHJQ56LTY28|
36012=213800X8XXQXXR1QLX47|
10=XXX|
Example (Pass - Decline)#
8=FIXT.1.1|9=XXX|35=AJ|
693=QR-345679|117=Q-789012|694=6|
48=DE000BASF111|22=4|
36010=549300VVUQHJQ56LTY28|
36012=213800X8XXQXXR1QLX47|
10=XXX|
QuoteCancel (35=Z)#
Purpose:
The QuoteCancel message allows participants to cancel an active quote or RFQ. This provides control over exposure and enables withdrawal from the RFQ process.To cancel an active RFQ before receiving quotes
To withdraw a quote before the requester accepts
When market conditions change and quote is no longer valid
To manage risk by removing outstanding quotes
Before end of trading day to clear pending quotes/RFQs
Business Context:
Cancellation flexibility is essential for risk management. Market conditions change rapidly, and participants need the ability to withdraw quotes or RFQs that no longer align with their trading strategy or risk limits. The platform supports both quote-specific and RFQ-specific cancellations.| Tag | Name | Required | Description |
|---|
| 131 | QuoteReqID | N | RFQ ID (for RFQ cancel) |
| 117 | QuoteID | N | Quote ID (for quote cancel) |
| 298 | QuoteCancelType | Y | Cancel type (see below) |
| 36010 | ReportingPartyLEI | Y | Canceller's LEI |
QuoteCancelType Values (Tag 298)#
| Value | Description |
|---|
| 1 | Cancel for One or More Securities |
| 4 | Cancel All Quotes |
| 5 | Cancel Quote Specified in QuoteID |
Example QuoteCancel#
8=FIXT.1.1|9=XXX|35=Z|
117=Q-789012|298=5|
36010=549300VVUQHJQ56LTY28|
10=XXX|
Response: QuoteStatusReport (35=AI) with QuoteStatus=17 (CANCELED) Modified at 2026-03-09 15:06:12