UBL Invoice — two VAT rates, one breakdown per rate
Prawidłowa faktura łącząca francuską stawkę podstawową (20 %) i obniżoną (5,5 %). Regułą, dla której ten plik powstał, jest BR-S-08: zestawienie VAT (BG-23) zawiera JEDEN TaxSubtotal na parę (kategoria, stawka), a każda podstawa opodatkowania równa się sumie pozycji z tej pary — 1 500,00 przy 20 % (VAT 300,00) i 400,00 przy 5,5 % (VAT 22,00). Połączenie dwóch stawek w jeden podsumowany wiersz przechodzi wszystkie kontrole BR-CO i nadal jest błędem.
UBL 2.1 Invoice — Prawidłowy
Prawidłowa faktura łącząca francuską stawkę podstawową (20 %) i obniżoną (5,5 %). Regułą, dla której ten plik powstał, jest BR-S-08: zestawienie VAT (BG-23) zawiera JEDEN TaxSubtotal na parę (kategoria, stawka), a każda podstawa opodatkowania równa się sumie pozycji z tej pary — 1 500,00 przy 20 % (VAT 300,00) i 400,00 przy 5,5 % (VAT 22,00). Połączenie dwóch stawek w jeden podsumowany wiersz przechodzi wszystkie kontrole BR-CO i nadal jest błędem.
Co pokazuje ten plik
Prawidłowa faktura łącząca francuską stawkę podstawową (20 %) i obniżoną (5,5 %). Regułą, dla której ten plik powstał, jest BR-S-08: zestawienie VAT (BG-23) zawiera JEDEN TaxSubtotal na parę (kategoria, stawka), a każda podstawa opodatkowania równa się sumie pozycji z tej pary — 1 500,00 przy 20 % (VAT 300,00) i 400,00 przy 5,5 % (VAT 22,00). Połączenie dwóch stawek w jeden podsumowany wiersz przechodzi wszystkie kontrole BR-CO i nadal jest błędem.
| Transakcje | 3 |
|---|---|
| Suma | 2222,00 € |
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).
MULTIPLE VAT RATES on one invoice: French standard rate 20 % and reduced rate 5.5 %.
The VAT breakdown (BG-23) carries one TaxSubtotal PER (category, rate) pair, and each
taxable amount is the sum of the lines that carry that pair (BR-S-08).
Expected validation result: VALID — 3 lines, 2 222.00 EUR including VAT.
S/20 % : base 1 500.00, VAT 300.00 — S/5.5 % : base 400.00, VAT 22.00.
All parties and account numbers are fictitious.
Reference page: https://validatefin.com/en/resources/samples/ubl-invoice-multi-vat-rate
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>PDR-2026-0288</cbc:ID>
<cbc:IssueDate>2026-03-11</cbc:IssueDate>
<cbc:DueDate>2026-04-10</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:Note>Standard rate 20 % on stationery, reduced rate 5.5 % on printed books.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>CMD-2026-0771</cbc:BuyerReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="9957">FR23334175221</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Papeterie du Rhone SAS</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>3 rue Gutenberg</cbc:StreetName>
<cbc:CityName>Villeurbanne</cbc:CityName>
<cbc:PostalZone>69100</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>Papeterie du Rhone SAS</cbc:RegistrationName>
<cbc:CompanyID>334175221</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Service facturation</cbc:Name>
<cbc:Telephone>+33 4 78 00 90 90</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>PDR-2026-0288</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>FR1420041010050500013M02606</cbc:ID>
<cbc:Name>Papeterie du Rhone SAS</cbc:Name>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Net 30 days.</cbc:Note>
</cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">322.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">1500.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">300.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">400.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">22.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>5.5</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">1900.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">1900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">2222.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">2222.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">200</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Description>Recycled A4 paper, 80 g, ream of 500 sheets</cbc:Description>
<cbc:Name>A4 paper ream</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">5.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">50</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">500.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Description>Refillable ink cartridge, black</cbc:Description>
<cbc:Name>Ink cartridge</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>160 / 191 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)
- 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 — BR-CO-10, line sum does not equal BT-106
- UBL Invoice — exempt VAT without an exemption reason (BR-E-10) and a wrong exempt base (BR-E-08)
- UBL Invoice — BR-CO-17, VAT amount does not equal base x rate