ValidateFin

UBL Invoice — exempt VAT without an exemption reason (BR-E-10) and a wrong exempt base (BR-E-08)

Faktura zwolniona zepsuta na dwa sposoby. BR-E-10: zestawienie VAT dla kategorii E nie zawiera ani tekstu powodu zwolnienia (BT-120), ani kodu (BT-121) — faktura zwolniona musi podać, DLACZEGO. BR-E-08: podstawa zwolniona deklaruje 1 200,00, podczas gdy zwolnione pozycje sumują się do 1 500,00, bo druga pozycja nigdy nie trafiła do zestawienia. Cytowany błąd pochodzi z warstwy reguł biznesowych; oficjalny Schematron EN 16931 dokłada do tego BR-E-10.

UBL 2.1 Invoice — Nieprawidłowy

Faktura zwolniona zepsuta na dwa sposoby. BR-E-10: zestawienie VAT dla kategorii E nie zawiera ani tekstu powodu zwolnienia (BT-120), ani kodu (BT-121) — faktura zwolniona musi podać, DLACZEGO. BR-E-08: podstawa zwolniona deklaruje 1 200,00, podczas gdy zwolnione pozycje sumują się do 1 500,00, bo druga pozycja nigdy nie trafiła do zestawienia. Cytowany błąd pochodzi z warstwy reguł biznesowych; oficjalny Schematron EN 16931 dokłada do tego BR-E-10.

Faktura UBL (Peppol BIS 3.0) UBL 2.1 Invoice EN 16931 / Peppol BIS 3.0Oczekiwany wynik: Nieprawidłowy — 3 błędów

Co pokazuje ten plik

Faktura zwolniona zepsuta na dwa sposoby. BR-E-10: zestawienie VAT dla kategorii E nie zawiera ani tekstu powodu zwolnienia (BT-120), ani kodu (BT-121) — faktura zwolniona musi podać, DLACZEGO. BR-E-08: podstawa zwolniona deklaruje 1 200,00, podczas gdy zwolnione pozycje sumują się do 1 500,00, bo druga pozycja nigdy nie trafiła do zestawienia. Cytowany błąd pochodzi z warstwy reguł biznesowych; oficjalny Schematron EN 16931 dokłada do tego BR-E-10.

Transakcje2
Suma1500,00 €

Zawarte wady

  • BR-E-08BR-E-08: taxable amount for VAT category E at rate 0% (1200.00) must equal the sum of the matching line amounts and document allowances/charges (1500.00).

Cytowane dosłownie z walidatora, bez parafrazy.

Ostatnia weryfikacja: Licencja: CC-BY-4.0

Wszystkie strony, numery IBAN i kwoty poniżej są fikcyjne. IBAN-y są poprawne strukturalnie — przechodzą test mod-97 — ale nie należą do żadnego rzeczywistego rachunku.

Zawartość pliku

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ValidateFin sample file — UBL invoice, Peppol BIS Billing 3.0 (EN 16931).
  DELIBERATELY BROKEN — exempt VAT done wrong, two ways at once.
  1. BR-E-10: the VAT breakdown for category E carries NEITHER a VAT exemption reason
     text (BT-120) NOR an exemption reason code (BT-121). An exempt invoice must say
     WHY it is exempt.
  2. BR-E-08: the exempt taxable amount declares 1 200.00 while the exempt lines add
     up to 1 500.00 (1 200.00 + 300.00) — one line was simply left out of the breakdown.
  Expected validation result: INVALID.

  All parties and account numbers are fictitious.
  Reference page: https://validatefin.com/en/resources/samples/ubl-invoice-broken-exemption-reason
  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>LUM-2026-0078</cbc:ID>
  <cbc:IssueDate>2026-03-16</cbc:IssueDate>
  <cbc:DueDate>2026-04-15</cbc:DueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:Note>Exempt supply invoiced without an exemption reason.</cbc:Note>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
  <cbc:BuyerReference>FORM-2026-021</cbc:BuyerReference>

  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:EndpointID schemeID="9957">FR23334175221</cbc:EndpointID>
      <cac:PartyName>
        <cbc:Name>Lumen Formation SARL</cbc:Name>
      </cac:PartyName>
      <cac:PostalAddress>
        <cbc:StreetName>7 quai Saint-Antoine</cbc:StreetName>
        <cbc:CityName>Lyon</cbc:CityName>
        <cbc:PostalZone>69002</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>FR</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>FR23334175221</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Lumen Formation SARL</cbc:RegistrationName>
        <cbc:CompanyID>334175221</cbc:CompanyID>
      </cac:PartyLegalEntity>
      <cac:Contact>
        <cbc:Name>Service facturation</cbc:Name>
        <cbc:Telephone>+33 4 72 00 44 55</cbc:Telephone>
        <cbc:ElectronicMail>[email protected]</cbc:ElectronicMail>
      </cac:Contact>
    </cac:Party>
  </cac:AccountingSupplierParty>

  <cac:AccountingCustomerParty>
    <cac:Party>
      <cbc:EndpointID schemeID="9957">FR62456789012</cbc:EndpointID>
      <cac:PartyName>
        <cbc:Name>Groupe Verdier SA</cbc:Name>
      </cac:PartyName>
      <cac:PostalAddress>
        <cbc:StreetName>22 boulevard des Belges</cbc:StreetName>
        <cbc:CityName>Rouen</cbc:CityName>
        <cbc:PostalZone>76000</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>FR</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>FR62456789012</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Groupe Verdier SA</cbc:RegistrationName>
      </cac:PartyLegalEntity>
    </cac:Party>
  </cac:AccountingCustomerParty>

  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
    <cbc:PaymentID>LUM-2026-0078</cbc:PaymentID>
    <cac:PayeeFinancialAccount>
      <cbc:ID>FR1420041010050500013M02606</cbc:ID>
      <cbc:Name>Lumen Formation SARL</cbc:Name>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>

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

  <!-- No TaxExemptionReason, no TaxExemptionReasonCode, and a base that ignores line 2 -->
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="EUR">1200.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>E</cbc:ID>
        <cbc:Percent>0</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:TaxCategory>
    </cac:TaxSubtotal>
  </cac:TaxTotal>

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

  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="DAY">3</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="EUR">1200.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Description>Certified vocational training, three sessions</cbc:Description>
      <cbc:Name>Training sessions</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>E</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">400.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>

  <cac:InvoiceLine>
    <cbc:ID>2</cbc:ID>
    <cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="EUR">300.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Description>Trainee assessment and certification</cbc:Description>
      <cbc:Name>Assessment per trainee</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>E</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">30.00</cbc:PriceAmount>
    </cac:Price>

160 / 163 lines shown — the complete file is in the download above.

Skąd wiemy, że te wyniki są aktualne

Każdy plik w tej bibliotece przechodzi przez walidator serwisu przy każdym buildzie. Oczekiwany wynik podany wyżej potwierdza test automatyczny: gdyby plik przestał odpowiadać temu, co głosi ta strona, build by się wywalił. Dwie odziedziczone fikstury naprawiono w ten sposób przed publikacją: trzy numery IBAN nie przechodziły mod-97, a kilka nazw używało znaków spoza podstawowego zestawu SEPA.

Faktura UBL (Peppol BIS 3.0)