Escrow

Funds held against a condition instead of paid straight through, and who holds them.

Most payments settle the moment they are approved. Escrow does not: the money is locked against a condition, and it moves only when that condition is met or the deal expires.

This matters most in agent to agent work, where the buyer cannot inspect the goods before paying and the seller cannot chase an invoice afterwards.

When escrow applies

Escrow is a policy decision, not a separate product. A policy can require it above a threshold:

{
  "escrow": { "required_above": "1000 USDC" }
}

It can also be requested per deal through the API, whatever the policy says. A request that escrow applies to still runs the full evaluation first: an escrowed deal that breaks a mandate is denied like any other, before funds are locked.

Who holds the funds

Not Saifuro. The funds sit in a programmable contract, and the release conditions are the ones the parties wrote when the deal was created.

This is the same boundary as everywhere else in the product. Saifuro evaluates, records, and signs verdicts; it does not take possession of money. The contracts run on Base and Solana and settlement is in USDC.

The practical consequence: nobody at Saifuro can release an escrow early, and nobody at Saifuro can freeze one. The conditions in the contract decide, and the decision log records what happened.

What the chain shows

The property that lets you check an escrow without asking us works for everyone else too. An escrow is a contract on a public chain funded in USDC: the address, the amount, the addresses on both sides and every state change are readable by anyone, and anyone holding one address belonging to your agent can walk from it to the rest.

What that exposes is commercial, not custodial. No key is at risk and nobody gains the ability to move the funds. What is visible is who deals with whom, for how much, and how often. For routine procurement that is uninteresting. For a supplier relationship you treat as confidential it is not, and it is cheaper to decide before the deal exists than after it is on a chain.

Two levers:

  • Escrow is a policy choice, not the default path. A deal that does not need a conditional lock settles through your provider instead and never appears on a chain at all.
  • Addresses accumulate. Every escrow gets its own contract, so deals are not joined together through us. The funding and receiving addresses are yours and the seller's, and one address reused across deals links them permanently.

We do not hide anything on your behalf today: there is no confidential deal mode, no shielded settlement and no stealth addressing. If that matters for your traffic, raise it during scoping — it changes which deals belong on a chain at all, which is a decision made before integration rather than after.

Lifecycle

createdfundeddeliveredreleasedrefundedfunds arriveattestedrelease runsdeadline passes unmetdisputed is a flag, not a state - without an arbiter, the deadline still decides
StateWhat it meansWhat moves the deal on
createdContract deployed, waiting for the buyer's fundsFunding arrives at the contract address
fundedBuyer's funds are locked in the contractThe agreed condition is met, or the deadline passes
deliveredThe condition has been attestedRelease runs
releasedFunds have moved to the sellerNothing, the deal is closed
refundedFunds have returned to the buyerNothing, the deal is closed

The condition is whatever the deal specified: delivery, an SLA measurement, or a deadline.

When a deal falls through

The money returns to the buyer automatically. No ticket, no request, no waiting on a decision from us.

A deal that refunds carries no escrow fee and no settlement fee: the escrow fee is charged on release, and nothing settled. The decisions behind it stand.

Disputes

There is no arbiter by default, and that is deliberate.

An escrow releases on the conditions written into it. When those conditions are not met by the deadline, the contract refunds the buyer. A contested deal therefore does not wait for a judgment: it expires, and the money goes back. Both sides keep the signed verdict and the decision log, which is what makes the disagreement reconstructable later.

Parties that want a judgment name an arbiter of their own choosing when the deal is created: written into the contract before funding, able to release or refund within the terms the two sides agreed. Saifuro is never that arbiter. We are not a party to your deals, and a neutral layer that decides who wins a dispute has stopped being neutral. How common named arbiters become in agent to agent deals is not ours to decide: the default stays neutral, and the option stays in the contract.

An escrow.disputed webhook fires when a deal is contested, so your own systems can act on it.

What it costs

0.25% of the escrowed amount, with a minimum of $1 per deal, charged to the customer that created the escrow when it releases. The settlement fee on the released amount applies as usual. See pricing.

Nothing is charged on a deal that refunds or expires, and nothing accrues while funds sit in escrow. Network fees for funding and release pass through at cost.

On this page