Créer votre premier paiement
Une seule requête POST /payments : Passerelle choisit le partenaire de paiement le plus adapté, gère la bascule en cas d'échec, et vous renvoie un lien à transmettre à votre client.
curl -X POST https://api.passerelle.abecedaire.tg/payments \
-H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d '{
"amount": 1000,
"customerName": "Jane Doe",
"customerPhone": "+22890123456",
"returnUrl": "https://votre-site.example/retour"
}'
{
"reference": "pay_0d9ace5b-62eb-4a5b-8869-b66c9b62eb6c",
"status": "pending",
"redirectUrl": "https://exemple-de-paiement.example/page?token=..."
}
Redirigez votre client vers redirectUrl pour qu'il complète le paiement — ce lien pointe vers une page Passerelle (pas directement vers le partenaire de paiement), qui affiche ensuite un statut de paiement à vos couleurs (réussi/échoué/expiré) une fois la transaction résolue, pratique à renvoyer à votre client comme preuve de paiement.
:::info Compte en sandbox Un compte tout juste créé est en mode sandbox — ce paiement d'exemple ne débite personne. Voir Mode sandbox pour résoudre la transaction (réussi/échoué/expiré) sans attendre un vrai paiement. :::
Le pays est déduit du numéro de téléphone
Si vous ne fournissez pas country explicitement, Passerelle le déduit de customerPhone — qui doit donc inclure l'indicatif international (+228..., +229..., etc.). Deux cas d'erreur explicites en 400 :
- Numéro non reconnu :
customerPhonene permet pas de déduire un pays sans ambiguïté (indicatif manquant ou numéro trop court) — le message indique le format attendu. - Pays hors périmètre : le numéro est valide mais correspond à un pays hors zone UEMOA/FCFA couverte par Passerelle — fournissez
countryexplicitement si le numéro est correct.
Fournir country directement dans la requête évite ces deux cas et prime toujours sur la déduction.
Champs optionnels
| Champ | Valeurs | Effet |
|---|---|---|
country | TG, BJ, CI, SN, BF, GW, ML, NE | Sinon, déduit de customerPhone (voir ci-dessus) |
paymentMethod | CARD, MOBILE_MONEY | Sinon, tous les moyens acceptés par votre compte sont considérés — stocké et renvoyé comme null (statut, webhook) tant qu'aucun moyen réel n'a été déterminé |
currency | XOF | Seule devise supportée aujourd'hui |
description | texte libre | Affiché à votre client sur la page de paiement et la page de statut (ex. "Abonnement annuel") |
webhookUrl | URL | Notification de statut pour cette transaction — voir Configurer vos webhooks |
metadata | objet libre | Renvoyé tel quel dans le détail de la transaction |
sandbox | true | Force cette transaction en sandbox même si votre compte est en production — voir Mode sandbox |
503 si aucun partenaire éligible n'a réussi (tous indisponibles ou mal configurés pour votre compte).
Et ensuite ?
- Mode sandbox
- Vérifier le statut d'un paiement
- Paiement direct par prompt USSD — sans lien de redirection
- Configurer vos webhooks — être notifié sans faire de polling