Skip to main content
POST
Release funds from a reserve to a target account

Authorizations

Authorization
string
header
required

Same flow; ledger:write is required for any mutation.

Headers

Idempotency-Key
string

Required on writes. Stable identifier you choose. The same key always returns the same transaction, forever. Can also be supplied as idempotency_key in the request body. Header wins.

Allowed character set: A-Z, a-z, 0-9, _, :, ., -. Max 255 bytes. Replays of an accepted key return the original response with header Idempotent-Replayed: true so callers can tell a replay from a freshly-committed result.

Required string length: 1 - 255
Pattern: ^[A-Za-z0-9_:.\-]+$
Example:

"pi_acme_1234_capture"

Path Parameters

id
string
required

Body

application/json
target_account_id
string
required

Account that receives the released funds. Often the original source.

amount
required

Amount in minor units to release, as a decimal string (recommended) or an integer on write. Must be <= the reserve's posted balance.

Pattern: ^\d+$
idempotency_key
string
metadata
object

Response

Release booked

object
enum<string>
required

Discriminator naming the shape of this resource (e.g. account, transaction).

Available options:
reserve_op_result
Example:

"account"

reserve_account_id
string
required
Example:

"reserve:merchant_payable:acme:usdc"

transaction_id
string<uuid>
required
balance
string
required

Reserve posted balance after this op, in minor units, as a decimal string. Parse with a big-integer or decimal type, never a JS number.

Pattern: ^-?\d+$
Example:

"500000"

remaining_balance
string

Alias of balance; preserved for symmetry with the decision-doc contract. Decimal string of minor units.

Pattern: ^-?\d+$
Example:

"500000"