UBL Invoice — valid Peppol BIS 3.0
A valid Peppol BIS Billing 3.0 invoice: three lines, 2 596.00 EUR including VAT, coherent totals, a French VAT identifier and an IBAN for payment.
UBL 2.1 Invoice — Valid
A valid Peppol BIS Billing 3.0 invoice: three lines, 2 596.00 EUR including VAT, coherent totals, a French VAT identifier and an IBAN for payment.
What this file shows
A valid Peppol BIS Billing 3.0 invoice: three lines, 2 596.00 EUR including VAT, coherent totals, a French VAT identifier and an IBAN for payment.
| Transactions | 3 |
|---|---|
| Total | €2,596.00 |
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).
Expected validation result: VALID — 3 lines, 2 596.00 EUR including VAT.
All parties and account numbers are fictitious.
Reference page: https://validatefin.com/en/resources/samples/ubl-invoice-valid
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>FA-2026-0099</cbc:ID>
<cbc:IssueDate>2026-02-01</cbc:IssueDate>
<cbc:DueDate>2026-03-01</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:Note>Facture mensuelle services informatiques — février 2026</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>BON-COMMANDE-2026-042</cbc:BuyerReference>
<!-- Fournisseur -->
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyName>
<cbc:Name>Digital Solutions SAS</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>45 avenue de la Technologie</cbc:StreetName>
<cbc:CityName>Lyon</cbc:CityName>
<cbc:PostalZone>69003</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>FR</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>FR72823456789</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Digital Solutions SAS</cbc:RegistrationName>
<cbc:CompanyID>823456789</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<!-- Client -->
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name>Entreprise Dubois & Associés</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>8 rue du Commerce</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>FR83456789012</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Entreprise Dubois & Associés</cbc:RegistrationName>
<cbc:CompanyID>456789012</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<!-- Moyen de paiement -->
<cac:PaymentMeans>
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
<cbc:PaymentID>FA-2026-0099</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>FR7630006000011234567890189</cbc:ID>
<cbc:Name>Digital Solutions SAS</cbc:Name>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<!-- TVA -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">396.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">2200.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">396.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>18</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<!-- Totaux -->
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">2200.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">2200.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">2596.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">2596.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<!-- Lignes de facture -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="DAY">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">1500.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Description>Développement application web — intégration API</cbc:Description>
<cbc:Name>Développement applicatif</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>18</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">150.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cbc:InvoicedQuantity unitCode="HUR">8</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">400.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Description>Support technique et maintenance corrective</cbc:Description>
<cbc:Name>Support technique</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>18</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">50.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>3</cbc:ID>
<cbc:InvoicedQuantity unitCode="EA">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">300.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Description>Licence logiciel annuelle — module reporting</cbc:Description>
<cbc:Name>Licence logiciel</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>160 / 172 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)
- 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 — 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