Documentation API SBEE Postpayé (Factures Électricité)
Spécifications d'intégration et consoles interactives pour la consultation et le paiement de factures d'électricité postpayées SBEE.
Présentation
L'API SBEE Postpayé permet aux partenaires B-MO de consulter les factures d'électricité impayées d'un abonné SBEE (Société Béninoise d'Énergie Électrique), d'évaluer les frais de transaction applicables et d'effectuer le paiement global des factures sélectionnées.
URL de Base (selon l'environnement sélectionné) :
- PAP (Pré-production / Défaut) :
https://svc.pap.bestcash.me/external- TEST (Sandbox) :
https://svc.test.bestcash.me/external- LIVE (Production) :
https://svc.bmo.bestcash.me/externalVous pouvez basculer d'un environnement à un autre à tout moment depuis le menu déroulant en haut des consoles d'essai
<ApiPlayground />ci-dessous.
Authentification
Chaque requête vers l'API SBEE Postpayé doit obligatoirement inclure les en-têtes HTTP suivants :
X-Auth-ApiKey: Votre clé d'API partenaire (ex:+2290196666262)X-Auth-ApiSecret: Votre secret d'API partenaire (ex:y7MwWuWeQORtpA==)Content-Type:application/jsonAccept:application/json
En cas d'identifiants incorrects ou manquants, l'API retourne un code HTTP 401 Unauthorized.
1. Récupérer les factures impayées (GET /external/thirdparty/sbee/postpaid/invoices)
Permet d'interroger le système SBEE avec la référence de l'abonné afin d'obtenir la liste complète de ses factures d'électricité non réglées.
- Méthode :
GET - URL :
/external/thirdparty/sbee/postpaid/invoices - Paramètres de requête (Query params) :
customerReference(obligatoire) : Référence ou numéro de contrat de l'abonné SBEE (ex:"MFEYNJB7COYW").
Tester la recherche de factures impayées SBEE Postpayé
Consultez la liste des factures impayées d'un abonné et récupérez les références uniques et montants associés.
Description des paramètres de réponse
| Champ | Type | Description |
|---|---|---|
referenceAbonne | string | Référence de l'abonné SBEE (ex: "MFEYNJB7COYW"). |
name | string | Nom et prénom de l'abonné (ex: "John Doe"). |
invoices | array | Tableau d'objets représentants les factures impayées. |
invoices[].amount | string | Montant de la facture en XOF (ex: "7900"). |
invoices[].month | string | Mois d'émission de la facture (ex: "04"). |
invoices[].year | string | Année d'émission de la facture (ex: "2026"). |
invoices[].reference | string | Référence unique de la facture à retransmettre lors du paiement (ex: "O1JR5RUVFV0QF"). |
Exemple de réponse HTTP 200 (Factures impayées trouvées)
{
"referenceAbonne": "MFEYNJB7COYW",
"name": "John Doe",
"invoices": [
{
"amount": "7900",
"month": "04",
"year": "2026",
"reference": "O1JR5RUVFV0QF"
},
{
"amount": "4300",
"month": "06",
"year": "2026",
"reference": "GU0UJDS3XZVRU6"
}
]
}
2. Calculer le coût de l'opération (GET /external/thirdparty/sbee/postpaid/operation-cost)
Permet d'estimer les frais d'opération associés au montant de règlement des factures.
- Méthode :
GET - URL :
/external/thirdparty/sbee/postpaid/operation-cost - Paramètres de requête (Query params) :
amount(obligatoire) : Montant total du paiement en XOF (ex:10000).
Tester le calcul des frais d'opération SBEE Postpayé
Calculez les frais applicables et obtenez les informations sur la zone monétaire UEMOA.
Exemple de réponse HTTP 200
{
"cost": 1000.0,
"targetMonetaryArea": {
"reference": "MONAXOF001",
"name": "UEMOA",
"currencyLongName": "Franc CFA",
"currencyShortName": "F CFA",
"currencyRate": null,
"currencyCode": "XOF"
}
}
3. Effectuer le paiement des factures (POST /external/thirdparty/sbee/postpaid/operation)
Valide le paiement global des factures d'électricité sélectionnées.
Règles importantes d'utilisation :
- Le paramètre
amountdoit correspondre exactement à la somme des montants des factures soumises dans le tableauinvoices(ex:7900 + 4300 = 12200 XOF).- Le paiement partiel d'une facture individuelle n'est pas autorisé par la SBEE.
- Méthode :
POST - URL :
/external/thirdparty/sbee/postpaid/operation
Tester le paiement de factures SBEE Postpayé
Exécutez le paiement simultané de plusieurs factures impayées SBEE.
Aucun paramètre d'URL configuré.
Structure du corps de la requête (JSON)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
amount | number | Oui | Montant total cumulé des factures à régler (ex: 12200) |
customerReference | string | Oui | Référence de l'abonné SBEE (ex: "MFEYNJB7COYW") |
externalReference | string | Oui | Référence unique générée par votre application (ex: "SBEE-POSTPAY-REF-01") |
invoices | array | Oui | Liste des objets contenant les références des factures à régler |
invoices[].reference | string | Oui | Référence individuelle de chaque facture issue du check (ex: "O1JR5RUVFV0QF") |
Exemple de réponse HTTP 200 (Paiement Confirmé)
{
"status": "CONFIRMED",
"operationCost": 1000.0,
"amount": 12200.0,
"operationType": "BILL_PAYMENT-ELECTRICITY_POSTPAID",
"reference": "SBEEPOST20260729120000",
"creationDate": "2026-07-29T12:00:00+00:00",
"customerReference": "MFEYNJB7COYW",
"externalReference": "SBEE-POSTPAY-REF-01",
"customerName": "John Doe",
"invoices": [
{
"reference": "O1JR5RUVFV0QF",
"amount": 7900
},
{
"reference": "GU0UJDS3XZVRU6",
"amount": 4300
}
]
}
4. Suivi et vérification du statut (GET /external/thirdparty/operation)
Recherchez le statut d'une transaction SBEE Postpayé à l'aide de votre référence unique partenaire (externalReference) ou de la référence B-MO (reference).
- Méthode :
GET - URL :
/external/thirdparty/operation - Paramètres de requête (Query params) :
externalReference(optionnel) : Référence unique transmise lors du paiement (ex:"SBEE-POSTPAY-REF-01").reference(optionnel) : Référence unique système B-MO.
Tester la vérification de statut SBEE Postpayé
Vérifiez l'état d'un règlement de factures SBEE.
5. Exemples de Code d'Intégration
Node.js (Axios)
const axios = require('axios');
const client = axios.create({
baseURL: 'https://svc.pap.bestcash.me/external',
headers: {
'X-Auth-ApiKey': '+2290196666262',
'X-Auth-ApiSecret': 'y7MwWuWeQORtpA==',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
async function paySbeePostpaidInvoices() {
try {
const customerRef = 'MFEYNJB7COYW';
// 1. Récupération des factures impayées
console.log('1. Consultation des factures impayées SBEE...');
const invRes = await client.get(`/thirdparty/sbee/postpaid/invoices?customerReference=${customerRef}`);
const invoicesData = invRes.data;
console.log(`Abonné: ${invoicesData.name}, Factures trouvées: ${invoicesData.invoices.length}`);
// Calcul du montant total cumulé
const totalAmount = invoicesData.invoices.reduce((sum, inv) => sum + parseFloat(inv.amount), 0);
const invoiceRefs = invoicesData.invoices.map(inv => ({ reference: inv.reference }));
// 2. Exécution du paiement
console.log(`2. Paiement des factures (Montant total: ${totalAmount} XOF)...`);
const extRef = `SBEE-POST-${Date.now()}`;
const payRes = await client.post('/thirdparty/sbee/postpaid/operation', {
amount: totalAmount,
customerReference: customerRef,
externalReference: extRef,
invoices: invoiceRefs
});
console.log('Statut du paiement:', payRes.data.status);
console.log('Référence B-MO:', payRes.data.reference);
} catch (error) {
console.error('Erreur lors du règlement SBEE Postpayé:', error.response?.data || error.message);
}
}
paySbeePostpaidInvoices();
Python (Requests)
import requests
import time
BASE_URL = "https://svc.pap.bestcash.me/external"
HEADERS = {
"X-Auth-ApiKey": "+2290196666262",
"X-Auth-ApiSecret": "y7MwWuWeQORtpA==",
"Content-Type": "application/json",
"Accept": "application/json"
}
customer_ref = "MFEYNJB7COYW"
# 1. Obtenir les factures impayées
inv_resp = requests.get(
f"{BASE_URL}/thirdparty/sbee/postpaid/invoices",
params={"customerReference": customer_ref},
headers=HEADERS
)
inv_data = inv_resp.json()
print(f"Abonné: {inv_data.get('name')}")
invoices = inv_data.get("invoices", [])
total_amount = sum(float(inv["amount"]) for inv in invoices)
invoice_payload = [{"reference": inv["reference"]} for inv in invoices]
# 2. Exécuter le paiement
ext_ref = f"SBEE-POST-{int(time.time())}"
op_payload = {
"amount": total_amount,
"customerReference": customer_ref,
"externalReference": ext_ref,
"invoices": invoice_payload
}
op_resp = requests.post(
f"{BASE_URL}/thirdparty/sbee/postpaid/operation",
json=op_payload,
headers=HEADERS
)
print("Statut:", op_resp.json().get("status"))
print("Référence:", op_resp.json().get("reference"))
cURL
# 1. Obtenir la liste des factures impayées
curl -X GET "https://svc.pap.bestcash.me/external/thirdparty/sbee/postpaid/invoices?customerReference=MFEYNJB7COYW" \
-H "X-Auth-ApiKey: +2290196666262" \
-H "X-Auth-ApiSecret: y7MwWuWeQORtpA==" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
# 2. Calculer les frais d'opération
curl -X GET "https://svc.pap.bestcash.me/external/thirdparty/sbee/postpaid/operation-cost?amount=10000" \
-H "X-Auth-ApiKey: +2290196666262" \
-H "X-Auth-ApiSecret: y7MwWuWeQORtpA==" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
# 3. Effectuer le paiement global des factures
curl -X POST "https://svc.pap.bestcash.me/external/thirdparty/sbee/postpaid/operation" \
-H "X-Auth-ApiKey: +2290196666262" \
-H "X-Auth-ApiSecret: y7MwWuWeQORtpA==" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"amount": 12200,
"customerReference": "MFEYNJB7COYW",
"externalReference": "SBEE-POSTPAY-REF-01",
"invoices": [
{ "reference": "O1JR5RUVFV0QF" },
{ "reference": "GU0UJDS3XZVRU6" }
]
}'
6. Codes et Messages d'Erreur
| Message d'erreur | Description | Action recommandée |
|---|---|---|
AMOUNT TOO LOW | Le montant du paiement est inférieur au total exact des factures soumises. | Vérifier et transmettre le montant exact réclamé. |
INSUFFICIENT AMOUNT | Le solde disponible sur le compte marchand partenaire est insuffisant. | Approvisionner le compte marchand avant d'exécuter la requête. |
INVOICE NOT FOUND | La référence de facture spécifiée n'existe pas ou est déjà réglée. | Réexécuter la recherche de factures impayées pour obtenir la liste à jour. |
401 Unauthorized | Les en-têtes X-Auth-ApiKey ou X-Auth-ApiSecret sont incorrects. | Contrôler vos identifiants d'API partenaire. |