Base URLs
A
sk_test_… key only works against sandbox; a sk_live_… key only works against production. Using the wrong pair returns 401.
Authentication
Every request carries your API key in theAuthorization header:
API versioning
Send thechipper-version header with the current version date:
Pagination
All list endpoints acceptlimit (1–100, default 20) and cursor. Results are newest first.
nextCursor as cursor on the next request to walk forward. nextCursor is null on the last page. Cursors are opaque strings — do not construct them.
Response envelopes
Single resources are wrapped in a key named after the resource:data array.
Errors
Every error uses the same shape:error is a stable machine-readable code to branch on. requestId matches the x-request-id response header — include it when contacting support. See Errors for the full code reference.
Rate limits
100 requests per second per API key, sliding window. Exceeding the limit returns429 rate_limited with details.retryAfter. For bulk operations, use POST /v1/recipients/bulk and POST /v1/validate/bulk (up to 100 items each).
Money
All amounts in responses are decimal strings ("150.00"), never floats. Parse with a decimal library when doing arithmetic. See Money & Currencies for currency codes and zero-decimal currencies.
Idempotency
Money-moving endpoints (payouts, collections, orders, conversions) accept an externalReference — your unique string for the operation. Retrying with the same value returns the original resource (200 instead of 201) and never creates a duplicate. See Idempotency.