Ledger and payouts
Your US dollar balance, the ledger behind it, and payouts from it.
These routes work with test money today. Live payouts aren't switched on.
GET /api/treasury
Bearer apk_ · read:treasury
Returns balances (one entry per account, each with Available, Incoming and
Held amounts and when they were last read from the bank), snapshot (older
summary, kept for compatibility) and the 25 most recent ledger entries.
POST /api/treasury/deposits
Bearer apk_ · write:treasury · Idempotent
Sandbox only: asks the bank's test environment to send you an ACH, FedNow
or wire deposit. Nothing is credited by this call: the deposit is credited
when the bank reports it settled. Answers 202. Stablecoin deposits answer
422 capability_unavailable.
{
"source": "column_fiat",
"rail": "ach",
"amountUsdCents": 100000
}Real deposits arrive by bank transfer to your account details.
Recipients
POST /api/treasury/counterparties
Bearer apk_ · write:counterparties · Idempotent
Save a US bank account (routing and account number) or, with
kind: "international", a recipient abroad (BIC and IBAN or local account
number, plus address). We keep only the last 4 digits of the account number.
GET /api/treasury/counterparties, /api/treasury/counterparties/{id}
Bearer apk_ · read:treasury
Payouts
POST /api/treasury/payouts
Bearer apk_ · write:payouts · Idempotent
Send money to a saved recipient. rail is ach (add sameDay: true for
same-day ACH), wire, realtime or intl_wire. Idempotency-Key is
required.
{
"rail": "ach",
"counterpartyId": "cp_…",
"amountCents": 25000,
"description": "Invoice 114"
}The amount is reserved from your balance first, then the payout is sent to the bank once. It's never retried: if the bank doesn't answer, the payout waits as "outcome unknown" until the bank reports it, and the reservation is released after 24 hours if it never does. Payout limits apply per workspace and per key.
For international wires, see Send money abroad by international wire.
GET /api/treasury/payouts, /api/treasury/payouts/{id}
Bearer apk_ · read:treasury
GET /api/treasury/payouts/{id}/tracking
Bearer apk_ · read:treasury
SWIFT tracking for an international wire.
POST /api/treasury/payouts/{id}/release, /cancel
Bearer apk_ · write:payouts
Release or cancel a held US dollar international wire. /recall isn't
available yet.
Exchange rates
POST /api/treasury/fx-quotes
Bearer apk_ · write:payouts · Idempotent
A firm rate for an international wire, for an exact amount the recipient gets
(before bank deductions). Use its id as quoteId before the lock expires.
GET /api/treasury/fx-rates
Bearer apk_ · read:treasury
Indicative rates, for display only.
The full request and response fields are in the OpenAPI spec.