Intégration
Une API REST, et les mêmes opérations exposées comme outils MCP pour les agents. Un seul format d'entrée : le JSON canonique, sous-ensemble strict du modèle sémantique EN 16931, où chaque champ porte son terme métier (BT-/BG-).
Appel
Contrôler une facture
curl -s https://api.validationfacture.fr/v1/validate \
-H "Authorization: Bearer $CLE_API" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: F2026-0142" \
-d '{"invoice": { … }}'La réponse contient le verdict, la liste des anomalies et un paquet de preuves (empreinte de l'entrée, empreintes des sorties, version du référentiel, signature).
Réponse
Une anomalie, telle qu'elle est renvoyée
{
"code": "BR-CO-15",
"severity": "error",
"field": "totals.tax_inclusive_amount",
"business_term": "BT-112",
"message": "Le total TTC n'est pas égal au total HT augmenté de la TVA.",
"fix": "Portez totals.tax_inclusive_amount à 1224.00.",
"expected": "1224.00",
"actual": "1220.00",
"auto_repairable": true,
"source": "EN 16931"
} Branchez votre traitement sur code, jamais sur message : un code ne change pas de signification, et une règle retirée laisse son code retiré plutôt que recyclé. Voir les 89 codes.
Boucle d'intégration recommandée
validate_invoiced'abord — 25 fois moins cher que la conversion, et il vous dit si la suite est nécessaire.- Si toutes les anomalies portent
auto_repairable: true, appelezrepair_invoice: la correction est déterministe et la liste des changements vous est rendue. - Sinon, remontez les anomalies à un humain : le service refuse de deviner une donnée absente ou de trancher entre deux montants contradictoires.
convert_invoicepour produire le Factur-X, l'UBL ou le CII.- En cas de rejet malgré tout,
explain_rejectionavec le code et la facture. Voir les codes de rejet.
Agents
Les mêmes opérations en MCP
{
"mcpServers": {
"validation-facture": {
"command": "invoice-guard-mcp",
"env": { "INVOICE_GUARD_API_KEY": "…" }
}
}
}Un verdict obtenu en MCP est identique au verdict obtenu en REST, et porte le même paquet de preuves : c'est le même moteur, exposé sur deux transports.