@jasy/cli
@jasy/cli
The terminal for ZUGFeRD & XRechnung. Read, validate and export any e-invoice PDF.
Headless for scripts and CI, interactive when you want to look. 100% local - no upload, no account.
npx @jasy/cli · MIT
Don't believe us. Point it at your own invoice.
npx @jasy/cli validate ./your-invoice.pdf
That ✓ runs the same official KoSIT Schematron + veraPDF the big tools use - the EN 16931 and
the German XRechnung (BR-DE) rules, plus PDF/A-3. It exits non-zero when invalid, so it drops straight
into CI. Your file, your terminal, in seconds.
Java has Mustang. PHP has horstoeko. Python has factur-x. Node had nothing. Now it has jasy.
Everything it does
jasy read invoice.pdf # identify + show: parties, line items, totals (CII and UBL)
jasy validate invoice.pdf # EN 16931 + XRechnung + PDF/A (exit 1 if invalid)
jasy export invoice.pdf -o x.xlsx # read it back to JSON, TXT or Excel
jasy # the interactive terminal: open, inspect, export
Reads CII and UBL, real third-party invoices included - not just invoices we made ourselves.
The full ISO PDF/A check, optional and guided
Structural PDF/A-3 checks run built-in. For the complete ISO 19005 verdict, jasy wires up the
official veraPDF for you - no account, into ~/.jasy/verapdf:
jasy verapdf # a doctor: is Java here? is veraPDF here? what to run if not
jasy verapdf --install # downloads + installs it locally (the one requirement is a Java runtime)
Once present, jasy validate adds the full ISO check automatically. It is never a gate - your own
structural checks carry the everyday case.
Under the hood
- Schematron, local - the official EN-16931 + XRechnung rules run via saxon-js (the real XSLT, in pure JS). No upload, DSGVO-safe.
- Excel by hand - the
.xlsxis a ZIP we build ourselves, deflated with our own writer and CRC32. - Reads multi-file PDFs - pulls the right e-invoice XML out even when a tool embedded its own JSON too.
- Generates with
@jasy/zugferdon the hand-rolled@jasy/pdfengine.
MIT · part of jasy