Escrow: Seven Steps from "Deal Agreed" to "Money in the Bank"
How the H-keten holds funds, gates shipping, accepts delivery, and resolves disputes — without anyone trusting anyone.
Every B2B deal has a moment where one side has to go first. Either the seller ships before they're paid, or the buyer pays before they've seen the goods. Without a third party holding the net, somebody is taking a risk they probably shouldn't take with €45,000 of strangers' money.
The escrow flow is the third party. It's not a third-party service — it's part of the platform — but functionally it does what an escrow agent does: holds the funds, releases them when both sides are satisfied, and adjudicates the case when they aren't.
The seven steps
1. Deal Agreed. A market deal closes (negotiation accepted) or an auction settles (winner determined, deposit captured). The H2 trigger fires on the deal transitioning to closed_won and creates the escrow row, the deposit address, and a numbered escrow ID (ESC-YYYY-NNNNN). The buyer receives a payment request with the IBAN and a structured reference.
2. Funds Held. The buyer wires the funds. The platform reconciles the incoming transfer against the escrow reference, marks the escrow as held, and notifies the seller. The seller now sees the funds are confirmed and can proceed with shipping.
3. Goods Shipped. The seller ships. The H3b ship-guard prevents the seller from marking the order as shipped until the escrow is held — no more "I shipped, then the buyer said they'd pay tomorrow, then they didn't." Tracking attaches to the order and is visible to both sides.
4. Goods Received. The buyer marks delivery received. This starts the inspection clock — the auto-release window, configured per tenant on the H7 policies page (default: 7 days).
5. Inspection. The buyer inspects. They have three options: accept (release funds early), do nothing (auto-release at the window expiry), or open a dispute. Most cases go through option 2: the buyer is satisfied, the clock runs out, the platform releases the funds.
6. Dispute (if raised). If the buyer opens a dispute, the H4 auto-release cron pauses, and the H5 dispute flow takes over. The buyer files the claim with photos and references to the original grading. The seller responds with their evidence. An adjudicator (platform staff) reviews and decides: full release to seller, full refund to buyer, or split. The decision writes settlement rows with the fee snapshot calculated by the H6 fees engine.
7. Funds Released. Whether by acceptance, auto-release, or dispute resolution, the final state is the same: a settlement row, a fee deduction, a seller payout, a buyer refund (if applicable), and an audit trail of every event in escrow_events. The escrow row transitions to released / refunded / split. The deal closes. Both sides move on.
What gets recorded
Every state transition writes an immutable row to escrow_events. Triggers prevent updates and deletes — once an event lands, it's there for the audit. The H9 evidence-package endpoint bundles all the events for an escrow into a downloadable ZIP: timestamps, amounts, the deposit reference, the ship-guard release, the inspection acceptance, the settlement breakdown. If the buyer's compliance officer asks "what happened on this transaction," the answer is one click.
Mutual waiver
Some deals between long-time partners don't want escrow. The H10 mutual-escrow-waiver PDF is for those cases. Both parties sign in the deal room, the waiver attaches to the deal, and the escrow flow is bypassed for that one transaction. It's the rare exception — the documentation exists so the escrow flow can stay strict everywhere else.