| 400 | validation_error | The body failed validation (see details) | No, fix the request |
| 400 | bad_request | Semantically invalid (e.g. amount on both sides of a payout) | No |
| 400 | insufficient_funds | The balance can’t cover the amount + fee | After funding |
| 400 | payout_limit_exceeded | A per-transaction, daily, or monthly cap was hit | Later, or with a smaller amount |
| 401 | unauthorized | Missing, malformed, expired, or revoked API key | No |
| 403 | forbidden | Key lacks the scope, or caller IP isn’t allowlisted | No |
| 403 | organization_suspended | Contact api-support@chippercash.com | No |
| 404 | not_found | No such resource in your organization | No |
| 409 | duplicate | A resource with this identity already exists (details.existingId) | No, use the existing one |
| 409 | conflict | The operation conflicts with current state | Depends |
| 422 | invalid_recipient | Destination failed validation (wrong number, closed account) | No, fix the destination |
| 429 | rate_limited | Too many requests (details.retryAfter seconds) | Yes, after retryAfter |
| 503 | no_provider_available | No live provider for that method right now | Yes, with backoff |
| 503 | rate_unavailable | FX rate temporarily unavailable | Yes, with backoff |
| 500 | internal_error | Our fault; the requestId lets us find it | Yes, once |