Skip to main content
Complyance is Officially Listed as a UAE Approved Accredited Service Provider
E-Invoice Examples Germany: Templates & Downloads 2026

E-Invoice Examples Germany: Templates & Downloads 2026

Swathy
Published on Jul 23, 2026

Germany's B2B e-invoicing mandate is rolling out now. The receiving obligation has been active since January 1, 2025. The sending obligation starts January 1, 2027 for larger businesses and January 1, 2028 for all businesses.

E-Invoice Examples Germany: Templates & Downloads 2026

Germany's B2B e-invoicing mandate is rolling out now. The receiving obligation has been active since January 1, 2025. The sending obligation starts January 1, 2027 for larger businesses and January 1, 2028 for all businesses.

If you are an international business operating in Germany or a developer building invoicing into your product, you need working e-invoice examples right now — actual XML you can open, validate, and ship.

Key Takeaways
- Germany accepts two main e-invoice formats: XRechnung (pure XML) and ZUGFeRD (hybrid PDF/XML).
- Every e-invoice example Germany requires compliance with EN 16931.
- XRechnung is mandatory for B2G invoices and accepted for B2B from 2027.
- ZUGFeRD 2.x embeds structured XML inside a PDF/A-3 file.

What Does a German E-Invoice Actually Look Like?

A German e-invoice is not a PDF you email as an attachment.

According to KoSIT, a valid e-invoice in Germany is a structured electronic document that conforms to the European standard EN 16931. It must be machine-readable. It must contain mandatory fields like seller tax ID, line-item details, and payment terms in a defined schema.

Two formats dominate the German market:

FeatureXRechnungZUGFeRD 2.x
FormatPure XML (UBL or CII)Hybrid PDF/A-3 + embedded XML
Human-readable?NoYes (PDF layer)
Machine-readable?YesYes (XML layer)
B2G mandatory?Yes, since Nov 2020Accepted (EN 16931 profile or higher)
B2B ready for 2027?YesYes
StandardEN 16931 / XRechnung specEN 16931 / ZUGFeRD spec
Maintained byKoSITFeRD / AWV

What Does an XRechnung Example Look Like in XML?

XRechnung is Germany's national implementation of EN 16931. It uses either UBL 2.1 or UN/CEFACT CII syntax.

Here is a simplified e-invoice XML sample for an XRechnung in UBL format:

XML
<?xml version="1.0" encoding="UTF-8"?>
<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
             xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
             xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">

  <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>

  <cbc:ID>INV-2026-001842</cbc:ID>
  <cbc:IssueDate>2026-04-21</cbc:IssueDate>
  <cbc:DueDate>2026-05-21</cbc:DueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>

  <cbc:BuyerReference>BUYER-REF-04821</cbc:BuyerReference>

  <cac:AccountingSupplierParty>
    <cac:Party>
      <cac:PartyName>
        <cbc:Name>Muster GmbH</cbc:Name>
      </cac:PartyName>
      <cac:PostalAddress>
        <cbc:StreetName>Hauptstrasse 12</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>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
    </cac:Party>
  </cac:AccountingSupplierParty>

  <cac:LegalMonetaryTotal>
    <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>

  <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>Software Development Services</cbc:Name>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>

</ubl:Invoice>
Pro Tip: The CustomizationID field is what tells validators this is an XRechnung. Get it wrong and your invoice fails validation immediately.

Notice the BuyerReference field. For B2G invoices in Germany, this is mandatory — it is the "Leitweg-ID" that routes your invoice to the correct government department.

How Does a ZUGFeRD Example Work?

ZUGFeRD embeds structured XML data inside a PDF/A-3 file. Your accountant sees a normal PDF, while your ERP system extracts the machine-readable XML automatically.

ZUGFeRD 2.3.3 supports six profiles:

ProfileUse CaseEN 16931 Compliant?
MinimumBasic header data onlyNo (internal use only)
Basic WLExtended header, no line itemsNo (internal use only)
BasicStandard B2B invoicesYes
EN 16931 (Comfort)Full EU standard complianceYes
ExtendedAdditional business fieldsYes (superset)
XRechnungXRechnung-compliant XML in PDF containerYes

Here is a stripped-down ZUGFeRD example of the embedded CII XML:

