How it flows
- List. The supplier lists a price, a time to deliver, the token, and how it settles. A listing can be open to any buyer or made for one named buyer.
- Take. A buyer takes the listing as it stands. Its terms cannot be changed after it is listed, so there is nothing to renegotiate.
- Settle. In the same transaction it settles the way the listing stated: nothing is paid, the supplier is paid directly, or the payment is held in escrow for the listed time.
- Deliver. When the payment is held, the buyer releases it on delivery. A supplier who cannot deliver hands it back. If neither acts before the deadline, anyone can trigger the return to the buyer.
How it settles
Each request or listing states how it settles when it is accepted. A workspace can switch direct payment or escrow off. Recording only is always available.
| Way | In the contracts | What happens |
|---|---|---|
| Recorded only | Settlement.None | Nothing is paid. The choice itself is the record. |
| Paid directly | Settlement.Direct | The payment passes through the vault to the supplier in the same transaction. |
| Held | Settlement.Escrow | The payment becomes an escrow. The supplier's time to deliver becomes its deadline. |
Who can do what
Every call below writes a record. None of them can be undone or edited afterwards.
| State | Who may act | Call | What happens next |
|---|---|---|---|
| Any time | A supplier | listOffer(…) | A listing is recorded as Listed |
| Listed | The supplier | withdrawOffer(offerId) | Withdrawn: it can no longer be taken |
| Listed | A buyer, or the named buyer if there is one | confirmOffer(offerId) | Confirmed: the buyer is recorded and the listing settles |
When the payment is held
One held payment, one action on each side. Each action moves the payment in one direction only. After the deadline the only action left is the return to the buyer. It does not happen by itself: someone has to send that transaction, and anyone can.
| State | Who may act | Call | What happens next |
|---|---|---|---|
| Active, before the deadline | The buyer (issuer) | release(id) | Released: paid to the supplier, less the platform fee |
| Active, before the deadline | The supplier (receiver) | cancel(id) | Handed back (Cancelled): the held amount goes to the buyer |
| Active, after the deadline | Anyone | expire(id) | Returned (Expired): the held amount goes to the buyer, the only place it can go |
release(id) // the buyer (issuer) only, before the deadline: pays the supplier (receiver)
cancel(id) // the supplier (receiver) only, before the deadline: hands the payment back to the buyer
expire(id) // anyone, after the deadline: returns the payment to the buyerAn example
A listing that settles by escrow, from the moment it is taken to the held payment. The figures are an example.
| Listing | #77 · 1,200 USDT · delivered in 14 days · settles by escrow |
|---|---|
| Taken | 2026-08-05 · by the buyer |
| Becomes the escrow | |
| Escrow | #4823 · opened when the listing was taken |
| Buyer (issuer) | the buyer who took the listing |
| Supplier (receiver) | the supplier who listed it |
| Deadline | 2026-08-19 · 14 days after it was taken |
| On delivery | the buyer calls release() → paid to the supplier |
| Not delivered | after the deadline anyone can call expire() → returned to the buyer |
What makes it hold
Terms fixed up front
The price and the time to deliver are part of the listing. Nothing can be changed after it is listed, and nothing is renegotiated when it is taken.
Taking it is the order
Taking a listing records the buyer and settles it in one transaction. With escrow, the supplier can check the payment is held before starting.
A way back that needs nobody's approval
If a held order is not delivered, the supplier can hand the payment back, and after the deadline anyone can trigger its return to the buyer. No refund request has to be approved by the supplier or by a platform.
The same escrow underneath
A listing that holds the payment uses the escrow protocol unchanged: the same three outcomes and the same limits on who can act.
In the contracts
The contracts call a listing an Offer and this flow request to supply (RTS). Taking a listing is confirmOffer. A listing is Listed, then Confirmed or Withdrawn.
A developer gets the contract addresses, the interface files and code examples for these calls from the Connect a platform page. The whitepaper sets out the rules that hold across all three.
Other protocols
- Escrow protocol: how a held payment works, and the only three things that can happen to it.
- Requests protocol: a buyer asks, suppliers answer with a price and a time, and one offer is chosen.
Questions about any of them? Contact us.