Skip to main content
POST
/
api
/
v1
/
billing
/
pay
Payer une facture / Recharger
curl --request POST \
  --url https://api-m.dexchange.sn/api/v1/billing/pay \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "serviceCode": "SENELEC_SN_BILL",
  "reference_client": "210278816",
  "amount": 104500,
  "reference_facture": "<string>",
  "externalTransactionId": "INV-001",
  "callBackURL": "<string>",
  "customData": "<string>"
}
'
{
  "message": "Bill paid successfully",
  "transaction": {
    "success": true,
    "transactionId": "TID123456789",
    "externalTransactionId": "INV-001",
    "transactionType": "BILL",
    "amount": 104500,
    "transactionFee": 1045,
    "number": "210278816",
    "referenceFacture": "8000000680",
    "token": "1283930093209223",
    "Status": "SUCCESS",
    "previousBalance": 500000,
    "currentBalance": 394455,
    "message": "<string>"
  }
}

Payer une facture / Recharger

Règle une facture (SenEau, Senelec) ou effectue une recharge prépayée (Woyofal). Le montant est débité du solde de votre compte (montant de la facture + vos frais de service FEE).
Le débit n’a lieu qu’après acceptation par le provider. En cas d’échec, aucun débit n’est effectué (ou un remboursement automatique est appliqué pour les recharges asynchrones).

Endpoint

POST /api/v1/billing/pay

Headers

NomTypeRequisDescription
AuthorizationstringOuiBearer YOUR_API_KEY
Content-TypestringOuiapplication/json

Corps de la Requête

{
  "serviceCode": string,              // Code du biller
  "reference_client": string,         // Numéro de compteur / référence client
  "amount": number,                   // Requis pour Woyofal (montant libre)
  "reference_facture": string,        // Optionnel : facture ciblée
  "externalTransactionId": string,    // Optionnel : votre référence unique
  "callBackURL": string,              // Optionnel : URL de notification
  "customData": string                // Optionnel
}

Paramètres

ParamètreTypeRequisDescription
serviceCodestringOuiSENEAU_SN_BILL, SENELEC_SN_BILL ou WOYOFAL_SN_BILL
reference_clientstringOuiNuméro de compteur / police / référence client
amountnumberWoyofalMontant à recharger. Requis pour Woyofal ; ignoré pour SenEau/Senelec (montant imposé par la facture)
reference_facturestringNonCible une facture précise. Sinon, la 1ʳᵉ facture impayée est réglée
externalTransactionIdstringNonVotre identifiant unique (idempotence)
callBackURLstringNonURL pour les notifications webhook
customDatastringNonDonnée libre renvoyée dans le callback
Montant : pour SenEau et Senelec, le montant est imposé par la facture (le champ amount est ignoré). Pour Woyofal (recharge prépayée), le client choisit le montant via amount.

Réponse

Facture payée (SenEau / Senelec — synchrone)

{
  "message": "Bill paid successfully",
  "transaction": {
    "success": true,
    "transactionId": "TID123456789",
    "externalTransactionId": "INV-001",
    "transactionType": "BILL",
    "amount": 104500,
    "transactionFee": 1045,
    "number": "210278816",
    "referenceFacture": "8000000680",
    "Status": "SUCCESS",
    "previousBalance": 500000,
    "currentBalance": 394455
  }
}

Recharge réussie (Woyofal — token immédiat)

{
  "message": "Bill paid successfully",
  "transaction": {
    "success": true,
    "transactionId": "TID987654321",
    "transactionType": "BILL",
    "amount": 1000,
    "transactionFee": 10,
    "number": "07061270877",
    "token": "1283930093209223",
    "Status": "SUCCESS",
    "currentBalance": 498990
  }
}
token = code de recharge à saisir sur le compteur. Présent uniquement pour les recharges prépayées (Woyofal).

Recharge en cours (Woyofal — asynchrone)

Si le provider ne confirme pas immédiatement, la transaction passe en PROCESSING. Le token est livré dès résolution (consultable via le webhook / l’historique de transaction).
{
  "message": "Bill paid successfully",
  "transaction": {
    "success": true,
    "transactionId": "TID987654321",
    "transactionType": "BILL",
    "amount": 1000,
    "Status": "PROCESSING",
    "message": "Recharge en cours — token disponible sous peu"
  }
}
Pour une recharge PROCESSING qui échoue finalement, le montant débité (montant + frais) est automatiquement remboursé sur votre solde et un callback FAILED est envoyé.

Réponse d’Erreur

{
  "message": "Failed to pay bill",
  "transaction": {
    "success": false,
    "Status": "FAILED",
    "message": "Insufficient balance"
  }
}

Codes d’Erreur

Code HTTPDescription
400Paramètres invalides, solde insuffisant, facture déjà payée
401Clé API invalide
403API en maintenance
409externalTransactionId déjà utilisé

Exemples de Requête

Payer une facture Senelec

curl -X POST https://api-m.dexchange.sn/api/v1/billing/pay \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "serviceCode": "SENELEC_SN_BILL",
    "reference_client": "210278816",
    "externalTransactionId": "INV-001",
    "callBackURL": "https://your-domain.com/callback"
  }'

Recharger un compteur Woyofal

curl -X POST https://api-m.dexchange.sn/api/v1/billing/pay \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "serviceCode": "WOYOFAL_SN_BILL",
    "reference_client": "07061270877",
    "amount": 1000,
    "externalTransactionId": "RCH-001",
    "callBackURL": "https://your-domain.com/callback"
  }'

Webhook de Notification

Comme pour les transactions classiques, un webhook est envoyé à callBackURL lors du changement de statut (SUCCESS / FAILED) :
{
  "id": "TID123456789",
  "externalTransactionId": "INV-001",
  "transactionType": "BILL",
  "AMOUNT": 104500,
  "FEE": 1045,
  "PHONE_NUMBER": "210278816",
  "STATUS": "SUCCESS",
  "COMPLETED_AT": "2024-03-20T10:35:00Z",
  "PREVIOUS_BALANCE": 500000,
  "CURRENT_BALANCE": 394455
}

Authorizations

Authorization
string
header
required

Entrez votre clé API comme: Bearer <API_KEY>

Body

application/json

Détails du paiement

serviceCode
enum<string>
required

Code du biller

Available options:
SENEAU_SN_BILL,
SENELEC_SN_BILL,
WOYOFAL_SN_BILL
Example:

"SENELEC_SN_BILL"

reference_client
string
required

Numéro de compteur / police / référence client

Example:

"210278816"

amount
number

Montant à recharger. Requis pour Woyofal ; ignoré pour SenEau/Senelec (montant imposé).

Example:

104500

reference_facture
string

Optionnel : cible une facture précise. Sinon la 1re impayée est réglée.

externalTransactionId
string

Optionnel : votre référence unique (idempotence)

Example:

"INV-001"

callBackURL
string

Optionnel : URL de notification webhook

customData
string

Optionnel

Response

Paiement effectué (ou recharge en cours)

message
string
Example:

"Bill paid successfully"

transaction
object