ValidateFin

UBL Invoice — intra-Community supply (VAT category K)

Eine gültige innergemeinschaftliche Lieferung (USt-Kategorie K): Waren aus Deutschland an einen umsatzsteuerregistrierten Käufer in Frankreich, steuerfrei nach Artikel 138 der Richtlinie 2006/112/EG. Kategorie K verlangt zwei gern vergessene Angaben: BR-IC-11 — ein tatsächliches Lieferdatum (BT-72) oder einen Abrechnungszeitraum — und BR-IC-12 — das Lieferland (BT-80). Ohne sie belegt die Rechnung nicht, dass die Ware das Land verlassen hat.

UBL 2.1 Invoice — Gültig

Eine gültige innergemeinschaftliche Lieferung (USt-Kategorie K): Waren aus Deutschland an einen umsatzsteuerregistrierten Käufer in Frankreich, steuerfrei nach Artikel 138 der Richtlinie 2006/112/EG. Kategorie K verlangt zwei gern vergessene Angaben: BR-IC-11 — ein tatsächliches Lieferdatum (BT-72) oder einen Abrechnungszeitraum — und BR-IC-12 — das Lieferland (BT-80). Ohne sie belegt die Rechnung nicht, dass die Ware das Land verlassen hat.

UBL-Rechnung (Peppol BIS 3.0) UBL 2.1 Invoice EN 16931 / Peppol BIS 3.0Erwartetes Ergebnis: Gültig

Was diese Datei zeigt

Eine gültige innergemeinschaftliche Lieferung (USt-Kategorie K): Waren aus Deutschland an einen umsatzsteuerregistrierten Käufer in Frankreich, steuerfrei nach Artikel 138 der Richtlinie 2006/112/EG. Kategorie K verlangt zwei gern vergessene Angaben: BR-IC-11 — ein tatsächliches Lieferdatum (BT-72) oder einen Abrechnungszeitraum — und BR-IC-12 — das Lieferland (BT-80). Ohne sie belegt die Rechnung nicht, dass die Ware das Land verlassen hat.

Transaktionen1
Summe3.000,00 €
Zuletzt geprüft: Lizenz: CC-BY-4.0

Alle Parteien, IBANs und Beträge unten sind fiktiv. Die IBANs sind strukturell gültig — sie bestehen die Mod-97-Prüfung — gehören aber zu keinem realen Konto.

Dateiinhalt

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ValidateFin sample file — UBL invoice, Peppol BIS Billing 3.0 (EN 16931).
  INTRA-COMMUNITY SUPPLY (VAT category K): goods dispatched from Germany to a
  VAT-registered buyer in France, zero-rated under Article 138 of Council Directive
  2006/112/EC. The three rules people forget: BR-IC-11 (an actual delivery date or an
  invoicing period), BR-IC-12 (the deliver-to country) and BR-IC-10 (the exemption
  reason). Both VAT identifiers are mandatory (BR-IC-02, BR-IC-03).
  Expected validation result: VALID — 1 line, 3 000.00 EUR, VAT 0.00 EUR.

  All parties and account numbers are fictitious.
  Reference page: https://validatefin.com/en/resources/samples/ubl-invoice-intracommunity
  License: CC-BY-4.0
