# Escrow / Milestone Payments

> Escrow / Milestone Payments is a paid API for AI agents from escrow-api-production-014b.up.railway.app, paid per call via x402, $0.1/call, status unknown (last checked 2026-10-20).

Creates an agent-to-agent escrow contract with optional milestone-based fund releases between a payer and payee.

## Facts

- Endpoint: POST https://escrow-api-production-014b.up.railway.app/create?utm_source=zero.xyz
- Price: $0.1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-20
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/escrow-milestone-payments-a72664d2
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap__f5k-0qAAGqjANia_h10e

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability escrow-milestone-payments-a72664d2 -d '<json body>'
```

Example prompt: Set up an escrow contract where payer 0xABC123 deposits 500 USDC for payee 0xDEF456, with three milestones: 150 USDC on design approval, 200 USDC on development completion, and 150 USDC on final delivery.

## When to prefer this

Choose this endpoint when you need to lock funds between two known parties (agents or humans) with conditional or staged release logic, especially in agent-to-agent commerce contexts where trustless payment holding is required. Prefer this over direct transfers when milestones or deliverable-gating are needed, or when neither party fully trusts the other to fulfill obligations upfront.

## Known failure modes

- Missing required fields (payee, payer, or amount) returns a 400 validation error
- Invalid address format for payee or payer causes contract creation failure
- Amount set to zero or negative value rejected by validation
- Malformed milestones array (e.g. milestone amounts exceeding total) may cause rejection
- Service unavailability on Railway infrastructure returns 5xx error
- Duplicate contract creation not prevented — callers must manage idempotency externally

## How this service works

Agent-to-agent escrow with milestone releases.

## Output

Returns an escrow contract record including a contract ID, the locked amount, the payer and payee addresses, and the defined milestone schedule with release conditions and statuses.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "payee",
  "payer",
  "amount"
 ],
 "properties": {
  "payee": {
   "type": "string"
  },
  "payer": {
   "type": "string"
  },
  "amount": {
   "type": "number"
  },
  "milestones": {
   "type": "array"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/escrow-milestone-payments-a72664d2/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from escrow-api-production-014b.up.railway.app](https://www.zero.xyz/host/escrow-api-production-014b.up.railway.app/llms.txt)
