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

# Sub-codes reference by endpoint

> Complete reference of Echec (CodeXX) sub-codes returned by each LigdiCash endpoint, with their description and recommended action.

When `response_code` is `01`, the `response_text` field contains a sub-code in the form `Echec (CodeXX)`. This sub-code is specific to the endpoint you called. This page lists every possible sub-code for each endpoint.

<Tip>
  In production, you don't need to hardcode these tables. Every API response contains a `wiki` field with the URL of the sub-codes page for the endpoint you called. See [The wiki field](/en/errors/wiki-field).
</Tip>

***

## createInvoice

Endpoint: `POST /pay/v01/redirect/checkout-invoice/create` and `POST /pay/v01/straight/checkout-invoice/create`

Wiki: `https://client.ligdicash.com/wiki/createInvoice`

| Sub-code         | Description                                    | Recommended action                                                                  |
| ---------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------- |
| `Echec (Code00)` | Authentification failure                       | Check `Apikey` and `Authorization: Bearer`                                          |
| `Echec (Code01)` | Merchant Payin not activated                   | Contact LigdiCash support to enable payin                                           |
| `Echec (Code02)` | Wrong amount (must be between 9 and 2,000,000) | Fix the amount — integer between 9 and 2,000,000 CFA francs                         |
| `Echec (Code03)` | IP Denied                                      | The server's IP is not whitelisted — contact technical support to whitelist your IP |
| `Echec (Code04)` | An error occurred while processing request     | Internal LigdiCash error — retry                                                    |
| `Echec (Code05)` | An error occurred while sending request        | Error sending to the operator — retry                                               |
| `Echec (Code06)` | An error occurred while sending request        | Error sending to the operator — retry                                               |
| `Echec (Code07)` | No network access configured                   | The matching operator is not configured for this project — contact LigdiCash        |
| `Echec (Code08)` | Data Input error                               | Malformed payload — check all required fields                                       |
| `Echec (Code09)` | Api error                                      | Internal API error — contact support                                                |
| `Echec (Code10)` | No hash provided                               | Hash missing from the request — check header construction                           |
| `Echec (Code11)` | Invalid hash                                   | Invalid hash — check request signature                                              |
| `Echec (Code12)` | Invalid method                                 | Wrong HTTP method                                                                   |
| `Echec (Code13)` | Unauthorized method                            | Method not allowed for this project                                                 |
| `Echec (Code14)` | Wrong Wallet Credentials                       | Wrong wallet credentials                                                            |
| `Echec (Code15)` | Wrong OTP                                      | Wrong OTP — ask the customer to regenerate and re-enter it                          |
| `Echec (Code16)` | Expired OTP                                    | Expired OTP — create a new transaction and restart the OTP flow                     |
| `Echec (Code17)` | Wrong OTP Amount                               | OTP amount does not match the transaction amount                                    |
| `Echec (Code18)` | Wallet low balance                             | LigdiCash wallet balance is too low                                                 |

***

## confirmInvoice

Endpoint: `GET /pay/v01/redirect/checkout-invoice/confirm` and `POST /pay/v01/withdrawal/confirm`

Wiki: `https://client.ligdicash.com/wiki/confirmInvoice`

| Sub-code         | Description                                | Recommended action                                                                                                              |
| ---------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
| `Echec (Code00)` | Authentification failure                   | Check `Apikey` and `Authorization: Bearer`                                                                                      |
| `Echec (Code01)` | Merchant Payin not activated               | Contact LigdiCash support                                                                                                       |
| `Echec (Code02)` | Invoice not found                          | The token passed is invalid or belongs to a different project — use the token stored at creation, not the one from the callback |
| `Echec (Code03)` | An error occurred while processing request | Internal error — retry                                                                                                          |
| `Echec (Code04)` | Data Input error                           | Missing or malformed parameter in the confirm request                                                                           |

<Warning>
  `Echec (Code02) — Invoice not found` is the most frequent error on this endpoint. It happens when you use the `token` received in the callback payload instead of the `token` returned at transaction creation. These two tokens are different. See [Callback security](/en/payment-api/callback/security).
</Warning>

***

## createWithdrawal

Endpoint: `POST /pay/v01/withdrawal/create` (payout to LigdiCash wallet)

