Open an escrow

Hold a buyer's money in an agreement and release it a stage at a time, only when each stage is approved.

An escrow agreement holds a buyer’s money until each stage (a “payment gate”) is approved. No timer ever settles anything: money moves only when a person approves it.

1. Check escrow is on for your currency

Escrow is switched on per currency for your tenant during set-up; ask us if a currency you need isn’t on. Escrow also needs someone to resolve disputes: opening an agreement returns 409 if your tenant’s escrow back-office role has no members.

2. Open the agreement

POST /escrow names the payee by mobile number, email address or username, with the amount, an expiry and, optionally, gates. Leave gates out for a single gate covering the full amount. No money moves yet.

3. Fund it

POST /escrow/{reference}/fund takes the buyer’s money into the agreement’s own account. Funding freezes the terms: until then, PUT /escrow/{reference}/gates can amend them, and POST /escrow/{reference}/cancel cancels a draft.

4. Approve each gate

POST /escrow/{reference}/gate/{gateReference}/approve releases that gate’s amount to the payee. reject refuses it.

When there’s a dispute

POST /escrow/{reference}/gate/{gateReference}/dispute raises a case. Your escrow back-office team decides it: release to the payee, or refund the buyer. Case handling is set up for your tenant; ask us how. There are no partial splits on a dispute.

Every state change arrives as a signed webhook: escrow.funded, escrow.gate_passed, escrow.gate_rejected, escrow.disputed, escrow.released, escrow.refunded and escrow.release_failed.