Skip to main content
A milestone escrow holds the whole amount upfront and releases it in parts as the buyer confirms each milestone — ideal for multi-stage work (design → build → deploy). It has settlementType: MILESTONE and carries a milestones[] array. See Milestone escrows for the concept and fees & settlement for how each release is netted.
Funding still uses the shared Pay escrow endpoint (the buyer pays the full amount once). The difference is creation and staged release, both covered here.

Endpoints

RouteMethod & pathWhat it does
Create milestone escrowPOST /v1/escrow/milestone/createCreates the staged escrow. JSON body (no file upload). Rules: ≥ 2 milestones, each a positive integer, the sum equals amount, and whoPays must be buyer. customer-id = seller.
Edit milestone escrowPUT /v1/escrow/milestone/edit/{paymentToken}Replaces the details and full milestone set. JSON body. Same rules as creation. Allowed only while AWAITING_PAYMENT and only by the seller that created it; the fee is recalculated. customer-id = seller.
Get milestonesGET /v1/escrow/milestone/{paymentToken}Returns the milestone list with each milestone’s id, amount, status and releasedAt. Returns [] for standard escrows.
Confirm milestonePOST /v1/escrow/milestone/confirm/{escrowId}/{milestoneId}Buyer approves one milestone; its amount is released to the seller — or to the milestone’s customerId main balance, if one was set at creation. customer-id = buyer. The escrow auto-completes when the final milestone is released.

How a milestone escrow flows

1

Create with milestones (seller)

POST /v1/escrow/milestone/create with a milestones[] array summing to amount. Each milestone may carry an optional customerId to route its release to a specific customer.
2

Fund in full (buyer)

Pay escrow once → OPENED.
3

Confirm milestone-by-milestone (buyer)

Each POST …/milestone/confirm/{escrowId}/{milestoneId} releases that milestone’s amount to the seller — or to its customerId, if set — and sets its status to RELEASED.
4

Auto-complete

Releasing the last milestone closes the escrow as COMPLETED — no separate confirm-payment call.