Wiki: `https://client.ligdicash.com/wiki/createWithdrawal`

| Sub-code          | Description                                       | Recommended action                                                             |
| ----------------- | ------------------------------------------------- | ------------------------------------------------------------------------------ |
| `Echec (Code00)`  | Authentification failure                          | Check `Apikey` and `Authorization: Bearer`                                     |
| `Echec (Code01)`  | Merchant Payout not activated                     | Contact LigdiCash support to enable payout                                     |
| `Echec (Code02)`  | Customer not registered on the platform           | The customer (phone number) does not have a LigdiCash account                  |
| `Echec (Code03)`  | No merchant account on the specified network      | No merchant account configured for this operator                               |
| `Echec (Code03a)` | Pending/Processed payout within the last 24 hours | A payout to this customer was already initiated in the last 24 hours           |
| `Echec (Code03b)` | No deposit within the last 3 months               | The customer has not made a deposit in the last 3 months                       |
| `Echec (Code04)`  | Merchant balance low                              | Merchant account balance too low — top it up                                   |
| `Echec (Code05)`  | Request amount out of range \[9;2,000,000]        | Fix the amount                                                                 |
| `Echec (Code06)`  | IP denied                                         | IP not whitelisted — contact technical support to whitelist your IP            |
| `Echec (Code07)`  | Transaction\_id already exists                    | This `transaction_id` has already been used — generate a new unique identifier |
| `Echec (Code08)`  | An error occurred while processing                | Internal error — retry                                                         |
| `Echec (Code09)`  | Data Input error                                  | Malformed payload — check all fields                                           |
| `Echec (Code10)`  | Api error                                         | Internal API error — contact support                                           |
| `Echec (Code11)`  | No hash provided                                  | Hash missing                                                                   |
| `Echec (Code12)`  | Invalid hash                                      | Invalid hash                                                                   |
| `Echec (Code13)`  | App Marah/Agrivoucher not identified              | Partner application Marah/Agrivoucher not identified                           |

<Note>
  `Echec (Code07) — Transaction_id already exists` confirms the importance of the `transaction_id` pattern: every call must carry a unique identifier, including retries. See [transaction\_id pattern](/en/concepts/transaction-id-pattern).
</Note>

***

## createStraightWithdrawal

Endpoint: `POST /pay/v01/straight/payout` (direct payout to mobile money)

Wiki: `https://client.ligdicash.com/wiki/createStraightWithdrawal`

| Sub-code         | Description                                | Recommended action                                                     |
| ---------------- | ------------------------------------------ | ---------------------------------------------------------------------- |
| `Echec (Code00)` | Token Authentification error               | Check the Bearer authorization token                                   |
| `Echec (Code01)` | Application Authentification error         | Check the project's Apikey                                             |
| `Echec (Code02)` | Request amount out of range \[9;2,000,000] | Fix the amount                                                         |
| `Echec (Code05)` | Recipient operator not identified          | The recipient's operator could not be identified from the phone number |
| `Echec (Code06)` | Merchant operator account not identified   | No merchant account found for this operator                            |
| `Echec (Code07)` | Merchant operator account not identified   | No merchant account found for this operator                            |
| `Echec (Code08)` | Merchant operator account low balance      | Merchant operator account balance too low                              |
| `Echec (Code09)` | An error occurred while processing request | Internal error — retry                                                 |
| `Echec (Code10)` | Api error                                  | Internal API error — contact support                                   |
| `Echec (Code11)` | No hash provided                           | Hash missing                                                           |
| `Echec (Code12)` | Invalid hash                               | Invalid hash                                                           |
| `Echec (Code13)` | Unauthorized currency conversion           | Currency conversion not allowed                                        |
| `Echec (Code14)` | IP denied                                  | IP not whitelisted — contact technical support to whitelist your IP    |
| `Echec (Code15)` | App Marah/Agrivoucher not identified       | Partner application Marah/Agrivoucher not identified                   |

***

## Related pages

* [The wiki field](/en/errors/wiki-field) — read sub-codes dynamically from the API response
* [Common errors](/en/errors/common-errors) — causes and solutions by error type
* [Overview](/en/errors/overview) — the two error levels
