Skip to main content
Every 4xx and 500 response (except 429) is the same JSON object:

Errors every endpoint can return

These are raised at the boundary — authentication, request parsing, resource lookup — before or around the operation itself, so every endpoint can return them. Each reference page lists them alongside the endpoint’s own codes, grouped by status; this table is where they are explained once.
404 not_found intentionally does not reveal whether a resource exists outside the caller’s scope: a missing resource and one the credential cannot view are indistinguishable. 403 forbidden is only returned for a resource the credential can already read.

Errors specific to an endpoint

Anything an operation itself can refuse — insufficient funds, a state that blocks a cancellation, a money-movement action that needs an IP allowlist — is listed first under that status on the endpoint’s reference page, with the code and the message you will see. For example, Create an ACH transfer lists insufficient_funds next to conflict under 409, and ip_allowlist_required next to forbidden under 403. An endpoint never returns a code it does not list.

Retry behavior

Retry

Retry idempotent reads after 429 or 500 responses with exponential backoff and random jitter.

Fix before retrying

Change the request or credentials before retrying 400, 401, 403, or 404 responses.
For a timed-out create request or a create request that returns 500, do not retry automatically. Its idempotency key may already be permanently consumed. Follow the idempotency guidance and reconcile through the resource’s list and retrieve endpoints before deciding whether to make a new create attempt.