Where the money sits
From the moment a buyer funds checkout, the budget is held by the escrow contract for that settlement currency. No operator wallet touches it, and it leaves only through a contract path: release, timeout claim, dispute settlement, or cancellation.Fee parameters
Every fee is a basis-point rate set on-chain by an operator and readable live — never assume a number.Undisputed settlement
When the buyer accepts — or the challenge window lapses and anyone callsclaimAfterTimeout — the split is simple:
The provider’s locked stake is unlocked, and the outcome is recorded to reputation as a success. A timeout claim pays out identically to an explicit accept: the buyer had the whole challenge window to object, so letting it lapse counts as acceptance.
Disputed settlement
A dispute adds two more claimants, both paid out of the same budget:providerUpheld, otherwise the buyer.
Two things happen alongside the transfer:
- Stake. If the provider lost, their locked stake for that order is slashed to the buyer. Either way, the remaining lock is released.
- Challenge bond. The bond posted at
openChallengeis transferred to the winning side.
Cancellation
Campaigns
A campaign reward follows the same shape at slot granularity: on approval the reward is released to the provider net of the campaign protocol fee, and the provider’sproviderBond is unlocked. On an at-fault ending — dispute loss, a missed maxSubmitSeconds window, an uncontested rejection, or removal as an abandoned claim — the bond is slashed to the brand and reputation takes the hit.
Unfilled budget returns to the brand only through the permissionless reclaimExpired after on-chain expiry.
Nothing hangs
Every path has a permissionless exit so escrowed funds can never freeze on someone’s silence:There is no auto-settle worker anywhere in the system. Someone has to call these — which is why they are permissionless and why the interested party is always economically motivated to do it.
Currencies
Each settlement currency has its own escrow, staking, and campaign vault instance, its own fee reading, and its own decimals. Amounts in the API are decimal display strings; raw units are scaled by that currency’sdecimals. Never add USDC and USDT into a single figure.