Error Handling
All API errors follow a consistent format.Error Response Format
HTTP Status Codes
| Code | Meaning |
|---|---|
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid/missing API key |
403 | Forbidden - IP not whitelisted |
404 | Not Found - Resource doesn’t exist |
409 | Conflict - Resource already exists |
422 | Unprocessable - Validation failed |
429 | Too Many Requests - Rate limited |
500 | Internal Error - Our fault |
Common Error Codes
User Errors
| Code | Description |
|---|---|
USER_EXISTS | Mobile number already registered |
USER_NOT_FOUND | User ID doesn’t exist |
KYC_INCOMPLETE | User hasn’t completed KYC |
NO_BANK_ACCOUNT | No verified bank account |
Transaction Errors
| Code | Description |
|---|---|
PENDING_TRANSACTION_EXISTS | User has an active transaction |
AMOUNT_TOO_LOW | Below minimum ($10) |
AMOUNT_TOO_HIGH | Above maximum ($10,000) |
QUOTE_EXPIRED | Transaction expired |
Payout Errors
| Code | Description |
|---|---|
KYC_NOT_VERIFIED | User KYC status is not verified at payout time |
KYC_LEVEL_INSUFFICIENT | User must complete at least basic KYC |
BANK_ACCOUNT_INVALID | Bank account not found or not verified |
PAYOUT_FAILED | Payout provider rejected the transfer |
KYC Errors
| Code | Description |
|---|---|
PAN_INVALID | Invalid PAN format |
PAN_NOT_FOUND | PAN not in database |
AADHAAR_OTP_EXPIRED | OTP session expired |
BANK_VERIFICATION_FAILED | Penny drop failed |
NAME_MISMATCH | Document names don’t match |
