Documentation API
Un seul endpoint : envoyez une facture, recevez en 2 secondes son statut, ses anomalies avec la marche à suivre, et une version corrigée.
1. Authentification
Votre clé (cf_live_…) est envoyée par e-mail à l'ouverture de votre essai et régénérable depuis le tableau de bord. Passez-la dans l'en-tête Authorization: Bearer (ou x-api-key). Ne l'exposez jamais dans un navigateur ou une application mobile : appelez l'API depuis votre serveur.
2. Vérifier un PDF ou un Factur-X
curl -X POST https://conformfact.com/api/v1/invoices/check \ -H "Authorization: Bearer $CONFORMFACT_API_KEY" \ -F "file=@facture-2026-0142.pdf"
Node.js (18+)
const form = new FormData();
form.append("file", new Blob([await fs.promises.readFile("facture.pdf")]), "facture.pdf");
const res = await fetch("https://conformfact.com/api/v1/invoices/check", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.CONFORMFACT_API_KEY}` },
body: form,
});
const result = await res.json();
if (result.status === "REJECTED") console.log(result.issues);Python
import os, requests
r = requests.post("https://conformfact.com/api/v1/invoices/check",
headers={"Authorization": f"Bearer {os.environ['CONFORMFACT_API_KEY']}"},
files={"file": open("facture.pdf", "rb")}, timeout=30)
print(r.json()["status"])3. Vérifier des données JSON (depuis votre ERP)
curl -X POST https://conformfact.com/api/v1/invoices/check \
-H "Authorization: Bearer $CONFORMFACT_API_KEY" -H "Content-Type: application/json" \
-d '{
"number": "F-2026-0142", "issueDate": "2026-11-04", "dueDate": "2026-12-04",
"operationCategory": "SERVICES", "vatOnDebits": false,
"seller": { "name": "Acme SAS", "siret": "…", "vatNumber": "FR…", "address": "1 rue de Paris, 75001 Paris" },
"buyer": { "name": "Client SARL", "siren": "…", "address": "2 av. de Lyon, 69002 Lyon" },
"lines": [{ "description": "Conseil", "quantity": 2, "unitPriceHT": 500, "vatRate": 20, "totalHT": 1000 }],
"vatBreakdown": [{ "rate": 20, "baseHT": 1000, "amount": 200 }],
"totalHT": 1000, "totalVAT": 200, "totalTTC": 1200,
"latePenaltyMention": true, "recoveryFeeMention": true
}'4. Réponse
{
"id": "4f0c…",
"status": "CORRECTED", // VALID | CORRECTED | REJECTED
"score": 96, // 0-100
"issues": [{
"code": "MISSING_BUYER_SIREN", "field": "buyer.siren", "severity": "error",
"message": "SIREN de l'acheteur manquant (mention obligatoire réforme 2026)",
"hint": "Demandez son SIREN à votre client ou trouvez-le sur annuaire-entreprises.data.gouv.fr…"
}],
"corrections": [{ "code": "VAT_KEY", "field": "seller.vatNumber", "before": "FR00…", "after": "FR11…",
"message": "Clé de contrôle TVA recalculée depuis le SIREN" }],
"invoice": { … }, // facture normalisée et corrigée
"meta": { "source": "facturx-xml", "engineVersion": "1.0.0", "checkedAt": "…" },
"quota": { "used": 42, "limit": 5000 }
}- VALID : aucune anomalie, envoyez la facture.
- CORRECTED : seules des erreurs de forme ont été corrigées (formats, clé TVA, arrondis ≤ 0,05 €) ; reportez les valeurs de
invoice. - REJECTED : au moins une erreur bloquante ; chaque anomalie contient un
hintactionnable.
5. Télécharger le Factur-X corrigé
Quand la facture envoyée est un Factur-X et que son statut est VALID ou CORRECTED, la réponse contient facturxUrl. Ce lien renvoie le PDF avec son XML corrigé : seules les valeurs corrigées automatiquement changent, le reste du document est conservé à l'identique. Disponible 24 heures.
curl -L https://conformfact.com/api/v1/invoices/4f0c…/facturx \ -H "Authorization: Bearer $CONFORMFACT_API_KEY" -o facture-corrigee.pdf
6. Règles officielles EN 16931
Pour chaque Factur-X, ConformFact exécute les règles de validation officielles de la norme européenne EN 16931 publiées par le CEN, celles qu'appliquent les plateformes agréées. Chaque règle non respectée apparaît dans issues avec le code EN16931:BR-…, un message en français et le texte officiel dans detail. meta.en16931 indique si la validation a été exécutée et la version des règles.
7. Dossiers clients (formule Cabinet & Entreprise)
Ajoutez le champ dossier (identifiant visible dans « Équipe et dossiers ») pour classer la vérification dans le dossier d'un client :
curl -X POST https://conformfact.com/api/v1/invoices/check \ -H "Authorization: Bearer $CONFORMFACT_API_KEY" \ -F "file=@facture.pdf" -F "dossier=8b1e…"
Pour un envoi JSON, passez-le en paramètre : /api/v1/invoices/check?dossier=8b1e….
8. Codes HTTP et limites
| 200 | Vérification effectuée (quel que soit le statut de la facture) |
| 401 | Clé absente, invalide ou révoquée |
| 402 | Aucun abonnement actif |
| 403 | Dossiers clients non inclus dans la formule |
| 404 | Dossier introuvable ou archivé |
| 410 | Factur-X corrigé expiré (fichier supprimé après 24 h) |
| 413 | Fichier supérieur à 4 Mo |
| 415 | Content-Type non supporté (utilisez multipart/form-data ou application/json) |
| 422 | Fichier refusé (contenu actif, chiffré, illisible) ou JSON invalide |
| 429 | Quota mensuel atteint (200 pendant l'essai) ou plus de 120 requêtes/minute |
PDF : 4 Mo et 100 pages maximum. Les fichiers et données extraites sont supprimés sous 24 h. Les PDF contenant du JavaScript, des actions automatiques ou des pièces jointes autres que le XML Factur-X sont refusés.