Electronic Invoice API
Valider et créer des factures électroniques via une interface
Les mêmes règles que celles du validateur dans le navigateur, pour votre logiciel : envoyez une facture, recevez le résultat en JSON, créez des factures électroniques à partir de vos données. L'offre Free ne coûte rien et inclut 50 appels par mois.
Ce que couvre l'API : elle crée et valide XRechnung, ZUGFeRD et Factur-X (EN 16931). La validation via l'API et le serveur MCP couvre également d'autres formats européens, voir les formats pris en charge. Elle n'envoie pas de factures. Elle s'adresse exclusivement aux entreprises.
Guides avec exemples : XRechnung, ZUGFeRD, validation, export DATEV, intégration avec Claude, ChatGPT, Copilot et vos propres agents, documentation du serveur MCP.
Ce que l'API peut faire
| Fonction | Description |
|---|---|
| Valider | UBL, CII et PDF ZUGFeRD/Factur-X selon EN 16931 et XRechnung 3.0 ainsi que d'autres formats européens (voir formats pris en charge) : verdict, constatations avec identifiant de règle, emplacement et brève explication. Les PDF sont contrôlés en tant que conteneurs PDF/A-3 et le XML intégré comme toute autre facture. |
| Créer | XRechnung (UBL, CII), ZUGFeRD et Factur-X au format PDF/A-3 à partir d'une facture JSON. Chaque fichier est validé par le même processus de contrôle avant d'être renvoyé ; en cas d'erreurs, vous recevez les constatations au lieu d'un fichier. |
| Visualiser | XML XRechnung ou ZUGFeRD sous forme de PDF ou HTML lisible, afin que les destinataires puissent lire et archiver les factures. |
| Convertir | Convertir entre UBL et CII, ainsi que XRechnung en PDF ZUGFeRD. |
| Extraire | Données de facture en JSON, CSV et sous forme de lot d'écritures DATEV pour les factures fournisseurs. |
| Lot | Valider de nombreux fichiers dans un seul ZIP (jusqu'à 200 fichiers, 5 MiB par fichier, 50 MiB au total). Un résultat par fichier, détection des doublons de numéros de facture dans le lot, et rapport récapitulatif au format JSON, CSV ou PDF. À partir de l'offre Starter. Chaque fichier contrôlé compte pour un appel, et un seul lot s'exécute à la fois par compte. |
| Plausibilité | Au-delà du format : mentions obligatoires au titre du § 14, alinéa 4, de la loi allemande relative à la TVA (UStG), erreurs de calcul, escompte (Skonto) et date d'échéance, doublons de numéros de facture au sein d'un lot, format du numéro de TVA (aucune consultation auprès de l'Office central fédéral des impôts (BZSt) ni de VIES). |
Formats pris en charge
S'applique à la validation via l'API et le serveur MCP. Le validateur intégré au navigateur ne contrôle toujours que XRechnung et ZUGFeRD, et le fichier ne quitte jamais votre appareil.
| Pays | Format | Ce qui est contrôlé |
|---|---|---|
| Allemagne | XRechnung 3.0 (UBL, CII) | Règles EN 16931 et CIUS XRechnung |
| UE | EN 16931 (UBL, CII) | Règles EN 16931 |
| Allemagne, France | ZUGFeRD / Factur-X 1.09.2 (MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED) | Règles par profil, ainsi qu'un contrôle PDF/A-3 du conteneur |
| Europe | Peppol BIS Billing 3.0.21 (UBL Invoice and CreditNote) | Règles du format de fichier. Aucun envoi ni réception via le réseau Peppol. |
| Pays-Bas | NLCIUS (SI-UBL 2.0.3.13, NLCIUS-CII 1.0.3.13) | Règles nationales |
| Roumanie | CIUS-RO 1.0.1 | Règles nationales |
| France | Règles CIUS françaises (FNFE France_RFE 1.4.0.04), avec country=FR, y compris EXTENDED-CTC-FR | Règles nationales |
| Autres pays de l'UE | Autres CIUS EN 16931, par exemple la Croatie et le Portugal | Règles de base EN 16931 uniquement. Le résultat est au maximum « warnings », avec une note indiquant que les règles nationales n'ont pas été contrôlées. |
| Italie | FatturaPA (XSD 1.2.3) | Schéma officiel uniquement. Les contrôles supplémentaires sont effectués par l'autorité (SdI). |
| Pologne | KSeF FA(3) | Schéma officiel uniquement, sans limites maximales de répétition. Les contrôles supplémentaires sont effectués par l'autorité (KSeF). |
La génération et la conversion restent limitées à XRechnung, ZUGFeRD et EN 16931. L'API contrôle le format de fichier Peppol BIS ; elle n'envoie pas de factures.
Nos propres tests (31 octobre 2026) : 223 cas de test sur 223 (cas de test officiels KoSIT et nos propres cas d'erreur) ont donné le résultat attendu ; 35 factures générées sur 35 (toutes les catégories de taxe, cinq formats) passent avec succès le contrôle croisé indépendant effectué avec le validateur KoSIT, Mustang et veraPDF. Il s'agit d'un test sur des échantillons, et non d'une certification.
Confidentialité : comment l'API est conçue
- En mémoire uniquement : Les factures sont traitées et non stockées. Le conteneur fonctionne avec un système de fichiers en lecture seule et les fichiers temporaires résident en mémoire.
- Aucun contenu dans les journaux : Chaque requête génère une ligne de journal indiquant l'identifiant de requête, l'heure, la durée, la taille et le résultat. Aucun contenu de facture, aucune adresse IP dans les journaux applicatifs.
- Serveurs de traitement en Allemagne : Le traitement proprement dit s'exécute sur les serveurs de Hetzner Online GmbH en Allemagne (centre de données de Nuremberg). Lorsque le serveur MCP est utilisé, la requête est d'abord traitée en mémoire dans un Worker Cloudflare à l'adresse mcp.electronic-invoice.app ; Cloudflare peut pour cela utiliser des centres de données situés hors de l'UE.
- Passerelle en amont : Les contrôles des clés et les quotas sont gérés par un Worker Cloudflare. Il voit les requêtes en mémoire puisqu'il les transmet et ne stocke aucun contenu. Dans la console, la clé API est stockée uniquement sous forme de hachage ; pour les connexions OAuth au serveur MCP, elle est en outre stockée sous forme chiffrée avec AES-256-GCM. Les données de connexion OAuth sont conservées dans des Durable Objects avec une exigence de localisation dans l'UE. Les compteurs d'appels sont stockés. Cloudflare peut aussi acheminer les requêtes via des centres de données situés hors de l'UE ; les détails figurent dans l'accord de traitement des données.
- Traitement des données : L'accord de traitement des données (DPA) s'applique.
- Aucune utilisation à nos propres fins : Nous n'utilisons pas les données de facture à nos propres fins, notamment pas à des fins de publicité, d'amélioration des produits, d'analyse ou d'entraînement de modèles d'IA.
- Facturation : Abonnements mensuels à tarif fixe via Stripe. Stripe n'a connaissance ni du contenu des factures ni du nombre de vos appels.
Offres
| Offre | Prix par mois | Appels inclus | Appels par minute | Appels simultanés | Au-delà de cette limite |
|---|---|---|---|---|---|
| Free | 0 EUR | 50 | environ 10 | 2 | Limite stricte : les appels supplémentaires sont refusés |
| Starter | 19 EUR | 2 000 | environ 60 | 4 | Les appels supplémentaires sont refusés (429) jusqu'à la fin de la période de facturation ou jusqu'à ce que vous passiez à une offre supérieure |
| Business | 49 EUR | 10 000 | environ 300 | 6 | Les appels supplémentaires sont refusés (429) jusqu'à la fin de la période de facturation ou jusqu'à ce que vous passiez à une offre supérieure |
| Pro | 149 EUR | 50 000 | environ 1 000 | 8 | Les appels supplémentaires sont refusés (429) jusqu'à la fin de la période de facturation ou jusqu'à ce que vous passiez à une offre supérieure |
Prix mensuels fixes, sans facturation à l'usage. Aucune TVA n'est facturée en application du § 19 de la loi allemande relative à la TVA (UStG) pour les petites entreprises. L'API s'adresse exclusivement aux entreprises ; les conditions s'appliquent. Accéder à la console
Limites et volumes importants
Ce qui est décompté : Les réponses 200, 400, 422 et 504 comptent pour un appel ; pour les lots, chaque fichier contrôlé compte. Les codes 401, 403, 404, 405, 411, 413, 429, 500, 502, 503 et l'appel à /v1/health ne comptent pas.
Limite par minute : Les valeurs sont approximatives et s'appliquent par emplacement Cloudflare. Au-delà de cette limite, l'API renvoie le code 429 rate_limited. Simultanés désigne les appels en cours d'exécution et en attente d'un même compte. Au-delà de cette limite, elle répond immédiatement avec le code 429 too_many_concurrent.
De nombreuses factures : Pour de nombreux fichiers XML, utilisez /v1/validate/batch (à partir de l'offre Starter). N'envoyez que quelques requêtes simultanément. La génération de PDF prend quelques secondes ; en cas de réponse 503, réessayez après Retry-After. Les réponses 429 rate_limited, too_many_concurrent et batch_in_progress indiquent également le temps d'attente en secondes.
Taille et format : Une requête peut atteindre 10 MiB (10 485 760 octets), un lot 50 MiB. Le Content-Type est traité avec souplesse : seul multipart/form-data est lu séparément ; sinon, l'API détecte le format à partir du contenu.
Exemples de code
Chargement des exemples ...
Référence
Chargement de la référence ...
Les textes juridiques sont disponibles en allemand et en anglais : politique de confidentialité, conditions de l'API et mentions légales. Seule la version allemande fait foi.