UBL Invoice — exempt VAT without an exemption reason (BR-E-10) and a wrong exempt base (BR-E-08)
Una factura exenta mal hecha, por partida doble. BR-E-10: el desglose de IVA de la categoría E no lleva ni motivo de exención (BT-120) ni código de motivo (BT-121); una factura exenta debe decir POR QUÉ. BR-E-08: la base exenta declara 1.200,00 mientras que las líneas exentas suman 1.500,00, porque la segunda línea nunca llegó al desglose. El error citado es el de la capa de reglas de negocio; el Schematron oficial EN 16931 añade además BR-E-10.
UBL 2.1 Invoice — Inválido
Una factura exenta mal hecha, por partida doble. BR-E-10: el desglose de IVA de la categoría E no lleva ni motivo de exención (BT-120) ni código de motivo (BT-121); una factura exenta debe decir POR QUÉ. BR-E-08: la base exenta declara 1.200,00 mientras que las líneas exentas suman 1.500,00, porque la segunda línea nunca llegó al desglose. El error citado es el de la capa de reglas de negocio; el Schematron oficial EN 16931 añade además BR-E-10.
Lo que muestra este fichero
Una factura exenta mal hecha, por partida doble. BR-E-10: el desglose de IVA de la categoría E no lleva ni motivo de exención (BT-120) ni código de motivo (BT-121); una factura exenta debe decir POR QUÉ. BR-E-08: la base exenta declara 1.200,00 mientras que las líneas exentas suman 1.500,00, porque la segunda línea nunca llegó al desglose. El error citado es el de la capa de reglas de negocio; el Schematron oficial EN 16931 añade además BR-E-10.
| Transacciones | 2 |
|---|---|
| Total | 1500,00 € |
Los defectos que contiene
- 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).
Citado literalmente del validador, sin parafrasear.
Todas las partes, IBAN e importes siguientes son ficticios. Los IBAN son estructuralmente válidos —superan el mod-97— pero no corresponden a ninguna cuenta real.
Contenido del fichero
<?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.
Cómo sabemos que estos resultados se sostienen
Cada fichero de esta biblioteca pasa por el propio validador del sitio en cada build. El resultado esperado indicado arriba lo verifica un test automatizado: si un fichero dejara de coincidir con lo que afirma esta página, el build fallaría. Dos fixtures heredadas se repararon así antes de publicarse: tres IBAN no superaban el mod-97 y varios nombres usaban caracteres fuera del juego SEPA básico.
Factura UBL (Peppol BIS 3.0)
- UBL Invoice — valid Peppol BIS 3.0
- UBL Credit Note — valid Peppol BIS 3.0
- UBL Invoice — BR-CO-10 violation
- UBL Invoice — malformed seller VAT identifier
- UBL Invoice — allowances and charges, line and document level
- UBL Invoice — reverse charge (VAT category AE)
- UBL Invoice — VAT exempt (category E) with exemption reason
- UBL Invoice — intra-Community supply (VAT category K)
- UBL Invoice — two VAT rates, one breakdown per rate
- UBL Invoice — BR-CO-10, line sum does not equal BT-106
- UBL Invoice — BR-CO-17, VAT amount does not equal base x rate