Error Codes
All errors return a JSON object with the following fields:
{
"statusCode": 400,
"error": "BAD_REQUEST",
"message": "Human-readable description of the error"
}
HTTP status codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 201 | Created |
| 400 | Bad request (missing or invalid parameters) |
| 401 | Unauthenticated (missing or invalid API key) |
| 403 | Forbidden (insufficient permissions) |
| 404 | Resource not found |
| 422 | Unprocessable entity (validation failed) |
| 429 | Too many requests (rate limiting) |
| 500 | Internal server error |
Business error codes
| Code | HTTP | Message |
|---|---|---|
INVALID_API_KEY | 401 | Missing or invalid / revoked API key |
MERCHANT_SUSPENDED | 403 | Your merchant account is suspended. Please contact support. |
TRANSACTION_NOT_FOUND | 404 | Transaction not found |
OPERATOR_NOT_FOUND | 404 | Unknown or unavailable operator |
OPERATOR_UNAVAILABLE | 503 | Operator temporarily unavailable |
INSUFFICIENT_BALANCE | 422 | Insufficient balance to complete this operation |
DUPLICATE_MERCHANT_REF | 409 | An active transaction already exists with this reference |
AMOUNT_TOO_LOW | 422 | The minimum amount for {operator} is {amount} {currency} |
AMOUNT_TOO_HIGH | 422 | The maximum amount for {operator} is {amount} {currency} |
TRANSACTION_EXPIRED | 410 | This payment link has expired |
RATE_LIMIT_EXCEEDED | 429 | Request rate limit exceeded |