Documentation · DE · XRechnung
How Arveleht handles German XRechnung.
If you invoice a German business, a plain PDF is no longer acceptance evidence under German law. This page is the straight answer: what the mandate is, what Arveleht produces, and what you do with it.
01 · What’s mandated
From 1 January 2025, every business in Germany must be able to receive an e-invoice for B2B transactions (Wachstums- chancengesetz, § 14 UStG). From 1 January 2027, issuers with over €800k turnover must send e-invoices. From 1 January 2028, the obligation applies to everyone. Federal and Land-government purchasers (ZRE / OZG-RE) already reject PDF-only invoices today.
“E-invoice” here means a structured format compliant with EN 16931. The two accepted flavours for Germany are:
- XRechnung 3.0 UBL — pure XML, the preferred format for public-sector portals.
- Factur-X — PDF/A-3 with embedded EN 16931 CII XML, preferred for B2B email delivery because a human can still read the visual layer.
02 · What Arveleht produces
The render pipeline is honest about what it emits. Every invoice submitted on /invoices/new goes through Invopop’s open-source gobl engine + gobl.ubl:
- Normalisation. Your form fields become a bill.Invoice envelope. The DE regime + XRechnung addon apply all §14 UStG business rules (BR-DE-* schematron) before a single byte of XML is written.
- UBL emission. gobl.ubl.Convert returns the XRechnung 3.0.2 document with the correct CustomizationID (urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0) and UN/ECE 5305 tax category codes (S / AE / Z / E).
- Factur-X embedding. A sidecar Python service wraps akretion/factur-x to embed the CII XML into a PDF/A-3 file — same metadata, same business rules, two deliverable artefacts.
- Validation. Every render is re-parsed through ubl.Parse before hand-off so we catch serialisation drift at the source. Outputs are validator-green against the official KoSIT validator v1.6.2 with the XRechnung 3.0.2 scenarios.
Reproduction recipe: docs/evidence/day-4/ in the repo contains the exact CLI invocation plus the Schema: Y, Schematron: Y, Acceptance: ACCEPTABLE report from KoSIT.
03 · What you do with the output
- Federal / Land purchasers
- Upload the XRechnung XML to ZRE (xrechnung.bund.de) or OZG-RE. Most portals accept peppol-submitted UBL too; we’ll wire the Peppol path for DE inline once you request it.
- Private-sector buyer
- Attach the Factur-X PDF to an email and send it to the buyer’s accounts-payable address. The embedded CII is invisible to the human reader and machine-readable to their DATEV / Stotax / Meridian integration.
- Reverse-charge (§13b UStG)
- Select “Reverse-charge” in the VAT treatment dropdown. The rendered document carries the CategoryCode AE and the required TaxExemptionReason (“Reverse Charge / Umkehr der Steuerschuld.”).
04 · What this doesn’t do yet
ZUGFeRD profiles above EXTENDED aren’t wired; we default to the Factur-X EN 16931 profile (a subset of ZUGFeRD 2.x EXTENDED). Peppol submission for DE lands when the first customer asks — the pipeline is ready; it just needs the access-point credential.