Stampbench for Germany — XRechnung and ZUGFeRD
The deepest coverage in the product. The German CIUS runs 56 rules: the 40 European core rules plus 16 BR-DE rules covering the Leitweg-ID, the buyer reference, seller contact details and the German payment-means requirements. Both syntaxes German invoices actually arrive in are read — UBL and the CII XML inside ZUGFeRD / Factur-X — and generation emits the XRechnung 3.0 customization id.
Start here
Run an XRechnung through it, get the rule id, the business term and the line number, and repair the arithmetic errors in place.
What works here today
Available now, no account needed to try any of it.
Invoice validation
40 EN 16931 core rules, including the full BR-S/E/AE/Z/G/O VAT category families. Every violation carries the rule id, the business term and the line it failed on.
Reads both XML syntaxes
UBL 2.1 and UN/CEFACT CII (the syntax ZUGFeRD and Factur-X carry), auto-detected from the document.
Deterministic repair
Totals and VAT amounts that disagree with the figures they are computed from have exactly one right answer, so Stampbench corrects them in your file. Anything it cannot derive is handed back to a person.
Invoice creation from JSON
Send lines with quantities, prices and VAT categories; Stampbench computes the totals and the VAT breakdown, then emits UBL 2.1.
German XRechnung profile
A further 16 BR-DE rules on top of the European core — the Leitweg-ID, buyer reference and contact requirements German public buyers enforce.
CLI, hosted API and CI
The same engine as an npm library, a CLI, a hosted REST API and a GitHub Action that annotates the failing line in a pull request.
A domestic ruleset for this country
A national customisation of EN 16931 (a CIUS) with its own rules, on top of the European core.
Not implemented
Listed so you can rule Stampbench out quickly if this is what you needed.
Deciding which tax rate to charge
Stampbench checks that the tax figures in a document are internally consistent and correctly declared. It does not decide which rate applies to a transaction.
Sending invoices over a network
Transmission through Peppol or a national exchange. Stampbench validates and produces documents; delivering them is someone else’s job today.
On the command line
The same engine, as an npm package. The header line names the ruleset that ran, so a result is never ambiguous about what it was measured against.
$ npx stampbench validate invoice.xml --profile xrechnung
invoice.xml syntax: UBL | profile: xrechnung | ruleset: 2026-08.2
ERROR BR-CO-17 VAT breakdown S @ 7%: tax amount should be
22.04 (314.86 × 7%) but is 99.99. (line 78)
INVALID — 1 error, 0 warnings (56 rules run)Other markets
Compare every market side by side, gaps included.