Exemples de code — API
Clients prêts à copier-coller pour les trois opérations de l’API (ERP en ligne) — certifier, lister et récupérer une facture — en cURL, PHP, Python, JavaScript (Node.js), Java et C#. Toutes les requêtes partagent la même authentification par en-tête X-API-Key et la même base d’URL.
- Base URL :
https://api.sfec.gouv.cg(production) ·https://sandbox.api.sfec.gouv.cg(sandbox). - Authentification : en-tête
X-API-Key: <votre_clé>sur chaque requête. Voir Authentification. - Les exemples lisent la clé depuis la variable d’environnement
SFEC_API_KEY— ne codez jamais votre clé en dur.
Certifier une facture
POST /api/v1/invoices → 201 Created. Le corps est la facture au format JSON (le SFEC renvoie le numéro de certification, la signature et le QR code). Facture d’exemple cohérente utilisée dans tous les onglets :
{
"invoice_id": "INV-2026-000123",
"invoice_type": "salesInvoice",
"recipient_type": "individual",
"recipient_name": "Jean Dupont",
"is_recipient_taxable": false,
"subtotal": 10000,
"total_tax_t_amount": 1800,
"total_tax_r_amount": 0,
"total_exempt_amount": 0,
"total_tax_amount": 1800,
"discount_amount": 0,
"total_line_discount_amount": 0,
"additional_cent_tax": 0,
"electronic_stamp_duty": 0,
"total_amount": 11800,
"amount_due": 11800,
"currency": "XAF",
"payment_method": "cash",
"items": [
{
"designation": "Service de conseil",
"type": "service",
"unit_price": 10000,
"quantity": 1,
"subtotal": 10000,
"discount_amount": 0,
"discount_type": "fixed",
"net_amount": 10000,
"tax_rate": "18",
"tax_amount": 1800,
"total_amount": 11800
}
]
}cURL
curl -X POST "https://api.sfec.gouv.cg/api/v1/invoices" \
-H "X-API-Key: $SFEC_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"invoice_id": "INV-2026-000123",
"invoice_type": "salesInvoice",
"recipient_type": "individual",
"recipient_name": "Jean Dupont",
"is_recipient_taxable": false,
"subtotal": 10000, "total_tax_t_amount": 1800, "total_tax_r_amount": 0,
"total_exempt_amount": 0, "total_tax_amount": 1800, "discount_amount": 0,
"total_line_discount_amount": 0, "additional_cent_tax": 0, "electronic_stamp_duty": 0,
"total_amount": 11800, "amount_due": 11800, "currency": "XAF", "payment_method": "cash",
"items": [{
"designation": "Service de conseil", "type": "service", "unit_price": 10000,
"quantity": 1, "subtotal": 10000, "discount_amount": 0, "discount_type": "fixed",
"net_amount": 10000, "tax_rate": "18", "tax_amount": 1800, "total_amount": 11800
}]
}'Lister les factures
GET /api/v1/invoices → 200 OK. Pagination (page ≥ 1, pageSize 1–20) et filtres optionnels (invoice_type, date_start, date_end). Voir Lister les factures.
cURL
curl "https://api.sfec.gouv.cg/api/v1/invoices?page=1&pageSize=10&invoice_type=salesInvoice" \
-H "X-API-Key: $SFEC_API_KEY" \
-H "Accept: application/json"Récupérer une facture
GET /api/v1/invoices/{id} → 200 OK. {id} est l’identifiant unique (UUID) ou le invoice_number (ex. INV-2026-000123). Renvoie 404 si la facture est introuvable.
cURL
curl "https://api.sfec.gouv.cg/api/v1/invoices/INV-2026-000123" \
-H "X-API-Key: $SFEC_API_KEY" \
-H "Accept: application/json"Toutes les requêtes exigent l’en-tête X-API-Key. Une clé absente ou invalide renvoie 401 ; une pagination hors plage (pageSize > 20) renvoie 400. Voir les codes d’erreur et la FAQ.
Étape suivante → Référence OpenAPI