Référence de l'API paiements
Endpoints, champs, statuts et codes d'erreur des pages de paiement et des demandes de paiement.
Pour les développeurs qui n'utilisent pas de SDK, ou qui veulent tout savoir. Les SDK Node.js, Java et PHP font ces appels pour vous.
Authentification#
Chaque appel s'authentifie avec les identifiants de votre application, en HTTP Basic :
curl https://pismile.com/api/v1/sessions-paiement/cs_… -u "VOTRE_CLIENT_ID:VOTRE_SECRET"Appels serveur à serveur uniquement. Format : JSON en UTF-8. Montants : entiers en F CFA (XOF). Dates : ISO 8601 en UTC.
Pages de paiement#
Créer — POST /api/v1/sessions-paiement#
curl -X POST https://pismile.com/api/v1/sessions-paiement \
-u "VOTRE_CLIENT_ID:VOTRE_SECRET" \
-H "Content-Type: application/json" \
-d '{"montant": 25000, "reference": "cmd-42", "motif": "Commande 42",
"retour": "https://votre-site.com/commandes/42/merci"}'Champ | Obligatoire | Description |
|---|---|---|
| oui | Entier, en F CFA |
| oui | Votre identifiant unique, 1 à 64 caractères : lettres, chiffres, |
| oui | Adresse HTTPS sur un domaine vérifié (en test : |
| non | Adresse si le payeur abandonne (défaut : |
| non | 100 caractères au plus, sans émoji. Affiché : « Nom de l'application - motif » |
Réponse 201 (ou 200 si la référence existait déjà : même page, même montant) :
{
"id": "cs_Hq2…",
"url": "https://pismile.com/payer/cs_Hq2…",
"reference": "cmd-42",
"montant": 25000,
"devise": "XOF",
"motif": "Ma Boutique - Commande 42",
"statut": "OUVERTE",
"montantPaye": 0,
"creeLe": "2026-10-25T10:38:51Z",
"expireLe": "2026-10-25T11:08:51Z",
"test": false
}Lire — GET /api/v1/sessions-paiement/{id} ou ?reference=cmd-42#
Statuts d'une page#
Statut | Signification |
|---|---|
| En attente du payeur (ou de la validation de ses demandes) |
| Entièrement payée ( |
| 30 minutes sans paiement complet ; voir |
| Le payeur a annulé avant tout paiement |
Demandes de paiement#
Créer — POST /api/v1/paiements#
Champ | Obligatoire | Description |
|---|---|---|
| oui | Identifiant de l'utilisateur reçu à la connexion (scope |
| oui | Entier, en F CFA |
| oui | Votre identifiant unique |
| non | 100 caractères au plus |
Réponse 201 : id, reference, sub, montant, devise, motif, statut (EN_ATTENTE, PAYE, REFUSE, ANNULE, EXPIRE, ECHEC), compte (masqué), creeLe, expireLe, payeLe, raison, test.
Lire — GET /api/v1/paiements/{id} ou ?reference=…#
Erreurs#
Toujours le même format, avec un code stable à tester dans votre code :
{ "erreur": "retour_domaine_non_verifie", "message": "retour : « autre.com » n'est pas un domaine vérifié de votre organisation (console → Domaines)." }HTTP | Code | Signification |
|---|---|---|
400 |
| Requête incorrecte |
400 |
| Adresse de retour hors de vos domaines vérifiés |
401 |
|
|
403 |
| Compte pas encore prêt (voir la console) |
403 |
| (demandes) L'utilisateur n'a pas accordé |
404 |
| Identifiant inconnu |
409 |
| Référence déjà prise avec un autre montant (ou un autre utilisateur) |
409 |
| Voir le message |
429 |
| Limites des demandes de paiement |
502 |
| Votre participant PI-SPI a refusé : réessayez, puis testez votre accès dans la console |
Cette page vous a-t-elle aidé ?
Merci, votre avis nous aide à améliorer la documentation.