Conventions
These conventions apply to every endpoint: the response envelope, HTTP status codes, pagination, amount formatting, and how to handle asynchronous money movement.
Response envelope
Every JSON response is wrapped. On success:
{
"success": true,
"data": { /* per-endpoint shape */ }
}
On error:
{
"success": false,
"error": {
"type": "VALIDATION_ERROR",
"code": "INVALID_INPUT",
"message": "amount must be positive",
"details": {}
}
}
successis always present.datais present on success (the per-endpoint shapes are documented in the reference).erroris present on failure; see the Error Reference for thetypecatalog.
data in context the { "success": true, "data": … } wrapper is implied.HTTP status codes
| Code | Meaning |
|---|---|
200 | OK |
201 | Created (registration, deposits, withdrawals, disputes, freeze/unfreeze, webhook create) |
400 | Validation error / sandbox-only endpoint called in production |
401 | Missing/invalid org credentials or user session |
403 | Partner account suspended/revoked, or cross-account access |
404 | Resource not found or not owned by this user/partner |
429 | Rate limit exceeded |
500 / 502 | Internal error / upstream provider rejected the call |
Pagination
List endpoints take limit (default 20, max 100 unless noted) and offset (default 0). Transaction listing additionally accepts page (1-indexed) which overrides offset when both are supplied. List responses include either a pagination object ({ limit, offset, total }) or inline count / has_next / has_previous / total_pages fields — documented per endpoint.
Amounts & currency
Money amounts are decimal dollars (e.g. 50.00), not cents. All amounts are USD. Deposit/withdrawal amount must be > 0.
Idempotency & polling
Money-movement results arrive asynchronously. After creating a deposit/withdrawal, either:
- Poll the resource (
GET …/deposits/:id) every 5–10 s for ~60 s, or - Subscribe to webhooks (recommended) and react to
Payment.ACH.Completed/Payment.ACH.Failed.
Webhook deliveries can repeat in edge cases dedupe on the event envelope id (see Webhooks).