Executes payout with confirmed amount from a pending transaction.
Authentication:
Key requirements:
customer_id is required and must:
be provided in request body,
not contain /,
exist under your account’s registered_customers, and
match the customer_id bound to the transaction.
sender in executePayout.Flow:
X-Idempotency-Key header is required (unique per logical payout).
HMAC (when configured): If your account has signing_secret, send HMAC-SHA256 over JSON body (excluding signature) via X-Signature or body signature.
If idempotency key already has a successful stored 202 response, that response is replayed (with ownership/customer validation).
Loads transaction, validates account ownership, customer_id ownership, and PENDING status.
Amount/currency lock: if transaction already has saved amount/currency, amount_confirmed and currency must match exactly.
partner_transaction_id: can be set once if empty; otherwise must be omitted or the same value.
Validates required fields from missing_fields
API returns 202 Accepted (with status PROCESSING). Final status is completed by provider/webhook updates.
Request body:
Required: tx_id, customer_id, amount_confirmed, currency
Optional: partner_transaction_id
sender is not required for execute (derived from registered customer profile).
Response (202 Accepted):
status, tx_id, customer_id, message, exchange_rate, fee, percentage_fee, fixed_fee, amount, amount_usd, currency
Optional: recipient, partner_transaction_id, updated_at
Precision:
exchange_rate: 10 decimal places
USD fields (fee, percentage_fee, fixed_fee, amount_usd): 2 decimal places
Error:
Returns 404 if customer_id is not found under your account.
Returns 403 when transaction ownership does not match account/customer.