XRechnung- und ZUGFeRD-Prüfung per API
E-Rechnungen per HTTP prüfen, aus Ihrer Rechnungssoftware oder CI-Pipeline. Dasselbe Regelwerk wie auf der Website, die Version steht in jeder Antwort.
Schlüssel
Den kostenlosen Beta-Schlüssel bekommen Sie sofort auf der Startseite („API-Schlüssel sofort erhalten“). Limit in der Beta: 500 Prüfungen pro Tag und Schlüssel.
Prüfen
POST https://annehmbar.com/api/validate X-Api-Key: xr_… Content-Type: application/xml <rsm:CrossIndustryInvoice …> oder <Invoice …>
curl -s https://annehmbar.com/api/validate \ -H "X-Api-Key: $XR_KEY" -H "Content-Type: application/xml" \ --data-binary @rechnung.xml
ZUGFeRD-/Factur-X-PDFs gehen genauso (-H "Content-Type: application/pdf" --data-binary @rechnung.pdf): Geprüft wird die eingebettete XML, die Antwort enthält dann "container": {"type": "PDF", "embedded": "factur-x.xml", "profile": "…"}. Eine PDF ohne eingebettete XML liefert UNSUPPORTED mit der ID PDF-ONLY.
ZUGFeRD-/Factur-X-Profile außerhalb der KoSIT (MINIMUM, BASIC WL, BASIC, EXTENDED) prüfen wir nach den offiziellen ZUGFeRD-Regeln (ZUGFeRD 2.5.2). Die Antwort enthält dann "zugferd": {"profile": "BASIC", "version": "2.5.2", "e_invoice": true, …}; e_invoice sagt, ob das Profil in Deutschland als E-Rechnung gilt (MINIMUM und BASIC WL: false, mit der Warnung ZF-PROFILE). ZUGFeRD 1.0 liefert REJECT mit der ID ZUGFERD-1.
Antwort
{
"verdict": "REJECT", // ACCEPT | REJECT | UNSUPPORTED
"scenario": "EN16931 XRechnung (CII)",
"rules": {"config": "v2026-08-31", "published_at": "2026-09-02T14:16:20Z"},
"errors": [{"id": "CII-SR-465", "level": "error", "text": "…", "location": "…"}],
"warnings": [...],
"infos": [...]
}
rules.config ist die offizielle KoSIT-Version, gegen die geprüft wurde. So können Sie in Ihren Protokollen belegen, nach welchem Regelwerk eine Rechnung geprüft wurde.
In CI (z. B. GitHub Actions)
- name: XRechnung prüfen
run: |
for f in fixtures/*.xml; do
v=$(curl -s https://annehmbar.com/api/validate -H "X-Api-Key: ${{ secrets.XR_KEY }}" \
-H "Content-Type: application/xml" --data-binary @"$f" | jq -r .verdict)
echo "$f: $v"; [ "$v" = "ACCEPT" ] || exit 1
done
Regelwerk-Version abfragen
GET https://annehmbar.com/api/rules GET https://annehmbar.com/log.atom (Feed bei neuen Versionen)
Die Rechnungen werden nur im Arbeitsspeicher geprüft und nicht gespeichert. Technische Konformitätsprüfung, keine Steuer- oder Rechtsberatung.