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

# Créer une transaction payin sans redirect

> Initie un paiement mobile money directement depuis votre interface, sans redirection vers une page LigdiCash.

<Note>
  Le Wallet LigdiCash utilise des endpoints distincts (`/v02`). Voir [GET /pay/v02/debitotp](/reference/endpoints/debit-otp) et [POST /pay/v02/debitwallet/withotp](/reference/endpoints/debit-wallet-with-otp).
</Note>

## En-têtes

<ParamField header="Apikey" type="string" required>
  Clé API du projet LigdiCash.
</ParamField>

<ParamField header="Authorization" type="string" required>
  `Bearer {API_TOKEN}`
</ParamField>

<ParamField header="Accept" type="string" required>
  `application/json`
</ParamField>

<ParamField header="Content-Type" type="string" required>
  `application/json`
</ParamField>

## Corps

<ParamField body="commande" type="object" required>
  <Expandable title="commande" defaultOpen>
    <ParamField body="invoice" type="object" required>
      <Expandable title="invoice" defaultOpen>
        <ParamField body="items" type="array" required>
          Articles. Peut être `[]` — `total_amount` fait foi.

          <Expandable title="item">
            <ParamField body="name" type="string" required>Nom de l'article.</ParamField>
            <ParamField body="description" type="string">Description.</ParamField>
            <ParamField body="quantity" type="integer" required>Quantité.</ParamField>
            <ParamField body="unit_price" type="integer" required>Prix unitaire en XOF.</ParamField>
            <ParamField body="total_price" type="integer" required>`unit_price × quantity` en XOF.</ParamField>
          </Expandable>
        </ParamField>

        <ParamField body="total_amount" type="integer" required>Montant total en XOF (entier).</ParamField>
        <ParamField body="devise" type="string" required>Toujours `"XOF"`.</ParamField>
        <ParamField body="description" type="string" required>Description de la commande.</ParamField>
        <ParamField body="customer" type="string" required>Numéro mobile money du client. Format : `22670XXXXXXX` (sans `+` ni espaces).</ParamField>
        <ParamField body="customer_firstname" type="string">Prénom du client.</ParamField>
        <ParamField body="customer_lastname" type="string">Nom du client.</ParamField>
        <ParamField body="customer_email" type="string">Email du client.</ParamField>
        <ParamField body="external_id" type="string" required>Toujours `""`.</ParamField>

        <ParamField body="otp" type="string" required>
          OTP selon le mode de l'opérateur : OTP USSD → valeur ; USSD Push / Approbation / 1ère requête OTP SMS → `""` ; 2ème requête OTP SMS → OTP reçu par SMS.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="store" type="object" required>
      <Expandable title="store" defaultOpen>
        <ParamField body="name" type="string" required>Nom de la boutique.</ParamField>
        <ParamField body="website_url" type="string" required>URL du site marchand.</ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="actions" type="object" required>
      <Expandable title="actions" defaultOpen>
        <ParamField body="cancel_url" type="string" required>Toujours `""`.</ParamField>
        <ParamField body="return_url" type="string" required>Toujours `""`.</ParamField>
        <ParamField body="callback_url" type="string" required>URL de notification backend. Accessible publiquement.</ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="custom_data" type="object">Métadonnées libres retournées dans le callback. Recommandé : inclure un `transaction_id` unique.</ParamField>
  </Expandable>
</ParamField>

## Réponse

<ResponseField name="response_code" type="string">`"00"` = succès, `"01"` = erreur.</ResponseField>
<ResponseField name="token" type="string">Token de la transaction. **À stocker immédiatement** — requis pour `confirm`.</ResponseField>
<ResponseField name="response_text" type="string">Succès : `"Votre requête est en cours de traitement"`. Échec : `Echec (CodeXX)`.</ResponseField>
<ResponseField name="wiki" type="string">URL de la documentation des sous-codes.</ResponseField>

<CodeGroup>
  ```json Succès theme={null}
  {
    "response_code": "00",
    "token": "eyJ0eXAiOiJKV1Qi...",
    "response_text": "Votre requête est en cours de traitement",
    "wiki": "https://client.ligdicash.com/wiki/createInvoice"
  }
  ```

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

## Codes d'erreur

Wiki : `https://client.ligdicash.com/wiki/createInvoice` — voir [Sous-codes par endpoint](/erreurs/sous-codes#createinvoice).

## Guides associés

* [Créer une transaction](/api-paiement/payin-sans-redirect/creer-transaction) — exemples par mode OTP
* [Modes de validation](/api-paiement/payin-sans-redirect/modes-validation) — OTP USSD, OTP SMS, Approbation
