100% GoBD Compliant • XRechnung 3.0

Electronic Invoices.
Seen with Crystal Clarity.

Instantly open, validate, and repair XRechnung and ZUGFeRD files. Smart Repair engine with full audit trail. No registration required.

Open Viewer
Free to use No data stored GDPR compliant

Everything you need for
e-Invoice compliance

Built specifically for German accounting workflows. From parsing to archiving.

Smart Repair Engine

Don't just see errors — fix them. Our inline editor detects missing VAT IDs, arithmetic inconsistencies, and mandatory fields, then generates a corrected XML with a GoBD-ready audit trail.

GoBD Compliant

Full audit trail for every validation and repair, fulfilling German tax office requirements.

Zero Data Retention

Your sensitive financial documents never leave your session. Files processed entirely in-memory.

Batch Processing

Drop a ZIP file of multiple XMLs and process them all at once. Perfect for month-end accounting.

PRO

DATEV CSV Export

Export invoice data as semicolon-separated CSV, ready for direct import into DATEV accounting software.

PRO

Simple, transparent pricing

Start free. Upgrade when you need unlimited processing and archiving.

Free

For quick invoice checks

€0/month
  • 2 invoices per 24 hours
  • Parse & Validate XML
  • Single Smart Repair
  • PDF & Print Export
  • Batch ZIP Processing
  • DATEV CSV Export
  • GoBD Vault (History)
  • No Advertisements
Get Started Free
Most Popular

Pro

For accountants & businesses

€4.99/month
  • Unlimited invoices
  • Parse & Validate XML
  • Unlimited Smart Repair
  • PDF & Print Export
  • Batch ZIP Processing
  • DATEV CSV Export
  • GoBD Vault (History)
  • No Advertisements

What Is XRechnung — and Why Do You Need a Viewer?

XRechnung is the German standard for electronic invoices (e-invoices) in the B2G (Business-to-Government) sector, based on the European standard EN 16931. Since 27 November 2020, suppliers invoicing federal government agencies must submit invoices exclusively in the XRechnung format. From 2025, this obligation is being progressively extended to cover B2B (Business-to-Business) transactions.

An XRechnung is a pure XML file — not human-readable without specialized tools. Our XRechnung Viewer translates these machine-readable data into a clear, structured display: you instantly see the seller, buyer, line items, tax amounts, and all mandatory fields. Errors are highlighted in color, and the Smart Repair engine automatically suggests corrections.

Whether you are an accountant, tax advisor, ERP developer, or public procurement officer: this tool lets you inspect XRechnung files directly in your browser — no installation, no server upload, fully GDPR-compliant.

Step by Step: How to Inspect an XRechnung File

The tool supports XRechnung UBL 2.x/3.0, XRechnung CII, and ZUGFeRD 2.x files. Here is how to use it:

  1. Upload the FileDrag your .xml file into the drop zone or click «Choose File». ZIP archives containing multiple invoices are supported for Pro users.
  2. Review the ValidationThe viewer parses the XML structure and checks all mandatory fields against EN 16931 and the German core requirements (e.g. Leitweg-ID, VAT ID, IBAN). Errors are shown with the corresponding KOSIT error code.
  3. Use Smart RepairFor known error types, the Smart Repair engine suggests an automatic fix. Click «Repair» to download the corrected XML file. The repair log is saved in the GoBD Vault (Pro).
  4. ExportExport the view as a PDF or print it directly. Pro users can additionally generate a DATEV-compatible CSV file.

All data is processed exclusively in the browser. No upload to external servers takes place — your invoice data stays entirely under your control.

How the XRechnung Viewer Works Technically

Processing happens entirely client-side in your browser using the Web File API and XML parsing (DOMParser). The XML file is converted into a DOM tree, validated against the EN 16931 schema (German subset), and transformed into an internal data object.

The Smart Repair engine contains repair rules for the most common error types: missing or incorrectly formatted Leitweg-ID (BR-DE-1), missing payment means (BR-DE-13), invalid VAT ID formatting, rounding errors in tax amounts (>0.01 €), and non-compliant ISO 4217 currency codes. Every automatic change is stored as an immutable log entry in the GoBD Vault.

ZUGFeRD files are extracted as embedded XML from the PDF/A-3 container (PDF.js) and then processed with the same validation workflow. The system supports ZUGFeRD 2.1 (profiles BASIC, EN 16931, EXTENDED) and FacturX.

Common Use Cases

