Your Softr invoice record, turned into a valid German E-Rechnung

One invoice record with its linked line items goes in. A legally-valid XRechnung 3.0.2 file comes out, checked against the official validator.

Runs in your browser right now No login No backend Synthetic data only

This whole page is static. The generator below is a single file, xrechnung.mjs, running client-side. There is no service of mine in the loop. Every figure on this page is made up.

Step 1 · your data shape

A Softr invoice record, connected to its invoice items
Linked collection Invoice Items
ItemQtyUnitNet priceVAT

Step 2 · generate

Record to XRechnung 3.0.2 (UBL) XML

Step 3 · the receipt

Validated by the official KoSIT validator
Accepted: 0 errors, 0 warnings
Schema valid (UBL Invoice)
Schematron valid (EN16931 + BR-DE rules)
Scenario accepted

Reproduce it yourself: the exact validator version, config, and command are in the runbook below.

Step 4 · yours to keep

The generator is a file you own, not a subscription

Zero dependencies. Use it however you like, keep it running wherever you like. Nothing here phones home.

Step 5 · into your Softr workflow

Where this sits
  1. A Softr workflow fires when you mark an invoice record ready.
  2. It hands the invoice fields + linked items to a code step (a Cloudflare Worker you own, an n8n / Make Function node, or any JavaScript runtime).
  3. That step calls softrRecordToXRechnung(record) and gets the XML back.
  4. You write the XML onto an attachment field, or email it. The XML file is the E-Rechnung.

XRechnung vs ZUGFeRD: this produces XRechnung (pure XML), a complete E-Rechnung on its own. The ZUGFeRD hybrid (a PDF/A-3 with the XML embedded) is a bounded add-on to the same generator, not a rebuild. The runbook covers it.