How it flows
- Open. An escrow opens when a buyer awards an offer on a request, or takes a listing, that is set to hold the payment. The buyer, the supplier, the amount and the deadline are fixed at that moment.
- Hold. In the same transaction the buyer's payment moves into the workspace's vault. Both sides can see it there. Neither can spend it.
- One action each. The buyer can only release it to the supplier. The supplier can only hand it back to the buyer. Neither can move it toward themselves.
- Settle. Before the deadline, the buyer releases or the supplier hands back. After the deadline neither can act, and anyone can trigger the return to the buyer. Every path ends with the payment with the supplier or back with the buyer.
Who can do what
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
What both sides see for as long as the payment is held. The figures are an example.
| Escrow | #4821 · held (Active) |
|---|---|
| Buyer (issuer) | 0x3d9f…8a2c |
| Supplier (receiver) | 0x7e4b…c3f1 |
| Opened | 2026-08-05 · 14:32 UTC |
| Deadline | 2026-09-04 · 14:32 UTC |
| Buyer can | release() → paid to the supplier |
| Supplier can | cancel() → handed back to the buyer |
| After the deadline | anyone can call expire() → returned to the buyer |
What makes it hold
A deadline set up front
Every escrow has an opening time and a deadline. Between them the rules cannot change, and nobody can extend or shorten the term.
Each side can only give
Release belongs to the buyer and hand-back to the supplier. No action moves a held payment toward the wallet that calls it.
After the deadline, one way out
Once the deadline passes, the payment can only go back to the buyer. Someone has to send the transaction that returns it, and anyone can: the buyer, the supplier or a third party. Until someone does, it stays in the vault.
Nobody else can move it
The payment sits in the workspace's vault, a public contract. BitRegalo never holds it, and neither BitRegalo nor the workspace admin can move it. They can pause new escrows. A release, a hand-back and a return always work.
A limit to know
If the buyer does not release and the supplier does not hand back, the payment goes back to the buyer once the return is triggered. A supplier who has already delivered depends on the buyer releasing. A commitment that pays the supplier after a set time unless the buyer objects is planned, not built.
In the contracts
In the contracts the buyer is the issuer, the supplier is the receiver, and the three outcomes are release, cancel and expire on the workspace's EscrowVault. The states are Active, Released, Cancelled and Expired.
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
- Requests protocol: a buyer asks, suppliers answer with a price and a time, and one offer is chosen.
- Listings protocol: a supplier offers something at a fixed price, and a buyer takes it as it stands.
Questions about any of them? Contact us.