Skip to main content
Introducing packages.sweber.dev
Summand overview

SummandLive demo, free and Pro.

The first two sections run the real @sweberdev/summand build in your browser: the XPath and Schematron engine with the official CEN and KoSIT rules, the PDF reader and the Leitweg-ID check. The Pro section shows output of the real Pro packages for a few sample invoices.

Your invoice never leaves your browser. Nothing is uploaded or stored.

Summand checks invoices technically against EN 16931 and XRechnung. It does not check XML schemas yet, and it is not tax advice.

Validate

Check an e-invoice against the official rulesEN 16931 and XRechnung.

Drop an XRechnung or ZUGFeRD / Factur-X file, or pick a sample. Summand finds the syntax and profile, applies the matching rule sets and lists every finding with rule, line and XPath.

Samples:
Drop an XML or PDF invoice here, or

Loading Summand and the rule sets…

Leitweg-ID

Check the address of a German public buyerISO 7064 check digits.

German public authorities are addressed by a Leitweg-ID in the buyer reference (BT-10). A typo means the invoice is rejected. Summand checks the structure and the two check digits.

Loading Summand and the rule sets…

Pro

Read, show and process invoices in bulkSummand Pro.

Summand Pro turns invoices into typed data, renders them for people and validates whole inboxes. Below is real output of summand-view and summand-inbox for the sample invoices.

summand-view: the invoice with errors as readable HTML, with its validation report

The ZUGFeRD sample in German

summand-inbox on a folder of six files

$ npx summand-inbox incoming --html report.html --audit-log audit.jsonl
ok   incoming/2026-10/lieferant-471102.pdf
ok   incoming/2026-10/mustermann-18383.xml
ok   incoming/2026-10/mustermann-18383_cii.xml  duplicate of incoming/2026-10/mustermann-18383.xml
FAIL incoming/2026-10/mustermann-18383_resent.xml  1 error(s), 1 warning(s)  duplicate of incoming/2026-10/mustermann-18383.xml
ERR  incoming/2026-10/scan-0815.pdf  The PDF contains no embedded invoice XML. A ZUGFeRD / Factur-X invoice must embed the XML (for example factur-x.xml); a plain PDF is not an e-invoice.
ok   incoming/2026-10/stadtwerke-2026-10.xml
6 file(s): 4 valid, 1 invalid, 1 unreadable, 2 duplicate(s), 1 warning(s)

summand-read: one typed object for UBL and CII

import { readInvoice } from "@weber-development/summand-read"

const invoice = readInvoice(bytes) // UBL, CII or ZUGFeRD PDF

invoice.seller.vatId              // "DE 123456789"     BT-31
invoice.buyerReference            // "04011000-12349-88" BT-10
invoice.totals.payable            // "233.00"           BT-115
invoice.payment.creditTransfers   // [{ accountId: "DE79…", bic: "DRESDEFFXXX" }]
invoice.lines.map((l) => [l.item.name, l.quantity, l.unit, l.netAmount])

Two lines of the audit log: each line carries the SHA-256 of the file and a chain value over the line before

{
  "time": "2026-10-05T20:05:23.662Z",
  "file": "incoming/2026-10/lieferant-471102.pdf",
  "sha256": "05b5a382db8fdc60d1e9ec31fef7fb09c91d68413b9187f7ca116aed116ed1d0",
  "size": 37897,
  "status": "valid",
  "errors": 0,
  "warnings": 0,
  "errorIds": [],
  "number": "471102",
  "issueDate": "2024-11-15",
  "seller": "Lieferant GmbH",
  "sellerVatId": "DE123456789",
  "payableAmount": "529.87",
  "currency": "EUR",
  "ruleSets": [
    "EN 16931 validation artefacts (UN/CEFACT CII) 1.3.16"
  ],
  "chain": "911520726f5c04de09bbc52354d0392db48b288e8c264f5ab05e655fe5028f7b"
}
{
  "time": "2026-10-05T20:05:23.762Z",
  "file": "incoming/2026-10/mustermann-18383.xml",
  "sha256": "8ed131cc276bb37d160ffc243dee9eade601de9ed04392ab38eac5ce26e9ac77",
  "size": 6839,
  "status": "valid",
  "errors": 0,
  "warnings": 0,
  "errorIds": [],
  "number": "18383",
  "issueDate": "2020-11-27",
  "seller": "Mustermann GmbH",
  "sellerVatId": "DE 123456789",
  "payableAmount": "233.00",
  "currency": "EUR",
  "ruleSets": [
    "EN 16931 validation artefacts (UBL) 1.3.16",
    "XRechnung Schematron (UBL), XRechnung 3.0 2.6.0"
  ],
  "chain": "34984313b72ecb517a540adda3a0bf9aa2ce4143c358ce11232bd9eae28209bf"
}

The HTML report of the same run

Pricing and licences

Next step

Validate invoices where they arriveMIT licensed.

Install @sweberdev/summand and call validateInvoice in your upload route, your mail handler or your CI. The getting started guide takes five minutes.

Getting started