> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Error code quick reference

> A complete list of Waffo API error codes and category descriptions.

## Error code format

An error code consists of an alphabetic prefix + digits:

| Prefix     | Category                | HTTP status code |
| ---------- | ----------------------- | ---------------- |
| **0**      | Success                 | 200              |
| **A**xxxxx | Merchant-related errors | 400-401          |
| **B**xxxxx | User-related errors     | 400              |
| **C**xxxxx | System-related errors   | 500-503          |
| **D**xxxxx | Risk control rejection  | 406              |
| **E**xxxxx | Unknown errors          | 500              |

<Warning>
  **Category E errors (unknown errors)**: Caused by an unknown state in Waffo’s internal systems or third-party systems. Merchants must continuously query the transaction status until a final success/failure result is returned.
</Warning>

## Full error code list

### Success

| Error code | Description | HTTP |
| ---------- | ----------- | ---- |
| 0          | Success     | 200  |

### A - Merchant-related errors

| Error code | Description                                                                  | HTTP |
| ---------- | ---------------------------------------------------------------------------- | ---- |
| A0001      | Invalid API secret key                                                       | 401  |
| A0002      | Invalid signature                                                            | 401  |
| A0003      | Parameter validation failed                                                  | 400  |
| A0004      | Permission denied                                                            | 401  |
| A0005      | Merchant limit exceeded                                                      | 400  |
| A0006      | Abnormal merchant status                                                     | 400  |
| A0007      | Unsupported transaction currency                                             | 400  |
| A0008      | Transaction limit exceeded / payment amount must be within the allowed range | 400  |
| A0009      | Order does not exist                                                         | 400  |
| A0010      | Merchant contract does not allow this operation                              | 400  |
| A0011      | Idempotency parameter mismatch error                                         | 400  |
| A0012      | Insufficient merchant account balance                                        | 400  |
| A0013      | Payment has succeeded; the order cannot be canceled                          | 400  |
| A0014      | Refund not allowed due to refund rules                                       | 400  |
| A0015      | Payment channel not supported; the order cannot be canceled                  | 400  |
| A0016      | Payment channel rejected; the order cannot be canceled                       | 400  |
| A0017      | Payment channel not supported; the order cannot be refunded                  | 400  |
| A0018      | The user has no available payment method                                     | 400  |
| A0019      | Refund not allowed due to a chargeback dispute                               | 400  |
| A0020      | Payment amount exceeds the transaction limit                                 | 400  |
| A0021      | Cumulative payment amount exceeds the daily transaction limit                | 400  |
| A0022      | Multiple products detected; the merchant must specify the product name       | 400  |
| A0023      | Token has expired; the order cannot be created                               | 400  |
| A0024      | Exchange rate has expired; the order cannot be processed                     | 400  |
| A0026      | The checkout page language specified by the merchant is not supported        | 400  |
| A0027      | The number of refunds has exceeded the maximum of 50                         | 400  |
| A0029      | Invalid card data provided by the merchant                                   | 400  |
| A0030      | Unable to find the card BIN provided by the merchant                         | 400  |
| A0031      | The card scheme or card type provided by the merchant is not supported       | 400  |
| A0032      | Invalid payment token data provided by the merchant                          | 400  |

### B - User-related errors

| Error code | Description                                                     | HTTP |
| ---------- | --------------------------------------------------------------- | ---- |
| B0001      | Abnormal user status                                            | 400  |
| B0002      | User limit exceeded                                             | 400  |
| B0003      | Insufficient user balance                                       | 400  |
| B0004      | The user did not complete the payment within the timeout period | 400  |
| B0005      | User authorization failed                                       | 400  |
| B0006      | Invalid phone number                                            | 400  |
| B0007      | Invalid email format                                            | 400  |

### C - System-related errors

| Error code | Description                                              | HTTP |
| ---------- | -------------------------------------------------------- | ---- |
| C0001      | System error                                             | 500  |
| C0002      | Invalid merchant contract                                | 500  |
| C0003      | Invalid order status; unable to proceed to the next step | 500  |
| C0004      | Order information mismatch error                         | 500  |
| C0005      | Payment channel rejection                                | 503  |
| C0006      | Payment channel error                                    | 503  |
| C0007      | Payment channel under maintenance                        | 503  |

### D - Risk control rejection

| Error code | Description            | HTTP |
| ---------- | ---------------------- | ---- |
| D0001      | Risk control rejection | 406  |

### E - Unknown errors

| Error code | Description    | HTTP |
| ---------- | -------------- | ---- |
| E0001      | Unknown status | 500  |