-->
<Invoice xmlns="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:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
  <cbc:ID>NWL-2026-0455</cbc:ID>
  <cbc:IssueDate>2026-03-09</cbc:IssueDate>
  <cbc:DueDate>2026-04-08</cbc:DueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:Note>Intra-Community supply — exempt under Article 138 of Council Directive 2006/112/EC.</cbc:Note>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
  <cbc:BuyerReference>PO-2026-9002</cbc:BuyerReference>

  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:EndpointID schemeID="9930">DE123456789</cbc:EndpointID>
      <cac:PartyName>
        <cbc:Name>Nordwind Logistik GmbH</cbc:Name>
      </cac:PartyName>
      <cac:PostalAddress>
        <cbc:StreetName>Speicherstrasse 12</cbc:StreetName>
        <cbc:CityName>Hamburg</cbc:CityName>
        <cbc:PostalZone>20457</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:PartyLegalEntity>
        <cbc:RegistrationName>Nordwind Logistik GmbH</cbc:RegistrationName>
        <cbc:CompanyID>HRB 98765</cbc:CompanyID>
      </cac:PartyLegalEntity>
      <cac:Contact>
        <cbc:Name>Rechnungsstelle</cbc:Name>
        <cbc:Telephone>+49 40 555 0100</cbc:Telephone>
        <cbc:ElectronicMail>[email protected]</cbc:ElectronicMail>
      </cac:Contact>
    </cac:Party>
  </cac:AccountingSupplierParty>

  <cac:AccountingCustomerParty>
    <cac:Party>
      <cbc:EndpointID schemeID="9957">FR40303265045</cbc:EndpointID>
      <cac:PartyName>
        <cbc:Name>Atlas Consulting SAS</cbc:Name>
      </cac:PartyName>
      <cac:PostalAddress>
        <cbc:StreetName>18 rue de la Boetie</cbc:StreetName>
        <cbc:CityName>Paris</cbc:CityName>
        <cbc:PostalZone>75008</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>FR</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>FR40303265045</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Atlas Consulting SAS</cbc:RegistrationName>
      </cac:PartyLegalEntity>
    </cac:Party>
  </cac:AccountingCustomerParty>

  <!-- BR-IC-11 (BT-72) and BR-IC-12 (BT-80): delivery date and deliver-to country -->
  <cac:Delivery>
    <cbc:ActualDeliveryDate>2026-03-07</cbc:ActualDeliveryDate>
    <cac:DeliveryLocation>
      <cac:Address>
        <cbc:StreetName>Zone logistique Nord, quai 4</cbc:StreetName>
        <cbc:CityName>Lille</cbc:CityName>
        <cbc:PostalZone>59000</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>FR</cbc:IdentificationCode>
        </cac:Country>
      </cac:Address>
    </cac:DeliveryLocation>
  </cac:Delivery>

  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
    <cbc:PaymentID>NWL-2026-0455</cbc:PaymentID>
    <cac:PayeeFinancialAccount>
      <cbc:ID>DE89370400440532013000</cbc:ID>
      <cbc:Name>Nordwind Logistik GmbH</cbc:Name>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>

  <cac:PaymentTerms>
    <cbc:Note>Net 30 days.</cbc:Note>
  </cac:PaymentTerms>

  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="EUR">3000.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>K</cbc:ID>
        <cbc:Percent>0</cbc:Percent>
        <cbc:TaxExemptionReasonCode>VATEX-EU-IC</cbc:TaxExemptionReasonCode>
        <cbc:TaxExemptionReason>Intra-Community supply</cbc:TaxExemptionReason>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:TaxCategory>
    </cac:TaxSubtotal>
  </cac:TaxTotal>

  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="EUR">3000.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="EUR">3000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="EUR">3000.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="EUR">3000.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>

  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="C62">4</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="EUR">3000.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Description>Insulated shipping container, 1 200 L</cbc:Description>
      <cbc:Name>Shipping container</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>K</cbc:ID>
        <cbc:Percent>0</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="EUR">750.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
</Invoice>

Woher wir wissen, dass diese Ergebnisse stimmen

Jede Datei dieser Bibliothek läuft bei jedem Build durch den eigenen Validator der Website. Das oben genannte erwartete Ergebnis wird von einem automatisierten Test geprüft: Passt eine Datei nicht mehr zu dem, was diese Seite behauptet, schlägt der Build fehl. Zwei geerbte Fixtures wurden so vor der Veröffentlichung repariert — drei IBANs scheiterten an der Mod-97-Prüfung, und mehrere Namen nutzten Zeichen außerhalb des SEPA-Basiszeichensatzes.

UBL-Rechnung (Peppol BIS 3.0)