XML
<?xml version="1.0" encoding="UTF-8"?>
<rsm:CrossIndustryInvoice
  xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
  xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">

  <rsm:ExchangedDocumentContext>
    <ram:GuidelineSpecifiedDocumentContextParameter>
      <ram:ID>urn:cen.eu:en16931:2017</ram:ID>
    </ram:GuidelineSpecifiedDocumentContextParameter>
  </rsm:ExchangedDocumentContext>

  <rsm:ExchangedDocument>
    <ram:ID>ZF-2026-00293</ram:ID>
    <ram:TypeCode>380</ram:TypeCode>
    <ram:IssueDateTime>
      <udt:DateTimeString format="102">20260421</udt:DateTimeString>
    </ram:IssueDateTime>
  </rsm:ExchangedDocument>

  <rsm:SupplyChainTradeTransaction>
    <ram:ApplicableHeaderTradeAgreement>
      <ram:SellerTradeParty>
        <ram:Name>Muster GmbH</ram:Name>
      </ram:SellerTradeParty>
      <ram:BuyerTradeParty>
        <ram:Name>Beispiel AG</ram:Name>
      </ram:BuyerTradeParty>
    </ram:ApplicableHeaderTradeAgreement>
    <ram:ApplicableHeaderTradeSettlement>
      <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
      <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
        <ram:TaxBasisTotalAmount>1000.00</ram:TaxBasisTotalAmount>
        <ram:GrandTotalAmount>1190.00</ram:GrandTotalAmount>
        <ram:DuePayableAmount>1190.00</ram:DuePayableAmount>
      </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    </ram:ApplicableHeaderTradeSettlement>
  </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>
Important: ZUGFeRD and Factur-X are technically the same format. France's Factur-X and Germany's ZUGFeRD merged in version 2.0.

XRechnung vs ZUGFeRD: Which E-Invoice Template Should You Use?

CriteriaChoose XRechnungChoose ZUGFeRD
Invoicing German governmentRequiredAccepted (EN 16931 profile or higher)
B2B invoicing after Jan 2027AcceptedAccepted
Recipient needs a visual PDFNot idealPreferred
Your ERP supports bothEither worksEither works
Cross-border (France + Germany)Requires mappingNative (Factur-X = ZUGFeRD)
Developer integration effortLowerHigher

How Do You Create Your Own German E-Invoice?

Option 1: Use an API (fastest)

Send JSON. Get valid XRechnung or ZUGFeRD back. Complyance's REST API handles schema validation, tax math, and PDF generation in one call.

Option 2: Use an open-source library

Libraries like mustangproject (Java) or factur-x (Python) let you build invoices in code.

Option 3: ERP or accounting software export

Tools like DATEV, lexoffice, and sevDesk now export XRechnung and ZUGFeRD natively.

Option 4: Manual XML creation

Suitable only for testing and development.

Pro Tip: Always validate against the official KoSIT validator before you send.

Do's and Don'ts for German E-Invoices

DoDon't
Include the Leitweg-ID for B2G invoicesSend a plain PDF and call it an "e-invoice"
Use the correct CustomizationID for XRechnung 3.xCopy an old XRechnung 2.x identifier
Set InvoiceTypeCode to 380 for standard invoicesUse 381 (credit note code) for a regular invoice
Validate XML against the KoSIT schema before sendingAssume your ERP output is always valid
Embed XML as factur-x.xml in PDF/A-3 for ZUGFeRDEmbed it in a regular PDF
Include seller VAT ID (DE • 9 digits)Omit tax registration for domestic invoices
Share

Frequently Asked Questions

Germany requires EN 16931-compliant structured formats. XRechnung and ZUGFeRD 2.x (EN 16931 profile or higher) both qualify. A standard PDF does not count.

No. XRechnung is mandatory only for B2G invoices since November 2020.

Yes, but only with the EN 16931 (Comfort), Extended, or XRechnung profile.

Complyance offers a free e-invoice generator that produces valid XRechnung and ZUGFeRD files. KoSIT also publishes sample XRechnung files.

They are the same format since version 2.0. ZUGFeRD is the German branding; Factur-X is the French branding.

No. The Leitweg-ID is specific to B2G invoices.

The receiving obligation has been in effect since January 1, 2025. The sending obligation phases in from January 1, 2027 for businesses with prior-year revenue above EUR 800,000, and from January 1, 2028 for all businesses.

Yes. If you invoice a German B2B customer, you should send an EN 16931-compliant e-invoice.

Quick Summary

- Use XRechnung for German government invoices. It is pure XML.

- Use ZUGFeRD when your recipient needs a human-readable PDF with embedded structured data.

- Both formats comply with EN 16931 and satisfy Germany's B2B e-invoicing mandate.

About the Author

Swathy

Swathy

Content Marketer

I’m a Content Marketer at Complyance, focused on e-invoicing. Over the years, I’ve created a wide range of content, including blog posts, whitepapers, and product guides, which have supported Complyance’s growth across markets such as the UAE and EU regions. My goal is to deliver content that is comprehensive, clear, accurate, and easy to understand, no matter how complex the topic.

Related Posts

Complyance Logo

One API for Global E-invoicing