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 hint actionnable.

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

200Vérification effectuée (quel que soit le statut de la facture)
401Clé absente, invalide ou révoquée
402Aucun abonnement actif
403Dossiers clients non inclus dans la formule
404Dossier introuvable ou archivé
410Factur-X corrigé expiré (fichier supprimé après 24 h)
413Fichier supérieur à 4 Mo
415Content-Type non supporté (utilisez multipart/form-data ou application/json)
422Fichier refusé (contenu actif, chiffré, illisible) ou JSON invalide
429Quota 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.