Skip to main content
Every refusal on a /v1 path has this shape.
  • code is stable. Branch on it.
  • message is for people and can change.
  • details is context for that code, as strings, and is {} when there is none. Its keys are snake_case, and so is request_id, unlike the rest of the API.
  • request_id identifies the call. Send your own in an X-Request-Id header to choose it. INVALID_REQUEST has none.
Branch on code rather than the HTTP status. Most business refusals share 400.

Requests the server cannot read

Credentials and access

Writes

Ledger

Lending

FX

Named accounts and partners

Reconciliation and webhooks

Tenant and service state