Skip to main content
ARVELEHT

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.