> ## 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.

# Orange Money — Côte d'Ivoire

> Intégrer Orange Money Côte d'Ivoire avec l'API LigdiCash. Mode de validation : Redirection opérateur (portail Orange Money).

## Identité

| Champ              | Valeur                                           |
| ------------------ | ------------------------------------------------ |
| Pays               | Côte d'Ivoire                                    |
| Opérateur          | Orange Money Côte d'Ivoire                       |
| `operator_id`      | `16`                                             |
| `operator_name`    | `ORANGE CI`                                      |
| Indicatif          | +225                                             |
| Format du numéro   | `225XXXXXXXXXX` (sans `+` ni espaces)            |
| Endpoint           | `POST /pay/v01/straight/checkout-invoice/create` |
| Mode de validation | Redirection opérateur                            |

## Mode de validation : Redirection opérateur

Pour Orange Money Côte d'Ivoire, l'intégration LigdiCash passe par **le portail web d'Orange Money** pour authentifier le client. Le flux est le suivant :

1. Vous appelez `/pay/v01/straight/checkout-invoice/create` avec le numéro du client.
2. LigdiCash répond avec le `token` de transaction et un champ `response_text` qui contient **l'URL du portail Orange Money** (`https://mpayment.orange-money.com/ci/...`).
3. Vous redirigez le navigateur du client vers cette URL.
4. Le client s'authentifie et confirme le paiement sur le portail Orange.
5. LigdiCash vous notifie le résultat final via votre `callback_url`.

<Warning>
  Le retour navigateur du client après le portail Orange n'est pas garanti — l'utilisateur peut fermer l'onglet, perdre le réseau, ou ne jamais revenir. **Le callback reste la seule source de vérité.** Ne validez jamais le paiement uniquement sur le retour du client.
</Warning>

<Note>
  Ce mode utilise bien l'endpoint `/straight/checkout-invoice/create` (payin sans redirection), mais le parcours utilisateur inclut une redirection externe vers le portail de l'opérateur. Ne pas confondre avec le [payin avec redirection](/api-paiement/payin-redirect/introduction), qui utilise l'endpoint `/redirect/checkout-invoice/create` et expose la page de paiement LigdiCash.
</Note>

## UX recommandée

<Steps>
  <Step title="Collecter le numéro du client">
    Votre formulaire recueille uniquement le numéro de téléphone Orange Money CI.
  </Step>

  <Step title="Soumettre la requête">
    Requête avec le numéro dans `customer` et `otp: ""`.
  </Step>

  <Step title="Récupérer l'URL du portail">
    Dans la réponse, le champ `response_text` contient l'URL du portail Orange Money (`https://mpayment.orange-money.com/ci/...`).
  </Step>

  <Step title="Rediriger le client">
    Redirigez le navigateur du client vers cette URL. Le client s'authentifie sur le portail Orange et confirme le paiement.
  </Step>

  <Step title="Attendre le callback">
    Le résultat final arrive via votre `callback_url`. Affichez un état d'attente jusqu'à réception du callback — ne vous fiez pas au retour navigateur.
  </Step>
</Steps>

