erechnung.dev

API

Zwei Endpunkte, kein SDK nötig. Der Prüf-Endpunkt ist offen und ohne Schlüssel nutzbar.

POST /api/v1/validate

Nimmt eine E-Rechnung im Request-Body entgegen und liefert das Prüfergebnis als JSON. Angenommen wird XML (UBL oder CII) oder eine ZUGFeRD-/Factur-X-PDF; im zweiten Fall wird der eingebettete XML-Anhang gelesen und geprüft. Maximal 4 MB pro Aufruf.

curl -X POST https://erechnung.dev/api/v1/validate \
  -H "Content-Type: application/xml" \
  --data-binary @rechnung.xml

curl -X POST https://erechnung.dev/api/v1/validate \
  -H "Content-Type: application/pdf" \
  --data-binary @rechnung.pdf

Antwort:

{
  "valid": false,
  "syntax": "UBL",
  "profile": "urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0",
  "checkedRules": 31,
  "source": { "container": "pdf", "attachment": "factur-x.xml" },
  "findings": [
    {
      "rule": "BR-DE-15",
      "severity": "error",
      "term": "BT-10",
      "message": "Es fehlt die Leitweg-ID bzw. Käuferreferenz (BT-10) …"
    }
  ]
}

severity ist error oder warning. valid ist genau dann true, wenn kein Fund die Stufe error hat. Warnungen blockieren nicht. source.container ist xml oder pdf und sagt, woher die geprüfte XML kam.

Erkannt wird an den ersten Bytes der Datei, nicht am Content-Type — eine PDF wird also auch dann als solche behandelt, wenn sie als application/octet-stream ankommt. Enthält die PDF keinen Rechnungsanhang, antwortet der Endpunkt mit 422 und einer Begründung, nicht mit einem Parserfehler.

POST /api/v1/create

Nimmt flaches JSON und liefert eine XRechnung 3.0 als UBL-XML zurück. Mit dem Header Accept: application/json kommt stattdessen ein Objekt aus xml und validation — das erzeugte Dokument wird immer gegen die eigene Prüfung gefahren, bevor es das Haus verlässt.

Pflichtfelder

FeldBusiness TermBeschreibung
invoiceNumberBT-1Rechnungsnummer
issueDateBT-2Rechnungsdatum als YYYY-MM-DD
sellerBG-4Name, Anschrift und Kontakt. Für die XRechnung sind contact.name, contact.phone und contact.email Pflicht (BR-DE-5 bis BR-DE-7).
buyerBG-7Name und Anschrift des Rechnungsempfängers
lines[]BG-25Mindestens eine Position mit name, quantity, netPrice und vatRate
buyerReferenceBT-10Leitweg-ID. Ohne sie weisen öffentliche Auftraggeber die Rechnung zurück (BR-DE-15).

Was automatisch gesetzt wird

Grenzen, offen benannt