Validate and parse XRechnung, ZUGFeRD and Factur-X through two endpoints — maintained against format updates so your team doesn't have to.
EN 16931 (BR, BR-CO), XRechnung (BR-DE, Leitweg-ID) and French rules (SIREN/SIRET, VAT) — every finding with a rule id and explainer page.
UBL, CII or hybrid PDF in — normalized EN 16931 JSON out. One schema for all formats, amounts as decimal strings.
Error messages in English, German or French (?lang=en|de|fr) — pass them straight to your end users.
The identical container image runs in your infrastructure — invoice data never leaves your network. One binary, no database.
curl -s -X POST "https://api.billhorse.com/v1/validate?lang=en" \
-H "Authorization: Bearer $BILLHORSE_API_KEY" \
--data-binary @invoice.pdf
{
"valid": false,
"profile": { "label": "Factur-X EN 16931", "en16931": true },
"findings": [
{ "id": "BR-CO-16", "severity": "error",
"expected": "178.50", "actual": "170.00", ... }
]
} Tested against the official KOSIT test suite (86/86) and the FNFE Factur-X corpus (7/7). Processing happens in memory only — invoices are never stored.
We're onboarding 3–5 design partners: early access, influence on the API design, permanent preferred terms. One e-mail is enough.
[email protected]