API / Batch

API docs

Status: single-file API is live and free. Batch stays on the waitlist.

POST /v1/validate checks one file, with no API key. Free up to 50 validations per IP per UTC day, and at most 10 per minute. Above that the response is 429 with Retry-After.

Batch and higher volume: from €79/month. Joining the waitlist is free; you are charged only after confirmation.

Join the waitlist · info@bobook.club

What it checks

XRechnung XML (UBL and CII), and a ZUGFeRD PDF when an XML is embedded. The engine is the KoSIT validator with the official XRechnung configuration.

Result

Rule code (BR-…), location, and a German fix hint. The site shows these classes: pass, valid with warnings, reject, not an e-invoice, format unclear.

Limits

Privacy

Invoice files (XML/PDF) are processed only in the memory of that HTTP request. They are not written to disk, not logged as XML, and not sent to a language model. After the response the file is discarded (persisted: false).

Technical events contain no file contents, only metadata (byte size, type, error count).

Privacy policy (German)

Scope

A file can pass here and still be rejected by ZRE/OZG-RE or another portal (portal and bank overlays). No Peppol access point, no invoice editor, no portal submit, no legal or tax advice.

Request

curl -F "file=@rechnung.xml" https://checkxrechnung.com/v1/validate

Example response

Against invalid-xrechnung-ubl.xml: 14 errors. Below is the first one, with the fields POST /v1/validate returns. The website response at /api/validate also has resultClass, sessionId, uploadIndexInSession, sanitized, scenario, recommendation, customization, extractedName and kind.

{
  "ok": false,
  "persisted": false,
  "fileName": "invalid-xrechnung-ubl.xml",
  "bytes": 2496,
  "hasXml": true,
  "syntax": "UBL Invoice",
  "invoiceType": "XRechnung",
  "summary": { "errors": 14, "warnings": 0 },
  "versions": {
    "product": "RechnungCheck",
    "domain": "checkxrechnung.com",
    "xrechnung": "3.0.2",
    "kosit_validator": "1.6.3",
    "kosit_configuration": "2026-08-31",
    "en16931_schematron": "1.3.16"
  },
  "issues": [
    {
      "severity": "error",
      "code": "BR-08",
      "location": "/Invoice",
      "message": "[BR-08]-An Invoice shall contain the Seller postal address.",
      "hint": "Die Verkäuferanschrift (BG-5) fehlt. StreetName, CityName, PostalZone und Country/IdentificationCode setzen.",
      "source": "kosit",
      "rule_url": "https://checkxrechnung.com/fehler/br-08"
    }
  ]
}

Files over 5 MB get 413. The 51st check from one IP on a UTC day, or the 11th in a minute, gets 429 and a link to the waitlist.

ZUGFeRD / Factur-X

POST /v1/zugferd/validate accepts a PDF up to 10 MB. It uses the same free limit as POST /v1/validate: 50 checks per IP per UTC day and 10 per minute, with no API key. The counters are shared across /v1/.

The PDF/A-3 check is a structure check (PDF header, XMP pdfaid:part 3, conformance A/B/U, the embedded XML, and AFRelationship Alternative). If veraPDF is installed, the response sets pdfa.engine to verapdf. Otherwise pdfa.engine is structure and pdfa.label says this is not a full veraPDF validation.

The embedded file is factur-x.xml, zugferd-invoice.xml, or xrechnung.xml. The profile is MINIMUM, BASIC WL, BASIC, EN16931, EXTENDED, or XRECHNUNG. The XML is checked with the EN 16931 CII Schematron 1.3.16 shipped in the KoSIT configuration. Profile XRECHNUNG is also checked with the XRechnung CII Schematron. Each hit includes rule_url when a page exists under /fehler/.

MINIMUM, BASIC WL, and BASIC are subsets of EN 16931, so a correct file of those profiles can fail this Schematron. profileNote says so.

curl -F "file=@factur-x-en16931.pdf" https://checkxrechnung.com/v1/zugferd/validate
curl -F "file=@factur-x-en16931.pdf" https://checkxrechnung.com/v1/zugferd/extract

POST /v1/zugferd/extract returns the embedded XML and a JSON summary (invoice number, date, seller, buyer, totals, profile). The same 10 MB cap and free limit apply. Details: /en/zugferd.

More

Sample files · Error codes · Changelog · llms.txt · openapi.json

Bobook Limited, Venture Hub, 136 Capel Street, Dublin 1, D01 T2C9, Ireland · info@bobook.club