Understanding Financial Discounts in Peppol BIS Billing 3.0 Invoices
Handling financial discounts correctly in electronic invoicing is one of the more nuanced challenges financial professionals face. Unlike straightforward commercial discounts, cash discounts (also known as payment discounts or conditional allowances) require a specific technical approach to ensure VAT compliance. Let's break down how this works in practice with a real-world example.
Commercial vs. Financial Discounts
A commercial discount—such as a 60% general discount—reduces the taxable base directly at the time of invoicing. A financial discount, however, is conditional: it only applies if payment occurs within a specified period, for example "3% discount if paid within 14 days."
Consider this real-world invoice scenario:
| Description | Amount |
|---|---|
| Total line items | €3,528.10 |
| Commercial discount (60%) | -€2,116.86 |
| Subtotal before financial discount | €1,411.24 |
| Financial discount (3%) | €42.34 |
The challenge lies in representing this correctly in UBL while ensuring VAT compliance. The financial discount of €42.34 is calculated as 3% of €1,411.24 (the amount after commercial discount).
The AllowanceCharge Pattern
In Peppol BIS Billing 3.0, discounts are expressed using the AllowanceCharge element at document level. The ChargeIndicator is set to false for allowances and true for charges.
Step 1: Commercial Discount as Standard Allowance
The commercial discount is straightforward—a simple allowance with 21% VAT:
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Korting 60,00% REMISE GENERALE</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">2116.86</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>Step 2: Financial Discount Using the Allowance-Charge Pattern
The financial discount requires two AllowanceCharge elements working together.
First, an allowance to reduce the VAT-taxable base:
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">42.34</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>Second, a matching charge with VAT category E (exempt) to neutralize the effect on PayableAmount:
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">42.34</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>This pattern ensures VAT is calculated on the reduced amount while the PayableAmount remains unchanged.
VAT Calculation Breakdown
Let's trace through the numbers to see how VAT is calculated correctly:
| Calculation Step | Amount |
|---|---|
| Line items total | €3,528.10 |
| Less: Commercial discount | -€2,116.86 |
| Less: Financial discount allowance | -€42.34 |
| Taxable base (21% VAT) | €1,368.90 |
| VAT at 21% | €287.47 |
The TaxTotal section reflects this with two subtotals:
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">287.47</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">1368.90</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">287.47</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">42.34</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0.00</cbc:Percent>
<cbc:TaxExemptionReason>discount</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>VAT Compliance Under Belgian Law
Under Article 28, 1° of the Belgian VAT Code, the taxable amount may be reduced by the payment discount regardless of whether the invoice will actually be paid in time. VAT must be calculated on the reduced base upfront, which the allowance-charge pattern elegantly accommodates.
Without this pattern, you would calculate VAT on €1,411.24, yielding €296.36 in VAT—nearly €9 more than the correct amount of €287.47.
LegalMonetaryTotal Breakdown
The LegalMonetaryTotal ties everything together. Here's how each field is calculated:
| Field | Calculation | Amount |
|---|---|---|
| LineExtensionAmount | Sum of line items | €3,528.10 |
| AllowanceTotalAmount | €2,116.86 + €42.34 | €2,159.20 |
| ChargeTotalAmount | Financial discount charge | €42.34 |
| TaxExclusiveAmount | €3,528.10 - €2,159.20 + €42.34 | €1,411.24 |
| TaxInclusiveAmount | €1,411.24 + €287.47 | €1,698.71 |
| PayableAmount | Amount due (without discount) | €1,698.71 |
The corresponding UBL:
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">3528.10</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">1411.24</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">1698.71</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">2159.20</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">42.34</cbc:ChargeTotalAmount>
<cbc:PayableAmount currencyID="EUR">1698.71</cbc:PayableAmount>
</cac:LegalMonetaryTotal>Notice how the charge (€42.34) offsets the financial discount allowance in the TaxExclusiveAmount calculation, ensuring the PayableAmount reflects the full amount due if the customer doesn't pay early.
Payment Scenarios
The customer now has two options:
| Scenario | Calculation | Amount Due |
|---|---|---|
| Pay after due date | PayableAmount | €1,698.71 |
| Pay within discount period | €1,698.71 - €42.34 | €1,656.37 |
In both cases, the VAT remains €287.47—calculated correctly on the reduced taxable base.
Payment Terms Documentation
Every financial discount must include explicit payment terms in the PaymentTerms/Note element. For Belgian invoices, include both Dutch and French:
<cac:PaymentTerms>
<cbc:Note>
Vervaldag: 31/12/2025 = NETTO PRIJS
Bij betaling binnen 14 dagen: 3% korting (€42,34) van toepassing.
En cas de paiement dans les 14 jours: escompte de 3% (€42,34) applicable.
</cbc:Note>
</cac:PaymentTerms>Key Validation Rules
When implementing this pattern, ensure compliance with these Peppol BIS calculation rules:
- BR-CO-11: AllowanceTotalAmount = Sum of all allowance amounts (€2,116.86 + €42.34 = €2,159.20)
- BR-CO-12: ChargeTotalAmount = Sum of all charge amounts (€42.34)
- BR-CO-13: TaxExclusiveAmount = LineExtensionAmount - AllowanceTotalAmount + ChargeTotalAmount
Implementation Tips
When implementing financial discounts, use reason code 64 ("Early payment discount") for the AllowanceChargeReasonCode. Always calculate allowance amounts per VAT rate correctly before applying the charge pattern—if you have line items at different VAT rates, you'll need separate allowance-charge pairs for each rate. Test your invoices against Peppol validation rules, as incorrect calculations will trigger validation errors.
Understanding these technical details enables finance teams to leverage early payment discounts as a working capital tool while maintaining compliance with Peppol standards and VAT regulations.
Need Help with Peppol E-invoicing?
e-invoice.be provides expert guidance on implementing Peppol e-invoicing for your business. From financial discounts to complex billing scenarios, we've got you covered.