AnnehmbarBeta

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.