Sandbox ouvert. Aucune inscription.
Une API REST, un appel pour demander un paiement M-Pesa, et des identifiants de test publiés sur cette page : votre premier encaissement part avant même d’avoir créé un compte.
Vos identifiants de test
Ces trois valeurs suffisent pour appeler toutes les routes de l’API. Elles visent une pile séparée de la plateforme : un simulateur y tient le rôle des canaux, aucun argent ne circule, et rien de ce que vous y faites n’atteint les données réelles.
Elles sont publiques, donc partagées par tous les visiteurs. N’y envoyez aucune donnée réelle : ni vrai numéro de téléphone, ni nom de client.
INOPAS_HOST=https://sandbox.inopas.net
INOPAS_KEY=ak_sandbox
INOPAS_SECRET=sk_sandbox_demoTrois étapes jusqu’au premier paiement
- 01Envoyer un premier encaissementUn appel depuis votre terminal, en cURL, Node ou Python, puis son suivi jusqu’au bout.
- 02Signer depuis votre codeLa chaîne à signer, une fonction prête à copier et un vecteur de test pour la vérifier.
- 03Provoquer chaque issueLes numéros qui déclenchent un refus ou un paiement non confirmé, pour tester votre code.
Un paiement n’est jamais « presque » réussi
Mobile money, réseau instable : il arrive que le canal ne réponde pas. Traiter ce cas comme un échec, c’est risquer de faire payer le client deux fois. Il a donc son propre état, UNKNOWN, que la réconciliation tranche ensuite en interrogeant le canal.
| État d’API | Dans votre espace | Ce que ça veut dire |
|---|---|---|
CREATED | En attente | Enregistré, pas encore transmis au canal. |
PENDING | En attente | Transmis : le payeur confirme sur son téléphone. |
SUCCEEDED | Payé | Confirmé par le canal. Définitif. |
FAILED | Échoué | Refusé ou abandonné. Définitif, rien n’a été débité. |
UNKNOWN | Non confirmé | Le canal n’a pas répondu : l’argent a peut-être bougé. Ni livrer, ni redemander. |
Les principes de l’API
- Deux hôtes
https://sandbox.inopas.netpour les identifiants publics ci-dessus.https://api.inopas.netpour la production, avec vos clés live.- Une version dans l’URL
- Toutes les routes sont sous
/v1. Un changement incompatible ouvrira/v2:/v1ne change pas sous vos pieds. - Aucun jeton à renouveler
- Chaque requête se signe elle-même en HMAC-SHA256. Pas d’étape de connexion, pas de jeton qui expire au milieu d’un paiement.
- Des montants entiers
amount_minorest un entier en unités mineures, jamais un nombre à virgule : CDF et USD ont deux décimales,2500000vaut 25 000,00 CDF. Aucune conversion implicite entre devises.- Des écritures rejouables
- Toute écriture porte un en-tête
Idempotency-Key. La même clé renvoie la même réponse : une relance après coupure ne débite jamais deux fois. - Des listes par curseur
limit(1 à 100) etcursoren entrée,next_cursoren sortie. Pas de page qui glisse quand des paiements arrivent.- Une trace de bout en bout
- Chaque réponse porte
X-Correlation-ID, le même dans nos journaux et dans les webhooks. Donnez-le au support : il retrouve l’appel exact. - Un débit annoncé
- Le quota se lit dans les en-têtes
RateLimit-Limit,RateLimit-RemainingetRateLimit-Resetde chaque réponse.
Les routes
Chaque champ, chaque réponse et chaque code d’erreur sont décrits dans la référence de l’API, générée depuis le code de l’API : elle ne peut pas être en retard sur lui.
Passer en production
- Ouvrez un compte, puis envoyez votre dossier depuis l’espace marchand.
- Une fois le dossier vérifié, créez vos clés live dans l’espace marchand, menu API. Le secret ne s’affiche qu’une fois.
- Remplacez l’hôte par
https://api.inopas.netet les identifiants par vos clés. Le code, lui, ne change pas. La liste de contrôle détaille le reste.