> ## 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  |
| A0025      | Period number must be greater than one                                                    | 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  |
| A0028      | The subscription is still in progress or has failed, so the management URL is unavailable | 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  |
| A0033      | Multiple payment methods detected; the merchant must specify the payment method country   | 400  |
| A0034      | The order expiry time provided by the merchant has expired                                | 400  |
| A0035      | The current order does not support capture                                                | 400  |
| A0036      | The current order status does not allow capture                                           | 400  |
| A0037      | The user payment token is invalid or has expired                                          | 400  |
| A0039      | The order has already been refunded by the chargeback alert service                       | 400  |
| A0040      | The order cannot be created concurrently                                                  | 400  |
| A0041      | Chargeback does not exist                                                                 | 400  |
| A0042      | Chargeback status is already final                                                        | 400  |
| A0043      | The current status does not allow evidence submission                                     | 400  |
| A0044      | File does not exist                                                                       | 400  |
| A0045      | The MIT transaction cannot be processed because the tokenId status is unverified          | 400  |
| A0046      | Access denied: the request IP is not in the whitelist                                     | 401  |

### 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  |
| B0008      | Auth code is invalid                                            | 400  |
| B0009      | Auth code has expired                                           | 400  |
| B0010      | Auth code has been used                                         | 400  |
| B0011      | Access token is invalid                                         | 400  |
| B0012      | Access token has expired                                        | 400  |
| B0013      | Access token does not exist                                     | 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  |
| D0002      | Risk transaction limit | 406  |

### E - Unknown errors

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