Skip to content

API reference

Every endpoint the API serves, generated from its source code: the routes, the request schemas, the response bodies, the error codes, and who may call each one. The API's test suite fails when an endpoint changes without its generated contract being updated, and this site is regenerated from that same source.

For how the pieces fit together, start with the guides. The same contract is available as an OpenAPI 3.1 document for client generators and API tools.

Reading an endpoint

  • Auth: API key means Authorization: Bearer <key>. See Authentication.
  • Permission: the action your role must hold, and which roles hold it. See Team and API keys.
  • KYB: the endpoint moves money, so your organization must have completed verification. Before that it answers 403 kyb_required.
  • Rate limit: which bucket the call draws from (below).
  • Unknown fields: some request bodies reject a field they do not know with 400; the rest ignore it. Each endpoint says which. Check spelling either way: an ignored field is a silently missing one.
  • Always present: in a response table, no means the field is left out when it does not apply.

Rate limits

Per organization and per bucket. Every authenticated response carries ratelimit-limit, ratelimit-remaining and ratelimit-reset. A batch costs one initiate token per item. Defaults:

Bucket Burst Sustained, per second Used by
initiate 30 5 POST /transactions, POST /batches
write 60 10 every other authenticated write
read 300 50 every authenticated read

More: Rate limits.

Roles and permissions

Each team member has a role. An endpoint that names a permission is refused with 403 forbidden for a role without it; every role may call an endpoint that names none. owner is the organization key itself and is never assigned.

Permission owner admin member viewer Endpoints
beneficiary.manage yes yes yes no POST /treasury/beneficiaries
member.invite yes yes no no POST /members/invitations, POST /members/:id/invitations
member.manage yes yes no no PATCH /members/:id, DELETE /members/:id
member.read yes yes no no GET /members
payment.initiate yes yes yes no POST /quotes, POST /transactions, POST /batches
recipient.manage yes yes yes no POST /recipients, PATCH /recipients/:id, DELETE /recipients/:id
recipient.read yes yes yes yes GET /recipients
treasury.move yes yes yes no POST /treasury/onramp, POST /treasury/onramp/pix, POST /treasury/withdrawals, POST /treasury/offramp, POST /treasury/onramp/:onRampId/simulate-payment, POST /treasury/onramps/simulate-wire, POST /wallets/:walletId/topup-eurc
webhook.manage yes yes no no PUT /webhooks/endpoint, DELETE /webhooks/endpoint

All endpoints

Discovery

Endpoint
GET /health Liveness check
GET /capabilities What this environment can do
GET /me Who this API key belongs to

Quotes and payments

Endpoint
POST /quotes Get a firm, rate-locked quote
POST /transactions Send a payment
GET /transactions List your payments
GET /transactions/:id A payment's status and timeline

Batch payouts

Endpoint
POST /batches Submit a batch payout
GET /batches List your batches
GET /batches/:batchId A batch, its item counts and a page of items

Balance and wallets

Endpoint
GET /balance Your USDC balance
GET /wallets Your wallets
GET /wallets/:walletId One of your wallets
GET /wallets/:walletId/balances What the wallet provider reports a wallet holds
GET /issuers/accounts Issuer accounts held for you
GET /issuers The stablecoin issuers this environment supports
POST /wallets/:walletId/transfers Move funds between your wallets (not available)
POST /issuers/:issuerId/mint Mint a stablecoin at par (not available)
POST /banking/wire-transfers Send an outbound wire (not available)

Deposits

Endpoint
GET /treasury/deposit-instructions Where to wire fiat, and the reference to quote
GET /treasury/onramp/quote Price a wire deposit without starting one
POST /treasury/onramp Open a wire deposit
GET /treasury/onramps List your deposits
GET /treasury/onramp/:onRampId A deposit's status and timeline
GET /treasury/onramp/pix/quote Price a PIX deposit
POST /treasury/onramp/pix Open a PIX deposit
GET /treasury/crypto-deposit Where to send USDC on chain, and what each network costs

Withdrawals and off-ramps

Endpoint
GET /treasury/withdrawals/quote Price a USDC withdrawal to your own wallet
POST /treasury/withdrawals Withdraw USDC to your own wallet
GET /treasury/withdrawals List your withdrawals
GET /treasury/withdrawals/:withdrawalId A withdrawal's status and timeline
POST /treasury/beneficiaries Register a bank account an off-ramp can pay
GET /treasury/beneficiaries Your registered beneficiaries
GET /treasury/offramp/quote Price an off-ramp to a beneficiary
POST /treasury/offramp Pay USDC out to a beneficiary's bank account
GET /treasury/offramps List your off-ramps
GET /treasury/offramp/:offRampId An off-ramp's status and timeline

Recipients

Endpoint
GET /recipients Your saved recipients
POST /recipients Save a recipient
PATCH /recipients/:id Edit a saved recipient
DELETE /recipients/:id Delete a saved recipient

Team and API keys

Endpoint
GET /members Your team
POST /members/invitations Invite a team member
POST /members/:id/invitations Re-send an invitation
POST /invitations/accept Accept an invitation
PATCH /members/:id Change a member's role
DELETE /members/:id Revoke a member
POST /members/me/api-key Issue your own member API key
POST /api-keys/rotate Rotate the organization API key

Webhooks

Endpoint
GET /webhooks/endpoint The registered webhook URL
PUT /webhooks/endpoint Register or replace the webhook URL
DELETE /webhooks/endpoint Stop webhook delivery

Email notifications

Endpoint
GET /notifications/preferences Which events you are emailed about
PUT /notifications/preferences Choose which events you are emailed about
POST /notifications/verify/send Email yourself a verification link

Statements

Endpoint
GET /statements Your fee statement for a period

Sandbox tools

Endpoint
POST /treasury/onramp/:onRampId/simulate-payment Make a provider-collected deposit's payment arrive (sandbox)
POST /treasury/onramps/simulate-wire Make a wire arrive at our account, quoting your reference (sandbox)
GET /treasury/sandbox-prefill Inputs the sandbox providers are proven to settle (sandbox)
POST /wallets/:walletId/topup-eurc Top up a simulated EURC balance (sandbox)