EretuPay Docs
API v1 · dépréciée

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 (/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).

Correspondance v1 → v2

v1v2 é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"
}
ChampTypeObligatoireDescription
phonestringoui8 chiffres (préfixe 228 optionnel)
amountnumberouiMontant en XOF
command_idstringouiRéférence marchande unique
descriptionstringnonLibellé / 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)

codeHTTPCas
1401Canal cash-in en maintenance
2001401Compte réseau non activé
3001400Compte TMoney / Flooz introuvable
4001400Paramètres manquants / numéro invalide
5001200Opé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
}
statutRequeteSignification
WAITINGEn attente validation client / opérateur
SUCCESPaiement confirmé (solde crédité côté EretuPay)
ECHECÉchec
EXPIRE / ANNULEExpiré 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": "…"
}
codeCas cash-out
2002IP non autorisée
6001Solde insuffisant
7001Montant incorrect
5001Opérateur indisponible

Migration vers v2

  1. Remplacez les URLs par réseau par les endpoints unifiés /api/v2/*.
  2. Ajoutez le champ network (tmoney ou flooz).
  3. Alignez votre parsing sur le format v2 (request_id, status, code: 2000) — voir Paiements v2.
  4. Conservez le même callbackUrl : le payload callback ne change pas.
  5. Testez en staging avant le 31-01-2027.