Accountants & Tax Advisors

Check incoming supplier invoices for completeness and correctness before posting. Detect missing VAT IDs or invalid tax amounts before the tax office queries them.

ERP & Software Developers

Test XRechnung files generated by your ERP system against official Schematron rules. See the exact error code and the affected XML element at a glance.

Public Procurement Officers

Validate incoming XRechnungen from suppliers for formal correctness and route them back for correction if needed. Leitweg-ID validation at the click of a button.

Suppliers & Freelancers

Pre-validate your own invoices before submitting them to the government portal (ZRE, OZG-RE) and ensure no mandatory fields are missing.

Example: Minimum Valid XRechnung (UBL)

The following XML structure shows the minimum fields required for a compliant XRechnung 3.0 in UBL format. Mandatory fields per EN 16931 and the German extensions are highlighted.

<?xml version="1.0" encoding="UTF-8"?>
<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
             xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
             xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
  <!-- Group 1: Invoice Header -->
  <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0</cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
  <cbc:ID>RE-2024-0042</cbc:ID>           <!-- BT-1: Invoice Number -->
  <cbc:IssueDate>2024-03-15</cbc:IssueDate><!-- BT-2: Invoice Date -->
  <cbc:DueDate>2024-03-29</cbc:DueDate>   <!-- BT-9: Due Date -->
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode><!-- BT-3: Invoice Type -->
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode><!-- BT-5 -->
  <cbc:BuyerReference>991-123456-41</cbc:BuyerReference><!-- BT-10: Leitweg-ID (DE mandatory) -->

  <!-- Group 2: Seller -->
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cac:PartyName><cbc:Name>Sample GmbH</cbc:Name></cac:PartyName>
      <cac:PostalAddress>
        <cbc:StreetName>Sample Street 1</cbc:StreetName>
        <cbc:CityName>Berlin</cbc:CityName>
        <cbc:PostalZone>10115</cbc:PostalZone>
        <cac:Country><cbc:IdentificationCode>DE</cbc:IdentificationCode></cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>DE123456789</cbc:CompanyID><!-- BT-31: Seller VAT ID -->
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:PartyTaxScheme>
    </cac:Party>
  </cac:AccountingSupplierParty>

  <!-- Group 3: Buyer -->
  <cac:AccountingCustomerParty>
    <cac:Party>
      <cac:PartyName><cbc:Name>Federal Ministry Example</cbc:Name></cac:PartyName>
    </cac:Party>
  </cac:AccountingCustomerParty>

  <!-- Payment Information -->
  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
    <cac:PayeeFinancialAccount>
      <cbc:ID>DE89370400440532013000</cbc:ID><!-- BT-84: IBAN -->
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>

  <!-- Tax Total -->
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="EUR">190.00</cbc:TaxAmount>
  </cac:TaxTotal>

  <!-- Document Totals -->
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="EUR">1000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="EUR">1190.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="EUR">1190.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>

  <!-- Invoice Line -->
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="HUR">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Name>Consulting Service</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>19</cbc:Percent>
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price><cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount></cac:Price>
  </cac:InvoiceLine>
</ubl:Invoice>

This example satisfies all mandatory fields per XRechnung 3.0 (CustomizationID for KOSIT compliance, Leitweg-ID in BT-10, VAT ID in BT-31). Upload it in the viewer to see the validation result.

Tips & Common Mistakes

Best Practices

  • Always provide the Leitweg-ID in element BT-10 (cbc:BuyerReference) — it is mandatory in Germany (BR-DE-1) even though the EU standard treats it as optional.
  • Set the CustomizationID to the exact XRechnung 3.0 string: urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0
  • Always use ISO 8601 date format (YYYY-MM-DD) — the American MM/DD/YYYY format causes validation errors.
  • Round tax amounts to exactly 2 decimal places and keep them arithmetically consistent: Net × Tax Rate = Tax Amount (deviation ≤ 0.01 €).
  • ZUGFeRD files must be PDF/A-3. Regular PDFs with embedded XML are rejected by most government portals.
  • Provide the IBAN without spaces in element BT-84 (e.g. DE89370400440532013000 instead of DE89 3704 0044 0532 0130 00).

Known Limitations

  • The free tier is limited to 2 invoices per 24 hours. For production use, we recommend the Pro tier.
  • PDF invoices without embedded XML (plain PDF) are not supported — only PDF/A-3 with ZUGFeRD attachment.
  • Automatic repair covers the most common ~30 error types. Complex Schematron errors require manual correction in the XML.
  • Files over 5 MB may be processed more slowly in the browser — for very large batches, consider the desktop client or API.

