Error codes

All API errors return { success: false, error: { code, message } }.

Error reference

Error CodeHTTP StatusDescriptionHow to Handle
MISSING_AUTH401No Authorization headerAdd Authorization: Bearer YOUR_KEY header
INVALID_KEY401Key not found or invalidCheck key is correct and from an active app
FEATURE_DISABLED403Feature not enabled on your API appEnable in Developer Dashboard → App → Overview
ACCOUNT_SUSPENDED403Merchant account suspendedContact support@watenga.africa
KYC_REQUIRED403KYC not yet approvedComplete KYC in merchant dashboard
PHONE_REQUIRED400Mobile money payment missing phoneAdd customerPhone to request
INVALID_PHONE400Invalid Zimbabwe mobile numberUse format +2637XXXXXXXX
INSUFFICIENT_FUNDS400Payout exceeds available balanceCheck balance first
INVALID_AMOUNT400Amount format or value invalidUse "10.00" format, must be > 0
CURRENCY_MISMATCH400Currency not supported for methodCheck supported currencies per gateway
GATEWAY_ERROR502Upstream payment provider errorRetry after a delay
RATE_LIMIT_EXCEEDED429Too many requestsBack off and retry after 60 seconds
NOT_FOUND404Resource not foundCheck the ID is correct
VALIDATION_ERROR400Request body validation failedCheck error details array
DUPLICATE_REQUEST409merchantTransactionId already usedUse a unique ID per transaction
OTP_EXPIRED400Agent cashout OTP expiredRequest a new cashout
LINK_NOT_FOUND404Payment link slug not foundCheck link URL
LINK_EXPIRED410Payment link has expiredMerchant must create a new link
LINK_EXHAUSTED410Payment link max uses reachedMerchant must create a new link
TOTP_REQUIRED4032FA code requiredInclude 6-digit code in X-TOTP-Code header
TOTP_INVALID4032FA code incorrect or expiredRe-enter from authenticator app