Zum Inhalt springen

Ironfang Finance - XRechnung

XRechnung validieren und anzeigen

Was geprüft wird, gegen welche Version, wie Sie die API aufrufen, wie Sie ein Ergebnis lesen und was der Viewer zeigt.

Ironfang Finance validiert XRechnung-Rechnungen und -Gutschriften in beiden Syntaxen, UBL 2.1 und UN/CEFACT CII, gegen die offizielle XRechnung-Prüfkonfiguration und liest sie als Dokumente. Probieren Sie es ohne Konto im XRechnung-Validator und im XRechnung-Viewer aus, die es neben Englisch auch auf Deutsch gibt.

Was geprüft wird

Ein Dokument durchläuft diese Prüfschritte der Reihe nach. Schlägt ein Schritt fehl, laufen die folgenden nicht mehr, und das Ergebnis weist jeden davon als nicht erreicht aus, nicht als bestanden.

PrüfschrittWas er prüft
inputGröße und Aufbau der Anfrage, bevor irgendetwas geparst wird.
xmlWohlgeformtes XML innerhalb der Grenzen, ohne DTD, ohne Entitäten über die fünf vordefinierten hinaus und ohne XInclude.
xsdDas XML-Schema der Syntax des Dokuments: UBL 2.1 oder UN/CEFACT CII D16B, die Ausgabe, die XRechnung verwendet.
en16931Die Geschäftsregeln der europäischen Norm, in der Ausgabe, die das XRechnung-Bundle festlegt.
xrechnungDie XRechnung-Regeln (BR-DE-* und die aus Peppol übernommenen Regeln, die XRechnung enthält).

Die Regeln sind die offizielle Konfiguration, Byte für Byte unverändert ausgeführt, mit den Stufen, die sie festlegt. Diese Konfiguration stuft einige Regeln gegenüber ihrer eigenen Kennzeichnung herab, deshalb trägt ein Befund beides: severity, das über das Ergebnis entscheidet, und rule_flag, die Kennzeichnung der Regel selbst. Nur Befunde der Stufe fatal (Fehler) lassen ein Dokument durchfallen; warning (Warnung) und information (Hinweis) nie.

Versionen und Varianten

  • XRechnung 3.0.2, im technischen Bundle vom 31. August 2026. Das Ergebnis nennt die genaue Version in ruleset.official_release und ruleset.technical_release.
  • UBL 2.1 Invoice und CreditNote; Rechnungen und Gutschriften in CII, deren Art der Code für den Rechnungstyp bestimmt.
  • Die Kernvariante (Core). Die Extension und die Variante CVD werden erkannt und mit unsupported_variant abgelehnt, nie gegen die Kernregeln geprüft, als wären sie etwas anderes.
  • Nur XML. Auf ein PDF, auch ZUGFeRD und Factur-X, antwortet die API mit scope_unavailable.

Mit der API validieren

POST /finance/v2/einvoices/validate nimmt das XML als Anfragekörper entgegen. Nennen Sie die Familie, wie es dieses Skript tut, damit ein Dokument ohne Angabe einer Familie trotzdem als XRechnung geprüft wird und eines, das eine andere Familie angibt, abgelehnt wird; die Ablehnung nennt, welche es angibt. Das Skript speichert das Ergebnis in result.json und leitet den Idempotency-Key aus der Datei ab, sodass eine Wiederholung das erste Ergebnis liefert und nicht erneut berechnet wird.

#!/usr/bin/env bash
# Validate one XRechnung with the Ironfang Finance API and keep the result.
#
#   IRONFANG_API_KEY=... ./validate-xrechnung.sh invoice.xml
#
# The result is written to result.json. A retry with the same file sends
# the same Idempotency-Key, so it returns the first result and is not
# charged again.
set -euo pipefail
file="$1"
base="${IRONFANG_FINANCE_API:-https://api.ironfang.uk/finance}"
key="xr-$(sha256sum "$file" | cut -c1-40)"

curl --fail-with-body --silent --show-error \
  "$base/v2/einvoices/validate?family=xrechnung" \
  -H "Authorization: Bearer $IRONFANG_API_KEY" \
  -H "Content-Type: application/xml" \
  -H "Idempotency-Key: $key" \
  --data-binary "@$file" \
  --output result.json

grep -o '"outcome":"[a-z]*"' result.json | head -n 1
Query-ParameterBedeutung
familyxrechnung. Ohne ihn wird die Familie aus der Spezifikationskennung des Dokuments gelesen.
variantcore, der Standardwert für XRechnung.
document_typeinvoice, credit_note oder auto (der Standardwert: aus dem Dokument gelesen).
rulesetlatest (der Standardwert) oder die genaue ID einer Version aus GET /finance/v2/einvoices/rulesets. Eine genaue Version legt die gesamte Auswahl fest; ein Selektor, der ihr widerspricht, ergibt selection_conflict.

Ohne API-Schlüssel ist dieselbe Anfrage anonym: Es wird nichts gespeichert, und es gelten strengere Ratenbegrenzungen. Mit einem Schlüssel zählt eine abgeschlossene Validierung als ein Vorgang aus Ihrem Finance-Kontingent, berechnet, sobald die Schemaprüfung zu einem Urteil kommt, und das Ergebnis wird 30 Tage unter GET /finance/v2/einvoices/results/{id} aufbewahrt. Der vollständige Vertrag ist das V2-OpenAPI-Dokument, und wie sich V2 von V1 unterscheidet, steht im Leitfaden zu V1 und V2.

Ein Ergebnis lesen

