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 and signs its side; once
every allocation has landed, the trade settles in one transaction — the
accepted quote turns
won, every other live quotelost. If the settlement fails, nothing moves: the accepted quote isrevokedand the RFQ stays open for another accept until its deadline. 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. rfq.closed alone does not say which; your live quote's quote.status does: lost if another maker's trade settled, cancelled if the taker cancelled. You never learn the winning price or who won. It also fires when the deadline passes while a trade is settling — that trade's outcome follows. |
rfq.expired | The deadline passed with no trade. |
quote.status: won | Your trade settled; trade.settled carries the proof. |
Quote statuses
POST /maker/quotes ──► pending ──► won (your trade settled)
──► lost (another maker's trade settled)
──► cancelled (the taker cancelled the RFQ)
──► expired (validUntil or the RFQ deadline passed)
──► revoked (you re-quoted or DELETEd, your unsigned
actions expired, or an accepted trade failed)While an accepted quote settles, it carries settling: true with status
still pending — it is locked: you can no longer revoke it (409).