A few conventions apply to every endpoint.
Base URLs
Always send Content-Type: application/json when you include a body, and read/write
JSON.
Idempotency
Value-moving endpoints accept an idempotency key so a retry never double-executes.
On CaaS transfers and withdrawals, pass idempotency_key in the body:
On Payments, send a stable reference on create operations (e.g. checkout) and
reconcile against it. Reusing the same reference lets you safely retry.
Amounts
- Payments checkout amounts are decimal numbers in the stated
currency.
- WaaS transfers take
amount as a string plus a unit: "decimal" (whole coins,
the default) or "base" (smallest unit, e.g. wei/satoshi).
- CaaS amounts are decimal strings; stablecoin vs fiat fields are named explicitly
(
stablecoin_amount, local_fiat_amount).
Always send money amounts as strings where the API asks for a string, to avoid
floating-point rounding.
List endpoints accept page and limit query parameters:
Timeouts & retries
Retry 429 and 5xx with exponential backoff and jitter. Never retry a non-idempotent
write without an idempotency_key or a stable reference. See Errors.