outcome ist bei einer abgeschlossenen Validierung valid oder invalid; alles, was ein Urteil verhindert hat, etwa eine Zeitüberschreitung, ist eine Problem-Antwort mit outcome: indeterminate, und es wird nichts berechnet. coverage sagt, was das Ergebnis feststellt: im XML-Umfang das XML-Dokument und nichts über ein PDF. Jeder Befund trägt seine Regelkennung unverändert, eine feste Meldung für seinen Prüfschritt und einen XPath in location; die offiziellen Regeltexte werden nicht wiederholt, weil sie Rechnungswerte enthalten können. next_actions enthält view, wenn sich das Dokument im Viewer öffnen lässt.

Erläuterte Regeln

Zu diesen Regeln gibt es eine überprüfte Erläuterung auf Englisch und Deutsch, die die Tools neben dem Befund zeigen. Jede wurde mit einer Testdatei, die sie verletzt, gegen den offiziellen Validator geprüft.

RegelStufeBedeutung
BR-DE-1FehlerZahlungsanweisungen fehlen
BR-DE-2FehlerDer Ansprechpartner des Verkäufers fehlt
BR-DE-3FehlerDer Ort des Verkäufers fehlt
BR-DE-4FehlerDie Postleitzahl des Verkäufers fehlt
BR-DE-5FehlerDer Ansprechpartner des Verkäufers fehlt
BR-DE-6FehlerDie Telefonnummer des Ansprechpartners fehlt
BR-DE-7FehlerDie E-Mail-Adresse des Ansprechpartners fehlt
BR-DE-8FehlerDer Ort des Käufers fehlt
BR-DE-9FehlerDie Postleitzahl des Käufers fehlt
BR-DE-10FehlerDer Lieferanschrift fehlt der Ort
BR-DE-11FehlerDer Lieferanschrift fehlt die Postleitzahl
BR-DE-15FehlerDie Käuferreferenz (Leitweg-ID) fehlt
BR-DE-16FehlerDie Umsatzsteuer-ID oder Steuernummer des Verkäufers fehlt
BR-DE-17WarnungDer Rechnungstyp ist keiner, den XRechnung erwartet
BR-DE-19WarnungDas Zahlungskonto ist keine gültige IBAN
BR-DE-23-aFehlerEine Überweisung nennt kein Konto
BR-DE-23-bFehlerEine Überweisung enthält auch Karten- oder Lastschriftangaben
BR-DE-24-aFehlerEiner Kartenzahlung fehlen die Kartenangaben
BR-DE-24-bFehlerEine Kartenzahlung enthält auch ein Konto oder eine Lastschrift
BR-DE-27WarnungDie Telefonnummer des Ansprechpartners hat weniger als drei Ziffern
BR-DE-28WarnungDie E-Mail-Adresse des Verkäuferkontakts scheint ungültig
BR-TMP-2FehlerDer Ort eines rechnungsbegründenden Dokuments ist keine absolute URL
BR-DE-TMP-32HinweisKein Liefer- oder Leistungsdatum angegeben
PEPPOL-EN16931-R001FehlerDer Geschäftsprozess fehlt
PEPPOL-EN16931-R008FehlerDas Dokument enthält ein leeres Element
PEPPOL-EN16931-R010FehlerDie elektronische Adresse des Käufers fehlt
PEPPOL-EN16931-R020FehlerDie elektronische Adresse des Verkäufers fehlt
PEPPOL-EN16931-R046FehlerDer Nettopreis ist nicht der Bruttopreis abzüglich Rabatt
PEPPOL-EN16931-R110FehlerEin Positionszeitraum beginnt vor dem Abrechnungszeitraum
PEPPOL-EN16931-R111FehlerEin Positionszeitraum endet nach dem Abrechnungszeitraum
PEPPOL-EN16931-R120WarnungEin Positionsnettobetrag passt nicht zu Menge und Preis
PEPPOL-EN16931-R121FehlerDie Basismenge des Preises ist null
PEPPOL-EN16931-R130FehlerDie Basismenge des Preises hat eine andere Einheit

Anzeige

POST /tools/v2/invoice/view liest ein UBL- oder CII-Dokument in das Modell invoice-view/2: Beteiligte, Positionen, Umsatzsteueraufschlüsselung, Summen und Zahlungsangaben des Dokuments, jeder Wert als genaue Zeichenfolge aus der Quelle, mit seinem XML-Pfad und seiner Zeile. Datumsangaben in CII werden anhand ihres Formatcodes gelesen; ein Datum in einem Format, das sich nicht sicher lesen lässt, bleibt wie geschrieben, mit einem Hinweis. Ein Betrag ohne eigene Währung hat keine: Die Dokumentwährung wird nie angenommen. Alles, was das Modell nicht zeigt, wird in unshown_elements gezählt, und die ersten davon werden in Hinweisen genannt, sodass eine unvollständige Lesung das auch sagt. Die Anzeige validiert nie.

Problem-Antworten

CodeWann
family_mismatchDas Dokument gibt eine andere Familie an als die genannte; detected sagt, welche.
family_undetectedEs wurde keine Familie genannt, und das Dokument gibt keine an, die Ironfang erkennt.
unsupported_variantDie XRechnung-Extension oder CVD.
unsupported_document_typeKeine Rechnung und keine Gutschrift, oder eine Art, die der genannten widerspricht.
scope_unavailableEin PDF, oder für XML wurde ein hybrider Umfang angefordert.
payload_too_largeXML über 5 MiB.
idempotency_conflictDer Idempotency-Key wurde für andere Bytes oder eine andere Auswahl verwendet.
validator_unavailable, validation_timeout, internal_errorKein Ergebnis: unbestimmt und nicht berechnet. Wiederholen Sie die Anfrage.