Cessio Docs
Guides

Tracking settlement

Following your trade from the accept to the on-ledger receipt

The event sequence after an accept

No event marks the accept itself — your quote just shows settling: true in a snapshot. Then:

trade.step {step: "allocated"}           every allocation of the trade is committed
  └► quote.status {status: "won"}        + rfq.closed
  └► trade.settled {TradeDto}            atomic settle executed — the proof
        — or —
     quote.status {status: "revoked"}    + trade.failed {tradeId, rfqId, reason}

trade.step.refs carries the contract ids each phase created. These events are ephemeral — they exist only on the stream. The durable record is the TradeDto.

The proof

trade.settled (and later GET /maker/trades) carries:

{
  "tradeId": "…", "price": "97300.0", "fee": "121.625",
  "settledAt": "2026-07-19T10:00:02Z",
  "ledger": {
    "updateId": "1220ab…",
    "receiptCids": ["00c1…", "00d2…"]
  }
}

The ledger block is the on-ledger proof of the trade — what updateId and receiptCids are, and what they prove, is in Atomic settlement.

Reconciling after downtime

The stream does not replay missed trade events (the snapshot covers RFQs and quotes only). After downtime, reconcile via:

curl -H "X-API-Key: $API_KEY" "$API_URL/maker/trades?limit=100"

Newest first, limit 1–500 (default 100). Only settled trades are recorded: one still in flight appears here once it settles. Each carries the ledger block — absent only on trades recorded before the field existed, or on a settle the desk recorded after losing its response (the receipts alone, no update id).

After a trade.settled, GET /wallet/holdings shows your new balance.

On this page