UBL Invoice — allowances and charges, line and document level
Una fattura UBL Peppol BIS 3.0 valida con sconti e maggiorazioni su ENTRAMBI i livelli: sconto di riga (BG-27), maggiorazione di riga (BG-28), sconto a livello documento (BG-20) e spese di trasporto (BG-21). Il punto è la catena dei totali: BT-106 = 1.520,00 è la somma degli importi di riga NETTI, e BT-109 = 1.530,00 = BT-106 - BT-107 + BT-108 (BR-CO-13), quindi l’IVA al 19 % si applica su 1.530,00 e non su 1.520,00.
UBL 2.1 Invoice — Valido
Una fattura UBL Peppol BIS 3.0 valida con sconti e maggiorazioni su ENTRAMBI i livelli: sconto di riga (BG-27), maggiorazione di riga (BG-28), sconto a livello documento (BG-20) e spese di trasporto (BG-21). Il punto è la catena dei totali: BT-106 = 1.520,00 è la somma degli importi di riga NETTI, e BT-109 = 1.530,00 = BT-106 - BT-107 + BT-108 (BR-CO-13), quindi l’IVA al 19 % si applica su 1.530,00 e non su 1.520,00.
Cosa mostra questo file
Una fattura UBL Peppol BIS 3.0 valida con sconti e maggiorazioni su ENTRAMBI i livelli: sconto di riga (BG-27), maggiorazione di riga (BG-28), sconto a livello documento (BG-20) e spese di trasporto (BG-21). Il punto è la catena dei totali: BT-106 = 1.520,00 è la somma degli importi di riga NETTI, e BT-109 = 1.530,00 = BT-106 - BT-107 + BT-108 (BR-CO-13), quindi l’IVA al 19 % si applica su 1.530,00 e non su 1.520,00.
| Transazioni | 2 |
|---|---|
| Totale | 1820,70 € |
Tutte le parti, gli IBAN e gli importi qui sotto sono fittizi. Gli IBAN sono strutturalmente validi — superano il mod-97 — ma non corrispondono ad alcun conto reale.
Contenuto del file
<?xml version="1.0" encoding="UTF-8"?>
<!--
ValidateFin sample file — UBL invoice, Peppol BIS Billing 3.0 (EN 16931).
Allowances and charges at BOTH levels: a line discount (BG-27), a line charge
(BG-28), a document-level discount (BG-20) and a document-level charge (BG-21).
Expected validation result: VALID — 2 lines, 1 820.70 EUR including VAT.
Line net amounts: 1 200.00 - 100.00 = 1 100.00 and 400.00 + 20.00 = 420.00.
BT-106 = 1 520.00; BT-107 = 20.00; BT-108 = 30.00; BT-109 = 1 530.00;
VAT 19 % = 290.70; BT-112 = BT-115 = 1 820.70.
All parties and account numbers are fictitious.
Reference page: https://validatefin.com/en/resources/samples/ubl-invoice-allowance-charge
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>NWL-2026-0412</cbc:ID>
<cbc:IssueDate>2026-03-02</cbc:IssueDate>
<cbc:DueDate>2026-04-01</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:Note>Discount and freight charge applied at document level.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>PO-2026-8841</cbc:BuyerReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="9930">DE123456789</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Nordwind Logistik GmbH</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Speicherstrasse 12</cbc:StreetName>
<cbc:CityName>Hamburg</cbc:CityName>
<cbc:PostalZone>20457</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>DE123456789</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Nordwind Logistik GmbH</cbc:RegistrationName>
<cbc:CompanyID>HRB 98765</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Rechnungsstelle</cbc:Name>
<cbc:Telephone>+49 40 555 0100</cbc:Telephone>
<cbc:ElectronicMail>[email protected]</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="9930">DE987654321</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Kessler Handel GmbH</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Marktplatz 3</cbc:StreetName>
<cbc:CityName>Leipzig</cbc:CityName>
<cbc:PostalZone>04109</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>DE987654321</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Kessler Handel GmbH</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentMeans>
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
<cbc:PaymentID>NWL-2026-0412</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>DE89370400440532013000</cbc:ID>
<cbc:Name>Nordwind Logistik GmbH</cbc:Name>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Net 30 days.</cbc:Note>
</cac:PaymentTerms>
<!-- Document level allowance (BG-20) -->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Volume discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">20.00</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<!-- Document level charge (BG-21) -->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>FC</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Freight</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">30.00</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">290.70</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">1530.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">290.70</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">1520.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">1530.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">1820.70</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">20.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">30.00</cbc:ChargeTotalAmount>
<cbc:PayableAmount currencyID="EUR">1820.70</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<!-- Line 1: quantity x price = 1 200.00, minus a 100.00 line discount -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">1100.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>160 / 206 lines shown — the complete file is in the download above.
Come sappiamo che questi risultati reggono
Ogni file di questa libreria passa nel validatore del sito a ogni build. Il risultato atteso indicato sopra è verificato da un test automatico: se un file smettesse di corrispondere a quanto afferma questa pagina, la build fallirebbe. Due fixture ereditate sono state riparate così prima della pubblicazione: tre IBAN non superavano il mod-97 e diversi nomi usavano caratteri fuori dal set SEPA di base.
Fattura 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 — 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