Concepts
RFQ lifecycle
From a taker's request to a settled trade — and every dead end on the way
The flow
- A taker creates an RFQ: an instrument pair from the catalog
(
base/quotesymbols), a quantity, a direction, a deadline, a set of invited makers, and the desk fee rate (feeBps) stamped at creation time. - Every invited maker receives
rfq.createdon their stream. Nobody else ever learns the RFQ exists. - Makers post quotes. Each maker holds at most one active quote per RFQ — re-quoting replaces the previous one.
- The taker accepts one quote before the deadline — that quote's maker
wins, everyone else's quotes turn
lost, and settlement starts. Or the RFQ dies: the taker cancels it, or the deadline passes.
Direction
direction is always from the taker's side: SELL means the taker
sells the base asset for the quote asset (so the winning maker buys
base), BUY means the taker buys base (the maker sells it).
How an RFQ ends (the maker's view)
| Stream event | Meaning |
|---|---|
rfq.closed | The RFQ is gone — cancelled by the taker or filled by another maker. The two are deliberately indistinguishable: you only learn about a fill if you won. |
rfq.expired | The deadline passed with no accepted quote. |
quote.status: won | Your quote was accepted; settlement begins. |
Quote statuses
POST /maker/quotes ──► pending ──► won (taker accepted yours → settlement)
──► lost (taker accepted another quote)
──► expired (validUntil or RFQ deadline passed)
──► revoked (you re-quoted or DELETEd)While an accepted quote settles asynchronously, the quote additionally
carries settling: true with status still pending — it is locked: you
can no longer revoke it (409).