Errors & limits
ERRORS & LIMITS

Errors & limits

The conventions that apply across every endpoint — error shape, rate limits, pagination, and how amounts are represented.

Error response

Failed requests return a consistent JSON body. Branch on errorCode, not on the human-readable message.

error.json
{
"message": "payment not found",
"errorCode": 404
}
message

A human-readable description of what went wrong. For logs and debugging.

errorCode

A stable integer code for machine handling. Use it to drive your control flow.

HTTP status

400 invalid request · 401 missing or invalid API key · 404 not found · 409 conflict (e.g. duplicate externalId) · 429 rate limited.

Rate limits

Per API key

Requests are rate-limited per key. Exceeding the limit returns 429; back off and retry.

Custom limits

Need higher throughput? Contact support to raise your limits.

Pagination

List endpoints return newest-first pages with cursor pagination.

lastId

Pass the id of the last item from the previous page to fetch the next one.

limit

Page size. Defaults to 20; the maximum is 100.

order

Sort direction by id: asc or desc (default).

Money & amounts

Decimal strings

Every monetary field is a decimal string, never a floating-point number, so precision is never lost. Parse them with a decimal library.

Per-payment cap

A single payment can request at most 60,000 (USD-equivalent).

Note: there is no Idempotency-Key header. To make a create call idempotent, pass externalId — a repeat with the same value returns a conflict instead of creating a duplicate.