Frequently Asked Questions about XRechnung

What is the Leitweg-ID and why is it mandatory in Germany?

The Leitweg-ID is a unique identifier that routes the invoice to the correct recipient (typically a government agency) in the German e-invoice system. It is transmitted in XML element BT-10 (cbc:BuyerReference). While the EU standard EN 16931 treats this field as optional, German extension rule BR-DE-1 makes it mandatory. A missing or incorrectly formatted Leitweg-ID will result in rejection by the government portal (ZRE or OZG-RE). The format is: {prefix}-{number}-{check digit}, e.g. 991-12345-06.

What is the difference between UBL and CII syntax in XRechnung?

XRechnung supports two XML syntaxes: UBL (Universal Business Language, ISO/IEC 19845) and CII (UN/CEFACT Cross Industry Invoice, D16B). Both syntaxes are semantically equivalent and fully EN-16931-compliant — they differ only in XML structure and namespaces. UBL uses the namespace urn:oasis:names:specification:ubl:schema:xsd:Invoice-2, CII uses urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100. Most German government portals accept both syntaxes. ZUGFeRD 2.x uses CII exclusively.

How does KOSIT validation work?

KOSIT (Koordinierungsstelle für IT-Standards) is the official body responsible for XRechnung standardization and validation in Germany. KOSIT publishes Schematron rules and XSD schemas against which XRechnung files are checked. Our viewer implements the same validation rules and displays error codes in KOSIT format (e.g. BR-DE-1, BR-DE-13). For official KOSIT validation before submitting to a government portal, we also recommend the official KOSIT Validator.

When does the B2B e-invoice mandate come into effect?

The German Wachstumschancengesetz (March 2024) mandates the gradual introduction of e-invoicing in the German B2B sector: From 1 January 2025, all companies must be technically able to receive structured e-invoices. From 1 January 2027, companies with annual turnover above €800,000 must issue e-invoices. From 1 January 2028, the issuance obligation applies to all VAT-registered companies regardless of turnover. Transitional solutions (PDF by email) remain permissible in certain constellations until these dates.

What is the difference between XRechnung and ZUGFeRD?

XRechnung is a pure XML format (UBL or CII) with no visual component. ZUGFeRD is a hybrid format: it combines a human-readable PDF/A-3 document with an embedded XML file (always CII syntax). Both formats are EN-16931-compliant. XRechnung is required for B2G invoices to federal agencies. ZUGFeRD is commonly accepted in the B2B sector and for state government agencies. Our viewer supports both formats.

How is data handled in terms of GDPR and GoBD?

All processing happens exclusively in the browser (client-side). Your invoice data is never transmitted to or stored on external servers. There is no server-side database containing your invoice content. GoBD compliance refers to the audit trail of the Smart Repair function: every automatic change is logged with a timestamp, user ID, and change description, and stored immutably in the GoBD Vault (Pro feature).

Which government portals accept XRechnung?

The main German e-invoice receiving portals are: ZRE (Zentrale Rechnungseingangsplattform des Bundes, zre.bund.de) for federal agencies; OZG-RE (Onlinezugangsgesetz-Rechnungseingang) for state and municipal governments; and PEPPOL (Pan-European Public Procurement Online), which transmits XRechnung as PEPPOL BIS Billing 3.0. Many federal states also run their own portals (e.g. eRechnung Bayern, eRechnungsportal Baden-Württemberg). Our viewer checks whether your file meets the minimum requirements for all these portals.

What does error code BR-DE-1 mean?

BR-DE-1 is a German extension business rule stating: 'An invoice shall have a Buyer reference' (BT-10, cbc:BuyerReference). This error occurs when the BuyerReference element is missing or empty. Solution: Ask the recipient (agency, client) for the correct Leitweg-ID and enter it in the corresponding field. Our Smart Repair engine can detect this error and provides an input field to add the missing value.

Does the viewer support invoices from other EU countries?

Yes. Since XRechnung is based on the European standard EN 16931, EN-16931-compliant invoices from other EU countries (e.g. Peppol BIS Billing from Austria, the Netherlands, or Scandinavia) are generally compatible and will be validated. Country-specific extension rules (e.g. Austrian ÖNORM A 6369) are shown as informational notices, but do not cause errors in the German context.

Further Reading