API v1 Deprecated
Endpoints historiques par réseau (/api/v1/tmoney/*, /api/v1/flooz/*).
Conservés pour compatibilité des intégrations existantes (ex. Eleyca).
Dépréciation
L’API v1 est dépréciée. Elle sera désactivée le 31 janvier 2027 (). Migrez vers API v2 (
L’API v1 est dépréciée. Elle sera désactivée le 31 janvier 2027 (). Migrez vers API v2 (
/api/v2/payment/*, /api/v2/cashout/*) dès que possible.
Les callbacks marchands restent inchangés.
Authentification
Header Authorization: Bearer <jwt> sur toutes les routes ci-dessous
(rôle ROLE_CUSTOMER).
- Recommandé : obtenir le JWT via
POST /api/v2/auth/token(api_key+api_secret) — voir Authentification. - Hérité :
POST /api/login_checkavec email / mot de passe marchand (déprécié pour les nouvelles intégrations).
Correspondance v1 → v2
| v1 | v2 équivalent |
|---|---|
POST /api/v1/{tmoney|flooz}/payment/make |
POST /api/v2/payment/make + champ network |
POST /api/v1/{tmoney|flooz}/payment/status |
POST /api/v2/payment/status + network |
POST /api/v1/{tmoney|flooz}/cashout/make |
POST /api/v2/cashout/make + network |
Cash-in — initier un paiement
TMoney
POST
/api/v1/tmoney/payment/make
{
"phone": "90123456",
"amount": 205,
"command_id": "3c864338-99d9-4ec6-a7d5-be59875de88f",
"description": "Commande Eleyca"
}
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
phone | string | oui | 8 chiffres (préfixe 228 optionnel) |
amount | number | oui | Montant en XOF |
command_id | string | oui | Référence marchande unique |
description | string | non | Libellé / motif |
Succès (push USSD démarré) — corps proche de la réponse opérateur :
{
"idRequete": "2ed941df-e7aa-47c5-b30d-b6cbdbbb4a2a",
"statutRequete": "WAITING",
"code": 2000,
"message": "…"
}
Critère d’acceptation côté client : présence de idRequete.
Le statut WAITING signifie « en attente de validation client » —
ce n’est pas un paiement finalisé.
Flooz
POST
/api/v1/flooz/payment/make
{
"phone": "90123456",
"amount": 2500,
"command_id": "INV-2026-0042",
"description": "Facture"
}
Succès :
{
"code": 2000,
"tx_reference": "TX-123",
"idRequete": "TX-123",
"statutRequete": "WAITING",
"message": null
}
Erreurs d’initiation (cash-in)
| code | HTTP | Cas |
|---|---|---|
1 | 401 | Canal cash-in en maintenance |
2001 | 401 | Compte réseau non activé |
3001 | 400 | Compte TMoney / Flooz introuvable |
4001 | 400 | Paramètres manquants / numéro invalide |
5001 | 200 | Opérateur indisponible / pas d’idRequete |
Cash-in — statut
TMoney
POST
/api/v1/tmoney/payment/status
{
"request_id": "2ed941df-e7aa-47c5-b30d-b6cbdbbb4a2a"
}
Réponse typique :
{
"code": 2000,
"refTmoney": "…",
"idRequete": "2ed941df-…",
"statutRequete": "SUCCES",
"montant": 205
}
Flooz
POST
/api/v1/flooz/payment/status
{
"request_id": "TX-123"
}
Alias acceptés : tx_reference, ou command_id / identifier
pour une recherche par référence marchande.
{
"code": 2000,
"refFlooz": "…",
"tx_reference": "TX-123",
"idRequete": "TX-123",
"statutRequete": "SUCCES",
"montant": 2500,
"payment_method": "FLOOZ",
"message": null
}
| statutRequete | Signification |
|---|---|
WAITING | En attente validation client / opérateur |
SUCCES | Paiement confirmé (solde crédité côté EretuPay) |
ECHEC | Échec |
EXPIRE / ANNULE | Expiré ou annulé |
Préférez le callback marchand
pour le résultat final, et utilisez
payment/status en secours / réconciliation.
Cash-out
Même contraintes que la v2 : canal cash-out activé, compte activé,
IP dans trustedIps.
TMoney
POST
/api/v1/tmoney/cashout/make
{
"phone": "90123456",
"amount": 5000,
"command_id": "PAYOUT-88",
"description": "Remboursement"
}
Succès :
{
"code": 2000,
"phone": "90123456",
"amount": 5000,
"id_requete": "…",
"ref_command": "PAYOUT-88",
"status": "SUCCES",
"ref_tmoney": "…"
}
Flooz
POST
/api/v1/flooz/cashout/make
{
"code": 2000,
"phone": "90123456",
"amount": 5000,
"id_requete": "…",
"tx_reference": "…",
"ref_command": "PAYOUT-88",
"status": "SUCCES",
"ref_flooz": "…"
}
| code | Cas cash-out |
|---|---|
2002 | IP non autorisée |
6001 | Solde insuffisant |
7001 | Montant incorrect |
5001 | Opérateur indisponible |
Migration vers v2
- Remplacez les URLs par réseau par les endpoints unifiés
/api/v2/*. - Ajoutez le champ
network(tmoneyouflooz). - Alignez votre parsing sur le format v2
(
request_id,status,code: 2000) — voir Paiements v2. - Conservez le même
callbackUrl: le payload callback ne change pas. - Testez en staging avant le 31-01-2027.