Ein Aufruf, eine Datei, ein Bericht
Die vollständige Spezifikation der Prüf-API für Factur-X, XRechnung, CII und UBL. Kostenlos, ohne Schlüssel, ohne Konto und ohne Mengenbegrenzung bei der Prüfung.
Sofort ausprobieren
Senden Sie eine beliebige Rechnung als Factur-X (PDF/A-3), CII oder UBL 2.1 bis 10 MB als HTTP-Multipart-Anfrage:
curl -X POST https://api.factlint.com/v1/validate \ -F "file=@facture.pdf" \ -F "ruleset=eu-en16931-2026-08" \ -F "pinned=true"
Aufbau der JSON-Antwort
Eine nicht konforme Rechnung liefert HTTP 200 OK mit einem fachlichen Status im Rumpf (status: "needs_input" oder "blocked"). HTTP-4xx-Fehler betreffen ausschließlich fehlerhafte Anfragen.
{
"status": "needs_input",
"document": {
"sha256": "a609849e914e759c87b003a8d...",
"bytes": 4996
},
"identify": {
"syntax": "cii",
"profile": "urn:cen.eu:en16931:2017",
"pdf_compliant": true
},
"engine": {
"name": "factlint-saxon",
"version": "12.5",
"pinned": true
},
"ruleset": {
"id": "eu-en16931-2026-08",
"sealed": true
},
"errors": [
{
"code": "BR-CO-15",
"bt": "BT-112",
"severity": "fatal",
"resolution": "blocked",
"message": "[BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).",
"docs_url": "https://factlint.com/errors/br-co-15"
}
],
"counts": { "fired": 65, "failed": 1, "passes": 64 }
}Verfügbare Endpunkte
| Methode | Pfad | Rolle | Hinweis |
|---|---|---|---|
| POST | /v1/validate | Prüfung einer Rechnung | Kostenlos, ohne Konto, ohne Begrenzung |
| GET | /v1/rulesets | Katalog der Regelwerke | Versionen, Wirksamkeitsdaten, Fingerabdrücke |
| GET | /v1/rulesets/{id} | Zusammensetzung eines Regelwerks | Versionierte Artefakte und Manifeste |
| POST | /v1/fix | Strukturelle Korrektur | Pro — API-Schlüssel erforderlich |
| POST | /v1/process | Pipeline in einem Aufruf | Pro — API-Schlüssel erforderlich |
| POST | /v1/enrich | Prüfung Dritter | Pro — API-Schlüssel erforderlich |
| POST | /v1/convert | Umwandlung zwischen Formaten | Pro — API-Schlüssel erforderlich |
| POST | /v1/evidence | Versiegeltes Nachweispaket | Enterprise — API-Schlüssel erforderlich |
| POST | /v1/evidence/verify | Prüfung eines Siegels | Kostenlos, ohne Konto |
| GET | /v1/evidence/{id} | Erneutes Lesen eines Pakets | Enterprise — API-Schlüssel erforderlich |
| GET | /v1/usage | Verbrauch des Kontos | Kontositzung erforderlich |
| GET | /v1/openapi | OpenAPI-Spezifikation | OpenAPI 3.1 JSON — öffnen |
Für die Pro- und Enterprise-Endpunkte übergeben Sie Ihren Schlüssel im Header Authorization: Bearer flk_live_…. Ein fehlender oder ungültiger Schlüssel liefert 401, ein erforderliches Abonnement liefert 402, eine nicht ausreichende Stufe liefert 403. Die Prüfung über /v1/validate bleibt kostenlos und ohne Schlüssel.
Was die fachlichen Status bedeuten
Die Rechnung entspricht dem angehefteten Regelwerk. Kein Fehler am PDF/A-3-Container, an der XML-Syntax oder an den Schematron-Regeln.
Es fehlt ein Pflichtwert, den nur der Aussteller kennt (etwa die Käuferreferenz BT-44).
Eine Unstimmigkeit in einem Betragsfeld. Der richtige Wert wird vorgeschlagen, aber nie automatisch geändert.
Die strukturellen Mängel wurden behoben. Das XPath-Diff liegt der Antwort bei.
Offizielle SDKs
Typisierte Client-Bibliotheken werden separat veröffentlicht und binden sich in zwei Zeilen Code ein.