POST
/api/public/v1/payouts

Create a payout

Moves money out to the entity’s bank account. Gated on Stripe’s live state rather than our mirror of it: the account needs a bank external account (or payouts enabled), and the amount has to be within the **available** USD balance — pending funds are not yours to move yet. The Transaction and its journal entry are written by the `payout.paid` webhook, not by this call, so a payout raised through the API lands in the books exactly like a scheduled one.

Required scope

The access token must carry this scope. A token missing it gets 403 Forbidden. Grant them to an API client under Settings → Company → API, and to a teammate under Employee → Permissions.

payouts:write

Request Body

PropertyTypeDescription
legalEntityIdstringWhich entity is paying out.
amountnumberCents. Minimum 100 ($1.00).
descriptionstringShown on the bank statement line.
POSTExample request
curl
curl -X POST "https://www.pxb.app/api/public/v1/payouts" \
  -H "Authorization: Bearer your_access_token" \
  -H "Content-Type: application/json" \
  -d '{
    "legalEntityId": "le_7788",
    "amount": 420000,
    "description": "August draw"
  }'
200Example response
json
{
  "message": "Payout initiated!",
  "content": {
    "payoutId": "po_1abc",
    "amount": 420000,
    "arrivalDate": 1788220800
  }
}
400Example response
json
{
  "message": "Insufficient available balance. $1,200.00 available."
}

In the console

The same thing done by hand, for anyone comparing the API against the screen they already use.

Finances → Banking
/finances/banking
  1. Withdrawal, from the account balance panel.