Cessio Docs
Concepts

RFQ lifecycle

From a taker's request to a settled trade — and every dead end on the way

The flow

  1. A taker creates an RFQ: an instrument pair from the catalog (base/quote symbols), a quantity, a direction, a deadline, a set of invited makers, and the desk fee rate (feeBps) stamped at creation time.
  2. Every invited maker receives rfq.created on their stream. Nobody else ever learns the RFQ exists.
  3. Makers post quotes. Each maker holds at most one active quote per RFQ — re-quoting replaces the previous one.
  4. 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 eventMeaning
rfq.closedThe 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.expiredThe deadline passed with no accepted quote.
quote.status: wonYour 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).

On this page