Approve and Release Milestones
Approve milestones and release the escrow in a single atomic transaction.
Endpoint
Deployed v2 escrow contract (C...).
CDHAZ2RTE2MDHYQQ7NATF5IVKIFVGLX6FHJ66OPK6MUXBSTRRXFXJ6QBWallet that signs the transaction. MUST be in BOTH roles.approvers and roles.release_signers (enforced on-chain).
GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVNZero-based indexes of the milestones to approve in this batch. After approving them, the contract validates that EVERY milestone of the escrow is approved and then releases the full balance.
[0,1,2]Unsigned XDR built successfully.
Base64-encoded unsigned XDR. Sign it with the appropriate wallet and submit to Soroban / Horizon to execute the operation on-chain.
AAAAAgAAAAAtWsgedQ...AAAAAQAAAAA=SHA-256 hash of the prepared transaction. NOTE: it only matches the executed transaction if you sign the XDR exactly as returned β re-preparing (re-simulating) it changes the hash. Prefer contractId for correlation when present.
b1946ac92492d2347c6235b4d2611184a8d53f7a8e6e9b4f0c79a2b30e5c4f3aDeploys only: the address (Cβ¦) the new escrow contract WILL have once this transaction executes β known upfront because the service generates the deploy salt. Track your escrow with it (e.g. GET /escrows/:contractId) as soon as the transaction lands; it is stable even if your wallet/SDK re-prepares the transaction.
CAAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQC526Request body or query params fail schema validation (wrong type, missing required field, unknown property).
Missing, malformed, expired, revoked or invalid API key.
API key is valid but does not have the role required for this operation.
Payload is well-formed but a business rule rejects it (e.g. amount out of range, role not allowed for this user).
Unexpected server-side failure. Use the traceId to look up the incident in server logs or contact support.
POST /escrow/single-release/v2/approve-and-release-milestones HTTP/1.1
x-api-key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 168
{
"contractId": "CDHAZ2RTE2MDHYQQ7NATF5IVKIFVGLX6FHJ66OPK6MUXBSTRRXFXJ6QB",
"signer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
"milestoneIndexes": [
0,
1,
2
]
}{
"unsignedXdr": "AAAAAgAAAAAtWsgedQ...AAAAAQAAAAA=",
"txHash": "b1946ac92492d2347c6235b4d2611184a8d53f7a8e6e9b4f0c79a2b30e5c4f3a",
"contractId": "CAAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQC526"
}