MISSING_CREDENTIALS | X-Api-Key or X-Api-Secret wasn’t sent | Send both headers on every request |
INVALID_CREDENTIALS | The key/secret pair doesn’t match an active account | Check for typos, or regenerate your keys in the dashboard |
IP_NOT_WHITELISTED | IP allowlisting is on and this request’s IP isn’t on it | Add the IP in API Keys settings, or turn allowlisting off |
SERVICE_NOT_ENABLED | This feature area isn’t enabled on your account | Contact support to request access — a valid key/secret alone isn’t enough |
PAYOUT_DISABLED | Payouts specifically aren’t enabled | Contact support |
LIMIT_EXCEEDED | A payout would exceed your min/max/hourly/daily limit | Check your limits on the Payouts page or in your dashboard |
RATE_LIMITED | Too many payout attempts from your account this hour | Wait retry_after seconds (included in the response) |
IP_RATE_LIMITED | Too many payout attempts from this IP this hour (cap: 20/hr) | Wait retry_after seconds |
KYC_REQUIRED | Your account needs KYC verification before this action | Complete KYC in the dashboard |
IDENTIFICATION_REQUIRED | A BVN or NIN was required and none was available | Pass bvn/nin on the request, or complete your own KYC BVN/NIN |
VALIDATION_ERROR | Request body failed validation | Check the errors object in the response for field-level detail |
NOT_FOUND | The resource (transaction, card, cardholder, etc.) doesn’t exist | Double check the ID/reference, and that it belongs to your account |
GATEWAY_ERROR | The upstream payment gateway returned an error | Safe to retry; contact support if it persists |