Authentification
L’authentification varie selon le type d’intégration choisi. Cette page détaille les procédures pour chaque mode d’accès.
Prérequis : Disposer d’une clé API ou d’un token d’authentification + NIU (voir Prérequis)
1. Authentification API (ERP en ligne)
Pour les intégrations ERP, l’authentification se fait via une clé API dans l’en-tête HTTP.
Format :
X-API-Key: {votre_clé_api}Exemple d’utilisation :
POST /api/invoices/certify
X-API-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json
Accept: application/json2. Authentification TCC/TFC (Module de contrĂ´le & Terminal fiscal)
Le processus d’authentification est identique pour les modules TCC et TFC.
Étape 1 : Récupération des certificats
Endpoint : POST /api/certificates/claim-with-token
RequĂŞte
POST https://dev-pgsfec.akieni.tech/api/certificates/claim-with-token
Content-Type: application/json
Accept: application/jsonParamètres de requête
| Paramètre | Type | Description | Obligatoire |
|---|---|---|---|
token | string | Token d’authentification fourni via le portail e-Facture | ✅ |
niu | string | Numéro d’Identification Unique du contribuable | ✅ |
Exemple de payload
{
"token": "3710a397",
"niu": "P000001212112130"
}Réponse
La réponse contient tous les éléments nécessaires pour l’authentification mTLS :
| Paramètre | Type | Description |
|---|---|---|
signingPrivateKey | string | Clé privée pour la signature numérique des factures (format PEM) |
encryptionMasterKey | string | Clé maître de chiffrement pour sécuriser les données locales (hexadécimal) |
mtlsClientCertificate | string | Certificat client pour l’authentification mTLS (format PEM) |
mtlsClientPrivateKey | string | Clé privée du certificat client mTLS (format PEM) |
taxpayerInfo | object | Informations détaillées du contribuable |
mtlsEndpoints | object | URLs des endpoints sécurisés mTLS |
Exemple de réponse
{
"signingPrivateKey": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...",
"encryptionMasterKey": "a1b2c3d4e5f6789012345678901234567890abcdef",
"mtlsClientCertificate": "-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJAKoK...",
"mtlsClientPrivateKey": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC...",
"taxpayerInfo": {
"id": "5a68e8a5-2183-44ab-8453-ba39dbeeaa63",
"business_name": null,
"trade_name": "akieni",
"sciet": null,
"scie_number": null,
"niu": "P000001212112130",
"phone": "0612345677",
"email": "kratos@akieni.com",
"rccm": "CG-BZV-1601",
"legal_representative": "SARL",
"currency": "CFA",
"tax_residency_id": 3,
"social_capital": "200000",
"street_address": "Etienne Rue",
"city": "Brazzaville",
"department": "Brazzaville",
"country": "Congo",
"issuedAt": 1754487058075
},
"mtlsEndpoints": {
"baseUrl": "https://dev-pgsfec.akieni.tech/api",
"invoiceSubmission": "/invoices/report/tcc",
"auditReporting": "/audit/report",
"verification": "/verify-invoice?sign="
}
}Informations contribuable (taxpayerInfo)
| Champ | Type | Description |
|---|---|---|
id | string | Identifiant unique interne |
trade_name | string | Nom commercial |
niu | string | Numéro d’Identification Unique |
rccm | string | Numéro du Registre du Commerce |
currency | string | Devise utilisée |
issuedAt | timestamp | Date d’émission des certificats (Unix timestamp) |
Endpoints mTLS (mtlsEndpoints)
| Champ | Type | Description |
|---|---|---|
baseUrl | string | URL de base de l’API |
invoiceSubmission | string | Endpoint pour la soumission des factures TCC/TFC |
auditReporting | string | Endpoint pour les rapports d’audit |
verification | string | Endpoint pour la vérification des factures |
Étape 2 : Configuration mTLS
Une fois les certificats obtenus, configurez votre client HTTP pour utiliser l’authentification mutuelle TLS :
- Certificat client : Utilisez
mtlsClientCertificateetmtlsClientPrivateKey - Validation serveur : Vérifiez le certificat du serveur SFEC
- Endpoints sécurisés : Utilisez uniquement les URLs fournies dans
mtlsEndpoints
Les certificats mTLS sont sensibles et doivent être stockés de manière sécurisée. Ne jamais les exposer dans les logs ou les transmettre via des canaux non sécurisés.