Dokumentation der Factlint-API

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

MethodePfadRolleHinweis
POST/v1/validatePrüfung einer RechnungKostenlos, ohne Konto, ohne Begrenzung
GET/v1/rulesetsKatalog der RegelwerkeVersionen, Wirksamkeitsdaten, Fingerabdrücke
GET/v1/rulesets/{id}Zusammensetzung eines RegelwerksVersionierte Artefakte und Manifeste
POST/v1/fixStrukturelle KorrekturPro — API-Schlüssel erforderlich
POST/v1/processPipeline in einem AufrufPro — API-Schlüssel erforderlich
POST/v1/enrichPrüfung DritterPro — API-Schlüssel erforderlich
POST/v1/convertUmwandlung zwischen FormatenPro — API-Schlüssel erforderlich
POST/v1/evidenceVersiegeltes NachweispaketEnterprise — API-Schlüssel erforderlich
POST/v1/evidence/verifyPrüfung eines SiegelsKostenlos, ohne Konto
GET/v1/evidence/{id}Erneutes Lesen eines PaketsEnterprise — API-Schlüssel erforderlich
GET/v1/usageVerbrauch des KontosKontositzung erforderlich
GET/v1/openapiOpenAPI-SpezifikationOpenAPI 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

passed

Die Rechnung entspricht dem angehefteten Regelwerk. Kein Fehler am PDF/A-3-Container, an der XML-Syntax oder an den Schematron-Regeln.

needs_input

Es fehlt ein Pflichtwert, den nur der Aussteller kennt (etwa die Käuferreferenz BT-44).

blocked

Eine Unstimmigkeit in einem Betragsfeld. Der richtige Wert wird vorgeschlagen, aber nie automatisch geändert.

autofixed

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.

Java / Spring
v1.2.0
Node.js / TypeScript
v1.1.4
PHP 8+
v1.0.8