Bienvenue dans la documentation de l'API Nkap Pay. Cette API vous permet d'accepter des paiements Mobile Money (MTN, Orange Money) et par carte bancaire (Visa, Mastercard) en Afrique Centrale.
Base URL
text
https://pay.ltcgroup.site/api/v1
Devises supportées
FieldTypeDescription
XAFFranc CFA (CEMAC)Cameroun, Gabon, Congo, Tchad, RCA, Guinée Équatoriale
XOFFranc CFA (UEMOA)Sénégal, Côte d'Ivoire, Mali, Burkina Faso, etc.
EUREuroPaiements par carte bancaire uniquement
USDUS DollarPaiements par carte bancaire uniquement
Méthodes de paiement
FieldTypeDescription
MOBILE_MONEYDynamicMobile Money via TouchPay (SDK ou Direct API). Les operateurs et limites dependent du pays. Consultez GET /payments/countries.
BANK_CARDVisa, MastercardCarte bancaire via Stripe Payment Intents. Pas de limite de montant.
Flux de paiement
1. Créer un paiement via POST /api/v1/payments
2. Rediriger le client vers payment_url
3. Le client paie sur la page de checkout
4. Nkap Pay envoie un webhook à votre callback_url
5. Vérifier la signature et mettre à jour votre système
Getting started
Introduction
Bienvenue dans la documentation de l'API Nkap Pay. Cette API vous permet d'accepter des paiements Mobile Money (MTN, Orange Money) et par carte bancaire (Visa, Mastercard) en Afrique Centrale.
Base URL
text
https://pay.ltcgroup.site/api/v1
Devises supportées
FieldTypeDescription
XAFFranc CFA (CEMAC)Cameroun, Gabon, Congo, Tchad, RCA, Guinée Équatoriale
XOFFranc CFA (UEMOA)Sénégal, Côte d'Ivoire, Mali, Burkina Faso, etc.
EUREuroPaiements par carte bancaire uniquement
USDUS DollarPaiements par carte bancaire uniquement
Méthodes de paiement
FieldTypeDescription
MOBILE_MONEYDynamicMobile Money via TouchPay (SDK ou Direct API). Les operateurs et limites dependent du pays. Consultez GET /payments/countries.
BANK_CARDVisa, MastercardCarte bancaire via Stripe Payment Intents. Pas de limite de montant.
Flux de paiement
1. Créer un paiement via POST /api/v1/payments
2. Rediriger le client vers payment_url
3. Le client paie sur la page de checkout
4. Nkap Pay envoie un webhook à votre callback_url
5. Vérifier la signature et mettre à jour votre système
Getting started
Authentication
Toutes les requêtes à l'API doivent inclure vos clés API dans les headers HTTP. Vous trouverez vos clés dans le tableau de bord marchand.
Headers
FieldTypeDescription
X-API-KeyREQstringVotre clé API (ltcpay_live_... en production, ltcpay_test_... en test).
Ne partagez jamais votre X-API-Secret. Si vous pensez que votre clé a été compromise, régénérez-la immédiatement depuis le tableau de bord.
Limite de requêtes
L'API est limitée à 60 requêtes par minute par adresse IP. Les réponses incluent les headers X-RateLimit-Limit et X-RateLimit-Remaining.
Payments
Create a payment
Crée un nouveau paiement et retourne une URL de checkout vers laquelle rediriger votre client. La référence retournée est unique et stable.
POSThttps://pay.ltcgroup.site/api/v1/payments
Corps de la requête
FieldTypeDescription
amountREQdecimalMontant en unité entière. 5000 = 5 000 F CFA. Min: 100. Les limites dependent du pays et de l'operateur. Carte bancaire : pas de limite.
currencystringOptionnel. Auto-detecte depuis le pays si omis. XAF, XOF, EUR ou USD.
merchant_referencestringVotre ID de commande interne. Retourné dans les webhooks. Max 255 car.
descriptionstringAffiché au client sur la page de checkout. Max 500 car.
payment_methodstringMOBILE_MONEY ou BANK_CARD. Omettez pour laisser le client choisir.
payment_modestringSDK (défaut), DIRECT_API ou STRIPE. Auto-détecté si operator + customer_phone fournis.
countrystringCode pays ISO 3166-1 alpha-2 (ex: CM, CI). Auto-detecte depuis customer_phone si omis.
operatorstringCode operateur (ex: MTN, ORANGE, WAVE). Requis si payment_mode = DIRECT_API. Consultez GET /payments/countries pour la liste.
customer_phonestringNuméro du client (max 20 car). Requis si payment_mode = DIRECT_API.
customer_info.namestringNom du client. Max 255 car.
customer_info.emailstringEmail du client. Max 255 car.
customer_info.phonestringTéléphone du client (format E.164). Max 20 car.
callback_urlstringURL webhook spécifique à ce paiement (remplace le défaut marchand). Max 500 car.
return_urlstringURL de redirection après paiement. Max 500 car.
metadataobjectDonnées personnalisées JSON (retournées dans les webhooks).
Redirigez immédiatement le client vers payment_url. La session expire en 30 minutes par défaut.
Frais de transaction
Une commission est calculée sur chaque paiement selon votre taux configuré (défaut : 1.75%). Le porteur des frais dépend de votre configuration :
FieldTypeDescription
MERCHANTdéfautLes frais sont déduits du montant reversé au marchand. Le client paie le montant exact demandé.
CLIENToptionLes frais sont ajoutés au montant payé par le client. Le montant retourné dans la réponse inclut les frais.
Détection automatique du mode
Si vous envoyez operator et customer_phone sans spécifier payment_mode, le mode DIRECT_API est automatiquement sélectionné. Si vous envoyez payment_method: BANK_CARD, le mode STRIPE est automatiquement sélectionné.
Le paiement par carte est traité via Stripe. Le client saisit ses informations de carte sur la page de checkout sécurisée.
Payments
Get payment
Récupère les détails d'un paiement par sa référence. Utilisez cet endpoint pour vérifier le statut d'un paiement ou pour le polling en mode Direct API.
phone_digitsintegerNombre de chiffres apres l'indicatif.
phone_patternstringFormat d'affichage (ex: 6XX XX XX XX).
flag_emojistringEmoji drapeau du pays.
min_amountintegerMontant minimum par transaction.
max_amountintegerMontant maximum par transaction.
operatorsarrayListe des operateurs actifs pour ce pays.
Champs operateur
FieldTypeDescription
codestringCode operateur (ex: MTN, ORANGE, WAVE).
namestringNom complet de l'operateur.
colorstringCouleur CSS hex pour l'affichage.
logo_urlstringURL du logo (peut etre vide).
min_amountinteger|nullLimite min specifique a l'operateur (null = utilise la limite pays).
max_amountinteger|nullLimite max specifique a l'operateur (null = utilise la limite pays).
ussd_codestringCode USSD pour verifier le solde.
Utilisez cet endpoint pour construire dynamiquement l'interface de selection d'operateur dans votre application. Les operateurs et limites peuvent changer sans modification de code.
Payments
Payment modes
Nkap Pay supporte trois modes d'intégration pour s'adapter à tous les cas d'usage.
SDK (Intégration web)
Recommandé pour les sites web
Créez le paiement via l'API
Redirigez le client vers payment_url
Le client choisit MTN, Orange ou Carte sur la page de checkout
Recevez le résultat via webhook
Direct API (Intégration mobile)
Recommandé pour les apps mobiles
Aucune redirection — purement API
Envoyez country, operator et customer_phone
Le client reçoit une notification push sur son app MoMo
Pollez GET /payments/{'{reference}'} pour suivre le statut
Stripe (Carte bancaire)
Paiement par carte Visa/Mastercard
Envoyez payment_method: BANK_CARD dans la requête
Le client est redirigé vers la page de checkout avec formulaire carte sécurisé
3D Secure géré automatiquement
Recevez le résultat via webhook
Webhooks
Webhook signature
Tous les webhooks envoyés à votre callback_url sont signés avec HMAC-SHA256. Vérifiez toujours la signature avant de traiter le payload.
Headers envoyés
FieldTypeDescription
X-LtcPay-SignaturestringSignature HMAC-SHA256 du body JSON, signée avec votre Webhook Secret (visible dans le dashboard).
Les webhooks sont envoyés avec un mécanisme de retry (5 tentatives max) avec backoff exponentiel (2s, 4s, 8s, 16s, 32s). Votre endpoint doit répondre avec un code HTTP 2xx.
Webhooks
Event types
Liste des événements envoyés à votre webhook endpoint.
FieldTypeDescription
payment.status_changedwebhookEnvoyé chaque fois que le statut d'un paiement change (PENDING → COMPLETED, PENDING → FAILED, etc.).