Stampbench
01Validation for software teams

European e-invoicing validationfor your software.

Validate UBL and CII invoices against supported EN 16931-1:2017 and XRechnung 3.0 rules. Return structured diagnostics with rule IDs and source locations inside the workflow your product already uses.

Inspection / invoice-0042.xmlUBL 2.1
Source
38<cac:LegalMonetaryTotal>
39 <cbc:LineExtensionAmount
40 currencyID="EUR">940.00</cbc:LineExtensionAmount>
41 <cbc:TaxExclusiveAmount
42 currencyID="EUR">950.00</cbc:TaxExclusiveAmount>
43</cac:LegalMonetaryTotal>
DiagnosticBlocking
BR-CO-10

Invoice line total mismatch

The stated line total must equal the sum of the invoice line net amounts.

Expected
950.00 EUR
Received
940.00 EUR

line 40 · BT-106 / BT-131

Profile: XRechnung 3.0Rules executed: 56
Specification
EN 16931-1:2017
German profile
XRechnung 3.0
Syntaxes
UBL 2.1 + CII
Runtime
Pure TypeScript
02Validation evidence register

Evidence with its scope attached.

These figures describe the current engine and test corpus. They do not claim complete KoSIT parity or replace an official recipient check.

EvidenceUBLCIIResultScope note
Corpus documents exercised454186 totalOfficial XRechnung corpus
Corpus crashes000Parser stability only
European core rules404040EN 16931-1:2017 subset
German additions161616BR-DE profile rules
03Deployment architecture

The engine goes where the invoice already is.

Use the library inside a browser worker, server process or CI pipeline. Invoice bytes remain inside the execution context your team controls.

import { validateXml } from
'@stampbench/core';

const result = validateXml(xml, {
  profile: 'xrechnung'
});

console.log(result.valid);
console.log(result.violations);
01

Invoice XML

UBL or CII

02

@stampbench/core

Parse and validate

03

Your execution context

Browser · Worker · CI

04

ValidationResult

Structured findings

04Live browser inspection

Change the XML. Run the actual rules.

This preview calls the same validateXml and locateViolations functions used by the full playground.

Validation runs in this browser. The XML is not uploaded.

Payload editorUBL · 94 lines
Diagnostics engine state2 errors
Profile
xrechnung
Rules
56
Syntax
UBL
Ruleset
2026-08.2
BR-CO-10error · line 72

Sum of line net amounts is 950.00 but BT-106 states 940.00.

BT-106 / BT-131exact locationexpected: 950.00received: 940
BR-CO-13error · line 73

Total without VAT (BT-109) should be 940.00 (BT-106 − BT-107 + BT-108) but is 950.00.

BT-109exact locationexpected: 940.00received: 950
IG-DE-W1warning · line 35

Buyer electronic address (BT-49) is missing — Peppol delivery and many workflow systems need it.

BT-49ancestor location
05Current capability ledger

What exists today.

A technical inventory written for architecture review, not a feature-card wall.

01
Syntax parsing
UBL 2.1 and UN/CEFACT CII are auto-detected from the XML document.
02
Semantic validation
40 EN 16931 core rules or 56 rules with the German profile.
03
Source locations
Each finding can carry a line, column, XML path and stated location precision.
04
Deterministic repair
Arithmetic errors with one derivable answer can be repaired without inventing business data.
05
UBL generation
Structured invoice data can be computed and emitted as XRechnung 3.0 UBL.
06
CLI and CI
The same TypeScript engine can run in a process, test pipeline or browser worker.
07
Integration surfaces
Use the MIT library, command-line tool or browser worker inside an existing product workflow.
08
Ruleset versioning
Every validation result identifies the ruleset version and number of rules executed.
06Founding integration pilot

Put the validator inside one real workflow.

A fixed-scope engagement for software teams evaluating Stampbench against their own invoice path. The initial £3,000 price is being tested with early pilot customers.

Discuss a pilot
01

One staging workflow

Integrate the current validator into one defined invoice path in your product.

02

Representative documents

Exercise the integration against an agreed set of UBL or CII invoices from your workflow.

03

Structured diagnostics

Return supported rule IDs, business terms and source locations in a form your product can use.

04

Coverage handover

Document the implemented boundary, acceptance results and anything outside the supported ruleset.

The pilot covers one product and one integration path. It is engineering work and validation tooling, not certification, recipient approval or legal advice. Any continuing support is scoped separately after the pilot.

07Standards scope

Precise about the boundary.

The current engine targets EN 16931-1:2017 and XRechnung 3.0. A new 2026 edition of the European standard is entering migration, so support is described by exact ruleset rather than a timeless claim of full compliance.

Germany’s B2B e-invoicing transition uses different deadlines depending on turnover and transmission method. Stampbench validates invoice structure; it does not decide tax treatment or replace current authority guidance.

Run the document

Inspect the invoice before your customer does.