---
title: "Create a USDC escrow"
method: POST
path: "/escrow"
tags: ["Escrow"]
---

# Create a USDC escrow

`POST /escrow`

## Request

- Base URL: `https://x402-agent-pay.com`
- URL: `https://x402-agent-pay.com/escrow`
- Auth: none declared

Lock USDC in escrow for milestone-based agent jobs. Funds are held by the facilitator until /release is called by the payer or dispute resolution is triggered.

## Request body

- EscrowRequest
  - `payer` string, required: Payer wallet address
  - `payee` string, required: Payee wallet address (agent or human)
  - `amount_usdc` number, required: Amount in USDC to lock
  - `description` string: Job or service description
  - `payment_header` string: x402 payment header to fund the escrow

## Response `200`

Escrow created

- EscrowResponse
  - `escrow_id` string
  - `status` 'locked' | 'released' | 'refunded'
  - `amount_usdc` number
  - `created_at` string, date-time

## Other responses

- `400`: Invalid request
- `402`: Payment Required — attach X-PAYMENT header with EIP-712 signed USDC grant

---

[API](https://skmtc.dev/x402-agent-pay/apis/agentpay-x402-facilitator-api.md) · [All operations](https://skmtc.dev/x402-agent-pay/apis/agentpay-x402-facilitator-api/llms.txt) · [OpenAPI document](https://skmtc.dev/x402-agent-pay/apis/agentpay-x402-facilitator-api/revisions/33ece6814ac9?raw)
