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

# Payout Marchand — vers mobile money

> Transférez des fonds directement vers un numéro mobile money avec POST /pay/v01/straight/payout, sans wallet LigdiCash intermédiaire.

Le Payout Marchand envoie des fonds directement vers un **numéro mobile money**, sans que le bénéficiaire ait besoin d'un compte LigdiCash. C'est la méthode à privilégier quand le destinataire n'est pas inscrit sur LigdiCash ou quand vous souhaitez payer vers n'importe quel numéro mobile money.

<Warning>
  Cette méthode n'est pas instantanée. Le délai de traitement peut aller de quelques secondes à plusieurs jours selon l'opérateur. Prévoyez un mécanisme de suivi via callback et/ou polling.
</Warning>

## Prérequis

* Le payout doit être activé sur votre projet API.
* Vos adresses IP serveur doivent être **whitelistées par LigdiCash** — les requêtes provenant d'IP non whitelistées sont rejetées. Contactez [developper@ligdicash.com](mailto:developper@ligdicash.com) pour l'activation.
* Le sous-compte de l'opérateur correspondant au numéro bénéficiaire doit être suffisamment approvisionné.

## Endpoint

```
POST https://app.ligdicash.com/pay/v01/straight/payout
```

## En-têtes requis

| En-tête         | Valeur                |
| --------------- | --------------------- |
| `Apikey`        | Votre clé API         |
| `Authorization` | `Bearer {AUTH_TOKEN}` |
| `Accept`        | `application/json`    |
| `Content-Type`  | `application/json`    |

## Corps de la requête

Tous les champs sont imbriqués dans un objet `commande`.

<ParamField body="commande" type="object" required>
  <Expandable title="Champs de commande">
    <ParamField body="amount" type="integer" required>
      Montant à transférer en XOF. Doit être un entier positif (pas de décimales).
    </ParamField>

    <ParamField body="description" type="string" required>
      Description de l'opération. Apparaît dans l'historique de la transaction.
    </ParamField>

    <ParamField body="customer" type="string" required>
      Numéro de téléphone mobile money du bénéficiaire, avec indicatif pays, sans `+` ni espaces. Exemple : `22670000000`.
    </ParamField>

    <ParamField body="callback_url" type="string" required>
      URL HTTPS de votre serveur qui recevra la notification de résultat. Doit être accessible publiquement.
    </ParamField>

    <ParamField body="custom_data" type="object">
      Données personnalisées associées à la transaction. Recommandé : incluez un `transaction_id` unique généré côté marchand pour identifier la transaction dans votre système.
    </ParamField>
  </Expandable>
</ParamField>

## Exemple de requête

<CodeGroup>
  ```bash cURL theme={null}
  curl --location 'https://app.ligdicash.com/pay/v01/straight/payout' \
  --header 'Apikey: {API_KEY}' \
  --header 'Authorization: Bearer {AUTH_TOKEN}' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
    "commande": {
      "amount": 5000,
      "description": "Remboursement commande ORD-2024-001",
      "customer": "22670000000",
      "callback_url": "https://backend.masuperboutique.com/callback-payout",
      "custom_data": {
        "transaction_id": "PAYOUT-ORD-2024-001"
      }
    }
  }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://app.ligdicash.com/pay/v01/straight/payout', {
    method: 'POST',
    headers: {
      'Apikey': process.env.LIGDICASH_API_KEY,
      'Authorization': `Bearer ${process.env.LIGDICASH_AUTH_TOKEN}`,
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      commande: {
        amount: 5000,
        description: 'Remboursement commande ORD-2024-001',
        customer: '22670000000',
        callback_url: 'https://backend.masuperboutique.com/callback-payout',
        custom_data: {
          transaction_id: 'PAYOUT-ORD-2024-001',
        },
      },
    }),
  });

  const data = await response.json();
  ```

  ```php PHP theme={null}
  $response = $client->post('https://app.ligdicash.com/pay/v01/straight/payout', [
      'headers' => [
          'Apikey'        => $_ENV['LIGDICASH_API_KEY'],
          'Authorization' => 'Bearer ' . $_ENV['LIGDICASH_AUTH_TOKEN'],
          'Accept'        => 'application/json',
          'Content-Type'  => 'application/json',
      ],
      'json' => [
          'commande' => [
              'amount'       => 5000,
              'description'  => 'Remboursement commande ORD-2024-001',
              'customer'     => '22670000000',
              'callback_url' => 'https://backend.masuperboutique.com/callback-payout',
              'custom_data'  => [
                  'transaction_id' => 'PAYOUT-ORD-2024-001',
              ],
          ],
      ],
  ]);
  ```
</CodeGroup>

## Réponse

<ResponseField name="response_code" type="string">
  Code de résultat de la requête. `"00"` indique que le payout a été initié avec succès. Toute autre valeur indique une erreur.
</ResponseField>

<ResponseField name="token" type="string">
  Token JWT identifiant le payout. À stocker immédiatement — il est requis pour [vérifier le statut](/api-paiement/payout/verifier-statut) si votre callback ne se déclenche pas.
</ResponseField>

<ResponseField name="response_text" type="string">
  Message textuel associé au code de réponse. Peut être vide.
</ResponseField>

<ResponseField name="description" type="string">
  Description complémentaire. Peut être vide.
</ResponseField>

<ResponseField name="custom_data" type="string">
  Toujours `""` pour le Payout Marchand.
</ResponseField>

<ResponseField name="wiki" type="string">
  URL vers la liste des codes d'erreur spécifiques à cet endpoint. À consulter lorsque `response_code !== "00"`.
</ResponseField>

```json Succès theme={null}
{
  "response_code": "00",
  "token": "{PAYOUT_TOKEN}",
  "response_text": "",
  "description": "",
  "custom_data": "",
  "wiki": "https://client.ligdicash.com/wiki/createStraightWithdrawal"
}
```

<Warning>
  Un `response_code: "00"` signifie que le payout a été **initié**, pas finalisé. Le résultat définitif vous parvient via le callback — qui peut arriver avec un délai significatif selon l'opérateur. Stockez le `token` pour pouvoir [vérifier le statut](/api-paiement/payout/verifier-statut) en cas de non-réception.
</Warning>

## Différences avec le Payout Client

|                           | Payout Marchand            | Payout Client                |
| ------------------------- | -------------------------- | ---------------------------- |
| Endpoint                  | `/pay/v01/straight/payout` | `/pay/v01/withdrawal/create` |
| Compte LigdiCash requis   | Non                        | Oui                          |
| Instantané                | Non                        | Oui (crédit wallet)          |
| Paramètre `top_up_wallet` | Absent                     | Requis                       |

## Pages associées

* [Payout Client](/api-paiement/payout/vers-wallet-ligdicash) — envoi vers wallet LigdiCash avec option de virement automatique
* [Vérifier le statut d'un payout](/api-paiement/payout/verifier-statut)
* [Le compte marchand LigdiCash](/concepts/compte-marchand) — comprendre les sous-comptes et les soldes par opérateur
