Generate and validate XRechnung and ZUGFeRD / Factur-X invoices with a simple JSON API. Instant API key. Real documentation. No sales call, no €495/month minimum.
EU e-invoicing mandates are rolling out country by country. Every business — and every SaaS that issues invoices for its users — needs structured, schema-valid e-invoices. Most don't want to read 200 pages of EN 16931.
All businesses must be able to receive e-invoices (B2B).
Mandatory e-invoicing for large & mid-size enterprises; all businesses must receive.
Businesses > €800k turnover must issue e-invoices.
Issuing mandatory for everyone. ViDA digital reporting follows EU-wide.
This playground generates a real XRechnung 3.0 (UBL) document and runs structural EN 16931 checks on it — client-side, no backend. The production API adds full KoSIT Schematron validation, ZUGFeRD / Factur-X hybrid PDFs, and Peppol delivery.
// Fill the form and press Generate.
// You get a real UBL 2.1 / XRechnung 3.0 document.Generate a document to see the validation report.
Runs entirely in your browser — nothing you type leaves this page. The API adds full KoSIT Schematron validation.
Get your API key→Three endpoints. Stripe-quality docs. Client libraries for Python, Node, PHP, Go. That's the product.
Sign up, get a key, first call in under 5 minutes. The exact opposite of "book a demo".
Full KoSIT Schematron + EN 16931 schema. Errors come back as humans-can-fix-this messages, not rule codes.
XRechnung & ZUGFeRD first (Germany), Factur-X (France, Sept 2026), then FatturaPA, Peppol BIS as ViDA lands.
Every other validator hands you a Schematron rule code and wishes you luck. We return the rule, the path in your JSON, what's wrong, and how to fix it.
[error] BR-DE-15 | XRechnung_3.0 | severity=fatal cvc-complex-type.2.4.b: The content of element 'cac:PartyIdentification' is not complete. One of '{urn:oasis:names:specification:ubl:schema:xsd: CommonBasicComponents-2}ID' is expected. (line 47, col 28)
{
"valid": false,
"format": "xrechnung-3.0",
"profile": "XRechnung 3.0.2 (UBL 2.1)",
"tier": "schematron",
"counts": {
"errors": 1,
"warnings": 0
},
"issues": [
{
"severity": "error",
"rule": "BR-DE-15",
"path": "invoice.buyer_reference",
"message": "Leitweg-ID is missing. Public-sector buyers in Germany require one (BT-10).",
"fix": "Ask the buyer for their Leitweg-ID. Format: 04011000-1234512345-06",
"docs_url": "https://docs.normbill.com/rules/BR-DE-15",
"location": "/ubl:Invoice/cbc:BuyerReference"
}
]
}Incumbents start around €495/month with annual contracts. We start free.
metadata on every invoice, and webhooks for validation results. Your users never see normbill — they just get compliant invoices out of your product.POST /v1/peppol/send is on the v2 roadmap via a certified partner access point. Generation and validation come first — that's the part every team needs on day one.422 with line-level errors: the rule that fired, the path in your JSON that caused it, a plain-language message, and a suggested fix. The API never silently returns an invalid document.The Free plan includes 50 invoices per month — generate and validate XRechnung documents with test and live keys. No sales call, no contract, no credit card.