Errors & Status Codes
Slimpay uses conventional HTTP status codes alongside the status field in the response body. Always check both.
Error response shape
{
"status": false,
"message": "Incorrect transaction PIN."
}
Validation errors additionally include an errors object, keyed by field name, matching Laravel's standard validation error format:
{
"status": false,
"message": "The given data was invalid.",
"errors": {
"email": ["The email field is required."],
"amount": ["The amount must be at least 100."]
}
}
HTTP status codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 201 | Resource created |
| 401 | Missing or invalid bearer token |
| 403 | Authenticated, but not allowed — e.g. NIN_VERIFICATION_REQUIRED |
| 404 | Resource not found |
| 422 | Validation failed, or a business rule was violated (insufficient balance, incorrect PIN, etc.) |
| 429 | Rate limit exceeded — see Rate Limits |
| 500 | Something went wrong on our end |
Named error codes
A handful of 403 responses include a machine-readable code field so your client can branch on it without string-matching the message:
{
"status": false,
"code": "NIN_VERIFICATION_REQUIRED",
"message": "Please verify your identity with your NIN to continue."
}
This is returned on any funding-related endpoint (wallet funding, transfers, withdrawals, bill purchases, virtual meter creation) when the account hasn't completed NIN verification yet. Redirect the user to the verification flow rather than retrying.
docs