## Exemple de requête

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://app.ligdicash.com/pay/v01/straight/checkout-invoice/create \
    -H "Apikey: {API_KEY}" \
    -H "Authorization: Bearer {API_TOKEN}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      "commande": {
        "invoice": {
          "items": [],
          "total_amount": 5000,
          "devise": "XOF",
          "description": "Abonnement Pro — Janvier 2025",
          "customer": "2250707000000",
          "customer_firstname": "Aya",
          "customer_lastname": "Kouassi",
          "customer_email": "aya@exemple.com",
          "external_id": "",
          "otp": ""
        },
        "store": {
          "name": "MonApp",
          "website_url": "https://monapp.com"
        },
        "actions": {
          "cancel_url": "",
          "return_url": "",
          "callback_url": "https://monapp.com/api/callback/ligdicash"
        },
        "custom_data": {
          "transaction_id": "ORD-2025-00061"
        }
      }
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://app.ligdicash.com/pay/v01/straight/checkout-invoice/create",
    {
      method: "POST",
      headers: {
        Apikey: process.env.LIGDICASH_API_KEY,
        Authorization: `Bearer ${process.env.LIGDICASH_API_TOKEN}`,
        Accept: "application/json",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        commande: {
          invoice: {
            items: [],
            total_amount: 5000,
            devise: "XOF",
            description: "Abonnement Pro — Janvier 2025",
            customer: "2250707000000",
            customer_firstname: "Aya",
            customer_lastname: "Kouassi",
            customer_email: "aya@exemple.com",
            external_id: "",
            otp: "",
          },
          store: { name: "MonApp", website_url: "https://monapp.com" },
          actions: {
            cancel_url: "",
            return_url: "",
            callback_url: "https://monapp.com/api/callback/ligdicash",
          },
          custom_data: { transaction_id: "ORD-2025-00061" },
        },
      }),
    }
  );

  const data = await response.json();
  // Redirigez le client vers le portail Orange
  window.location.href = data.response_text;
  ```

  ```php PHP theme={null}
  $payload = [
    "commande" => [
      "invoice" => [
        "items" => [],
        "total_amount" => 5000,
        "devise" => "XOF",
        "description" => "Abonnement Pro — Janvier 2025",
        "customer" => "2250707000000",
        "customer_firstname" => "Aya",
        "customer_lastname" => "Kouassi",
        "customer_email" => "aya@exemple.com",
        "external_id" => "",
        "otp" => "",
      ],
      "store" => ["name" => "MonApp", "website_url" => "https://monapp.com"],
      "actions" => [
        "cancel_url" => "",
        "return_url" => "",
        "callback_url" => "https://monapp.com/api/callback/ligdicash",
      ],
      "custom_data" => ["transaction_id" => "ORD-2025-00061"],
    ],
  ];

  $ch = curl_init("https://app.ligdicash.com/pay/v01/straight/checkout-invoice/create");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Apikey: " . $_ENV["LIGDICASH_API_KEY"],
    "Authorization: Bearer " . $_ENV["LIGDICASH_API_TOKEN"],
    "Accept: application/json",
    "Content-Type: application/json",
  ]);

  $data = json_decode(curl_exec($ch), true);
  // Redirigez le client vers le portail Orange
  header("Location: " . $data["response_text"]);
  ```
</CodeGroup>

## Réponse attendue

<CodeGroup>
  ```json Succès (create) theme={null}
  {
    "response_code": "00",
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "response_text": "https://mpayment.orange-money.com/ci/mpayment/abstract/v1nd8lrkjniiezp3gus76kvmlgztvuylkcs2y5kiir6stko13emvuabrv95oaufb",
    "description": "",
    "custom_data": {
      "transaction_id": "ORD-2025-00061",
      "logfile": "202605111744086a021568f2037"
    },
    "wiki": "https://client.ligdicash.com/wiki/createInvoice"
  }
  ```

  ```json Échec (create) theme={null}
  {
    "response_code": "01",
    "token": "",
    "response_text": "Echec (Code00)",
    "wiki": "https://client.ligdicash.com/wiki/createInvoice"
  }
  ```
</CodeGroup>

<Warning>
  Stockez le `token` immédiatement après la création. Utilisez-le pour appeler `confirm` à la réception du callback — ne vous fiez pas au token présent dans le payload du callback.
</Warning>

## Limites

| Paramètre          | Valeur |
| ------------------ | ------ |
| Montant minimum    | 10 XOF |
| Montant maximum    | --     |
| Limite quotidienne | --     |

## Pages associées

* [Modes de validation — Redirection opérateur](/api-paiement/payin-sans-redirect/modes-validation) — détail du flux
* [Créer une transaction](/api-paiement/payin-sans-redirect/creer-transaction) — référence complète de l'endpoint
* [Vérifier le statut](/api-paiement/payin-sans-redirect/verifier-statut) — appeler `confirm` après le callback
