ValidateFin

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

An exempt invoice done wrong, twice over. BR-E-10: the VAT breakdown for category E carries neither an exemption reason text (BT-120) nor a reason code (BT-121) — an exempt invoice must say WHY. BR-E-08: the exempt taxable amount declares 1 200.00 while the exempt lines add up to 1 500.00, because the second line never made it into the breakdown. The quoted error is the one the business-rule layer reports; the official EN 16931 Schematron adds BR-E-10 on top.

UBL 2.1 Invoice — Invalid

An exempt invoice done wrong, twice over. BR-E-10: the VAT breakdown for category E carries neither an exemption reason text (BT-120) nor a reason code (BT-121) — an exempt invoice must say WHY. BR-E-08: the exempt taxable amount declares 1 200.00 while the exempt lines add up to 1 500.00, because the second line never made it into the breakdown. The quoted error is the one the business-rule layer reports; the official EN 16931 Schematron adds BR-E-10 on top.

UBL invoice (Peppol BIS 3.0) UBL 2.1 Invoice EN 16931 / Peppol BIS 3.0Expected result: Invalid — 3 errors

What this file shows

An exempt invoice done wrong, twice over. BR-E-10: the VAT breakdown for category E carries neither an exemption reason text (BT-120) nor a reason code (BT-121) — an exempt invoice must say WHY. BR-E-08: the exempt taxable amount declares 1 200.00 while the exempt lines add up to 1 500.00, because the second line never made it into the breakdown. The quoted error is the one the business-rule layer reports; the official EN 16931 Schematron adds BR-E-10 on top.

Transactions2
Total€1,500.00

The defects it carries

  • 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).

Quoted verbatim from the validator, not paraphrased.

Last verified: License: CC-BY-4.0

Every party, IBAN and amount below is fictitious. The IBANs are structurally valid — they pass the mod-97 check — but they belong to no real account.

File content

<?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.

How we know these results hold

Every file in this library is run through the site's own validator on each build. The expected result stated above is asserted by an automated test — if a file stopped matching what this page claims, the build would fail. Two inherited fixtures were repaired this way before publication: three IBANs failed the mod-97 check and several names used characters outside the basic SEPA character set.

UBL invoice (Peppol BIS 3.0)