One JSON invoice model in, any EU e-invoice format out — UBL 2.1, UN/CEFACT CII, XRechnung 3.0, Factur-X — pre-validated against the official EN 16931 rules. Free tier, transparent pricing, instant API key.
I build an EU e-invoicing API, and the uncomfortable part of that
is that the code generating a document and the code validating it are the same
codebase, written by the same person. If I get an assumption wrong, both sides
are wrong the same way and every document passes.
So I wired up the official CEN conformance corpus and then ran my output
through KoSIT's validator — the actual jar German public-sector receivers run.
It rejected my CII output on an XML Schema violation: I was emitting address
fields out of the sequence order the UN/CEFACT schema requires.
The bit I found genuinely interesting: Schematron runs on top of a document
that's already assumed schema-valid, so my validator was faithfully checking
business rules against XML that wasn't well-formed per the spec, and reporting
"valid". No amount of running my own validator would ever have caught it.
Same serializer feeds my Factur-X PDFs, so that shipped the same defect
silently for months.
Happy to answer anything about EN 16931, Schematron, or PDF/A-3 - it's a
weirdly deep rabbit hole.