Notifications de statut
À chaque changement de statut d’une facture, la passerelle prévient votre logiciel par une requête HTTPS. C’est ainsi que Dolibarr et WHMCS affichent le statut à jour sans rien interroger.
Déclarer votre adresse
Communiquez à ODOIP l’adresse HTTPS qui recevra les notifications de votre logiciel. Nous la déclarons dans votre espace et vous remettons un secret de notification, affiché une seule fois.
Ce que vous recevez
Une requête POST vers votre adresse, avec le même corps JSON que la consultation d’un statut :
{ "id": "01a0f26b-…", "numero": "FA-2026-0142", "statut": "recue", "message": "Facture reçue par le destinataire.", "voie": "B2B", "maj": "2026-10-20T09:31:06+02:00" }
et deux en-têtes :
| En-tête | Contenu |
|---|---|
X-Efacture-Timestamp | Horodatage Unix (en secondes) de l’envoi. |
X-Efacture-Signature | sha256= suivi de la signature HMAC-SHA256 de {horodatage}.{corps}, calculée avec votre secret. |
Répondez par un code 2xx. Sans réponse 2xx, la notification est renvoyée automatiquement, à intervalles croissants.
Vérifier la signature
Votre logiciel doit recalculer la signature avec son secret et refuser toute notification dont la signature diffère ou dont l’horodatage s’écarte de plus de 5 minutes de l’heure actuelle.
<?php
$secret = 'votre secret de notification';
$body = file_get_contents('php://input');
$timestamp = $_SERVER['HTTP_X_EFACTURE_TIMESTAMP'] ?? '';
$signature = $_SERVER['HTTP_X_EFACTURE_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $timestamp . '.' . $body, $secret);
if (!hash_equals($expected, $signature) || abs(time() - (int) $timestamp) > 300) {
http_response_code(401);
exit;
}
$notification = json_decode($body, true);
// Mettre à jour la facture $notification['numero'] avec $notification['statut'] et $notification['message'].
http_response_code(200);
Si votre serveur filtre les adresses IP, autorisez celle de la passerelle, 217.22.14.21, sur l’adresse de notification uniquement.
Un statut ne recule jamais : si une notification arrive après une plus récente, ignorez-la en comparant les statuts (voir l’ordre des statuts).