Cet endpoint initie un paiement directement depuis votre interface. Vous fournissez le numéro de téléphone du client et, selon le mode de validation de l’opérateur, l’OTP ou un champ vide. LigdiCash retourne un token à stocker et déclenche le processus de validation côté opérateur.
POST https://app.ligdicash.com/pay/v01/straight/checkout-invoice/create
Le Wallet LigdiCash utilise des endpoints distincts (/pay/v02/debitotp et /pay/v02/debitwallet/withotp). Consultez la page dédiée au Wallet LigdiCash pour son intégration spécifique.
La clé API de votre projet LigdiCash.
Votre API TOKEN précédé de Bearer . Exemple : Bearer eyJ0eXAiOiJKV1Qi...
Doit être application/json.
Doit être application/json.
Body
Objet racine de la requête. Masquer Champs de commande
Détails de la transaction. Masquer Champs de invoice
Liste des articles. Peut être vide ([]) — dans ce cas, seul total_amount est pris en compte. Afficher Champs d'un item
Description de l’article.
Prix total de la ligne (unit_price × quantity) en XOF.
Montant total en XOF (entier, sans décimales).
Description de la commande.
Numéro de téléphone mobile money du client, sans + ni espaces. Format : 22670XXXXXXX.
Doit toujours être vide ("").
Code OTP selon le mode de validation de l’opérateur :
OTP USSD : OTP généré par le client via son menu USSD, à renseigner avant l’appel.
USSD Push , USSD guidé , OTP SMS (1ère requête) : laisser vide ("").
OTP SMS (2ème requête) : OTP reçu par SMS par le client.
Informations sur votre boutique. Nom de votre boutique ou application.
URLs de retour et de notification. Masquer Champs de actions
URL de votre endpoint backend pour les notifications de statut. Doit être accessible publiquement.
Objet libre pour vos métadonnées. LigdiCash vous le retourne dans le callback. Utilisez-le pour passer votre transaction_id.
Exemples de requête
Les exemples ci-dessous montrent deux cas selon le mode de validation. Seul le champ otp change.
cURL — OTP USSD (otp renseigné)
cURL — USSD Push OTP SMS 1ère requête (otp vide)
Node.js
PHP
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": "22670000000",
"customer_firstname": "Amadou",
"customer_lastname": "Diallo",
"customer_email": "amadou@exemple.com",
"external_id": "",
"otp": "123456"
},
"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-00042"
}
}
}'
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": "22670000000",
"customer_firstname": "Amadou",
"customer_lastname": "Diallo",
"customer_email": "amadou@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-00042"
}
}
}'
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: "22670000000" ,
customer_firstname: "Amadou" ,
customer_lastname: "Diallo" ,
customer_email: "amadou@exemple.com" ,
external_id: "" ,
otp: "" , // ou l'OTP collecté pour le mode OTP USSD
},
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-00042" },
},
}),
}
);
const data = await response . json ();
$otp = "" ; // ou l'OTP collecté pour le mode OTP USSD
$payload = [
"commande" => [
"invoice" => [
"items" => [],
"total_amount" => 5000 ,
"devise" => "XOF" ,
"description" => "Abonnement Pro — Janvier 2025" ,
"customer" => "22670000000" ,
"customer_firstname" => "Amadou" ,
"customer_lastname" => "Diallo" ,
"customer_email" => "amadou@exemple.com" ,
"external_id" => "" ,
"otp" => $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-00042" ],
],
];
$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 );
curl_close ( $ch );
Réponse
"00" si la transaction a été créée avec succès, "01" en cas d’erreur.
Identifiant de la transaction côté LigdiCash. À stocker en base immédiatement — nécessaire pour appeler l’endpoint confirm et re-vérifier le statut.
En cas de succès : "Votre requête est en cours de traitement". En cas d’échec : le sous-code d’erreur au format Echec (CodeXX).
URL vers la documentation des codes d’erreur de cet endpoint. À consulter quand response_code vaut "01".
Exemple de réponse
{
"response_code" : "00" ,
"token" : "eyJ0eXAiOiJKV1Qi..." ,
"response_text" : "Votre requête est en cours de traitement" ,
"wiki" : "https://client.ligdicash.com/wiki/createInvoice"
}
{
"response_code" : "01" ,
"token" : "" ,
"response_text" : "Echec (Code00)" ,
"wiki" : "https://client.ligdicash.com/wiki/createInvoice"
}
Stockez le token retourné dès la création. C’est lui que vous utiliserez pour appeler confirm et vérifier le statut final — ne vous fiez jamais au token présent dans le payload du callback.
Pages associées