Finekot API
EN 16931 · XRechnung 3.0 · ZUGFeRD / Factur-X

ZUGFeRD-Validator-API für PDF/A-3-Rechnungen

€0,02 pro Prüfung · Kein Abo, kein Vertrag.

Das hybride PDF so senden, wie es ist. Die API findet factur-x.xml, liest das Profil und prüft das XML gegen die Regeln der EN 16931.

Anfrage
curl -H "Authorization: Bearer $FINEKOT_KEY" -F file=@invoice.pdf https://api.finekot.com/v1/e-invoice
Antwort (gekürzt)
{
  "valid": true,
  "verdict": "technically_valid",
  "container": "pdf",
  "attachment": "factur-x.xml",
  "profile": {"name": "Factur-X / ZUGFeRD EN 16931 (COMFORT)"},
  "errors": 0, "warnings": 0,
  "issues": [],
  "cost": 0.02, "balance": 0.98
}
Preis pro Aufruf€0,02pro Prüfung

Kein Abo, kein Vertrag.

Erstellung aus JSON €0,04 · PDF → XRechnung €0,10

Ein Abo berechnet denselben Monatstarif für 10 oder 1.000 Rechnungen. Hier laden Sie einen beliebigen Betrag auf und zahlen pro Aufruf; Restguthaben bleibt.

10 kostenlose Prüfungen am Tag · €1 gratis mit Schlüssel · danach €0,02 pro Prüfung

node-zugferd-Ausgabe in Node.js prüfen

In node-zugferd das Profil EN16931 oder BASIC verwenden: MINIMUM und BASIC WL sind keine EN-16931-Rechnungen und erfüllen die deutsche Pflicht nicht.

Node.js 18+ · node-zugferd
// pdfA: the PDF/A-3 returned by node-zugferd
//   const pdfA = await invoice.embedInPdf(pdf, { … })
const form = new FormData();
form.append("file", new Blob([pdfA], { type: "application/pdf" }), "invoice.pdf");

const res = await fetch("https://api.finekot.com/v1/e-invoice", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.FINEKOT_KEY}` },
  body: form,
});
const rep = await res.json();
console.log(rep.attachment, rep.profile.name, rep.verdict);
// factur-x.xml  Factur-X / ZUGFeRD EN 16931 (COMFORT)  technically_valid
for (const i of rep.issues) console.log(i.severity, i.rule, i.location);
if (!rep.valid) process.exitCode = 1;

E-Rechnung prüfen

Offizielle Regeln EN 16931 und XRechnung. Fehler mit Regel-ID, Meldung und Fundstelle.

10 kostenlose Prüfungen am Tag · €1 gratis mit Schlüssel · danach €0,02 pro Prüfung

Verarbeitung auf Servern in Deutschland (Hetzner, Falkenstein). Die hochgeladene Datei wird im Arbeitsspeicher geprüft und nicht gespeichert.

Ergebnis

Hier erscheinen Ergebnis, Profil, Summen und jeder Regelverstoß.

So wird das PDF geprüft

Der Anhang wird über den Namen gefunden (factur-x.xml, zugferd-invoice.xml, xrechnung.xml) und im Feld attachment zurückgegeben. Seit 2025 ist das XML in Deutschland der führende Teil einer ZUGFeRD-Rechnung (BMF-FAQ, Frage 12a).

Das XML wird mit EN 16931 1.3.17 geprüft, beim Profil XRECHNUNG zusätzlich mit KoSIT-XRechnung-Schematron 2.6.0. Die PDF/A-3-Konformität des Containers wird nicht geprüft: dafür veraPDF verwenden.

Ein reines PDF ohne Anhang liefert 422 pdf_no_xml_attachment und wird nicht berechnet.

Preis in einfachen Zahlen

Vorausbezahltes Guthaben, kein Abo. Berechnet wird nur eine erfolgreiche Antwort; Fehler sind kostenlos.

Eine Prüfungpro Dokument€0,02
Eine E-Rechnung aus JSONXML oder Factur-X-PDF€0,04
PDF-Rechnung → XRechnung / ZUGFeRDlesen €0,06 + erzeugen €0,04€0,10

Ein neuer Schlüssel enthält €1 Startguthaben: 50 Prüfungen.

Paket€5 250 Prüfungen oder 50 PDF-Umwandlungen
Paket€20 1 000 Prüfungen oder 200 PDF-Umwandlungen

Guthaben verfällt nicht. Kein Abo.

Apple Pay, Google Pay oder Karte auf der Zahlungsseite der monobank. Ohne Schlüssel wird einer für Sie erstellt.

Ihr Schlüssel und Guthaben—

In diesem Browser ist noch kein Schlüssel.

Für Entwickler

Dieselben Prüfungen per REST und MCP. Ein Header, JSON zurück.

validate
curl https://api.finekot.com/v1/e-invoice \
  -H "Authorization: Bearer fk_live_…" \
  -F file=@invoice.xml

# → {"valid":false,"errors":2,"issues":[{"rule":"BR-DE-15",…}]}
# X-Cost: 0.02
create
curl https://api.finekot.com/v1/e-invoice \
  -H "Authorization: Bearer fk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"op":"create","output":"pdf","invoice":{…}}'

# → Factur-X PDF url + validation report · X-Cost: 0.04
MCP
claude mcp add --transport http finekot https://api.finekot.com/mcp --header "Authorization: Bearer fk_live_…"

API-Anleitungen