Ventilation Codes (VAT)
Set VAT Information / TAX via ventilation codes
When creating orders it is possible to add a ventilation code to the invoice. These codes represents VAT information. Information below is elaborated when sending is to TransferType Peppol.
Income / Sales Invoices
There is no need to include a ventillation code in the API JSON Body:
- When tax % greater than zero (Ventillation Code is 2, 3, 4 , ...)
- When tax % is 0, and no specific code or exemption reason is need. Peppol TaxcategoryID will be Z and Tax exemption reason will be empty.
When Tax includes lines of 0 % and Specific codes and exemption reasons are needed, then a specific ventilation code must be included. This applies to the Peppol Taxcategory ID AE, E, K, G. More info about the meaning : Peppol CodeList.
Below the overview for Sales Invoices:
Billit Ventilation Code | Description Ventilation Code | Default Vat % | Peppol UBL TaxCategory ID | TaxExemptionReason Text generated by Billit in Peppol UBL |
|---|---|---|---|---|
1 | 0% (for BE) | 0.00 | Z | |
2 | Low % (6% for BE) | 6.00 | S | |
3 | Mid level (12% for BE) | 12.00 | S | |
4 | High VAT (21% for BE) | 21.00 | S | |
21 | BTW Verlegd (VAT shifted, VAT Reverse charges) + Cocontrator for BE/NL | 0.00 | AE | Reverse Charge |
22 | Div. Buiten BTW (Misc. Excluding VAT) | 0.00 | O | Miscellaneous non-VAT |
24 | Marge (Margin) | 0.00 | E | Exempt from VAT |
51 | IC Goederen (IC Goods) | 0.00 | K | VAT exempt for EEA intra-community supply of goods and services |
55 | IC Diensten (IC Services) | 0.00 | K | VAT exempt for EEA intra-community supply of goods and services |
70 | Import / Export | 0.00 | G | Free export item, VAT not charged |
101 | International transport of People | 0.00 | E | Exempt from VAT |
102 | Import via EU | 0.00 | E | Exempt from VAT |
104 | OSS | 0.00 | E | Exempt from VAT |
How to use it practically:
- Ventilation code is included on header level (no need to include it on line level), NOT on line level
- Ventilation code is only needed when Taxcategory ID O, AE, E, K or G is used (in all other cases Billit does generate the correct UBL"
- Per invoice, maximum 1 Ventilation Code is mentioned
Below an Example :
-
scenario
- line 1 and 2 have VAT % 0 (goal is Taxcategory ID = K)
- line 3 VAT % 21 (goal is Taxcategory ID = S)
-
Ventilation code
-
One ventilation code 55 is put on header level in order to get Taxcategory ID K
-
Peppol UBL File
- Subtotals: TaxcategoryID K and TaxExemption Reason are present:
- Detail line : ClassifiedTaxCategory is set to K for lines with 0 %:
-
-
Below the example files (2)
- 1 : Json Body with 1x ventilation code 55
- 2 : Generated Peppol UBL by Billit with TaxCategoryID K
{
"OrderNumber": "month-41.100-5",
"OrderTitle": "FC24000230",
"VentilationCode": "55", //Ventilation code is defined IC Diensten (IC Services), will be used for all lines with VATpercentage 0 %. ), Result Peppol code is K.
"Currency": "EUR",
"PaymentTerms": "30 days",
"Customer": {
"Name": "TestCustomer",
"CommercialName": "TestCustomer",
"Addresses": [
{
"AddressType": "InvoiceAddress",
"Street": "Oktrooiplein 1",
"Box": "Building B",
"Zipcode": "9000",
"City": "Gent",
"CountryCode": "BE"
},
],
"Contact": "Jean Delveaux",
"VATNumber": "BE043729999",
"PartyType": "Customer",
"VATLiable": true,
"VATDeductable": true,
"Identifiers": [
],
},
"OrderDate": "2025-05-05T11:25:00.4667841+02:00",
"ExpiryDate": "2025-06-04T11:25:00.466804+02:00",
"OrderType": "Invoice",
"OrderDirection": "Income",
"OrderLines": [
{
"Quantity": 1.0,
"UnitPriceExcl": 50.0,
"Reference": "Line.1.Reference",
"Description": "0/63 TDLSF",
"VATPercentage": 0.0,
"DescriptionExtended": "0/63 TDLSF Extended"
},
{
"Quantity": 1.0,
"UnitPriceExcl": 50.0,
"Reference": "Line.2.Reference",
"Description": "0/63 TDLSF",
"VATPercentage": 0.0,
"DescriptionExtended": "0/64 TDLSF Extended"
},
{
"Quantity": 2.0,
"UnitPriceExcl": 4.0,
"Reference": "Line.1.Reference",
"Description": "0/63 TDLSF",
"VATPercentage": 21.0,
"DescriptionExtended": "0/63 TDLSF Extended"
},
],
}<?xml version="1.0"?>
<Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-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>month-41.100-15</cbc:ID>
<cbc:IssueDate>2025-05-05</cbc:IssueDate>
<cbc:DueDate>2025-06-04</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>FC24000230</cbc:BuyerReference>
<cac:OrderReference>
<cbc:ID>FC24000230</cbc:ID>
</cac:OrderReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0208">0759529999</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0208">0759529999</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Testsupplier</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>straat 31</cbc:StreetName>
<cbc:CityName>Gent</cbc:CityName>
<cbc:PostalZone>9000</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>BE0759529999</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>npnwbrabant</cbc:RegistrationName>
<cbc:CompanyID schemeID="0208">0759529999</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Jan Janssens</cbc:Name>
<cbc:Telephone>+32479999999</cbc:Telephone>
<cbc:ElectronicMail>[email protected]</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0208">0437295999</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0208">0437295999</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>TestCustomer</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Oktrooiplein 1 Building B</cbc:StreetName>
<cbc:CityName>Gent</cbc:CityName>
<cbc:PostalZone>9000</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>BE0437295202</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>TestCustomer</cbc:RegistrationName>
<cbc:CompanyID schemeID="0208">0437295999</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Jean Delveaux</cbc:Name>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:Delivery>
<cac:DeliveryLocation>
<cac:Address>
<cac:Country>
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:PaymentMeans>
<cbc:PaymentMeansCode>42</cbc:PaymentMeansCode>
<cbc:PaymentID>FC24000230</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>BE13523081289999</cbc:ID>
<cac:FinancialInstitutionBranch>
<cbc:ID>TRIOBEBB</cbc:ID>
</cac:FinancialInstitutionBranch>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">1.68</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>K</cbc:ID>
<cbc:Percent>0.00</cbc:Percent>
<cbc:TaxExemptionReason>VAT exempt for EEA intra-community supply of goods and services</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">8.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">1.68</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:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">108.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">108.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">109.68</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="EUR">0.00</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="EUR">109.68</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="NAR">1.00000</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">50.00</cbc:LineExtensionAmount>
<cac:OrderLineReference>
<cbc:LineID>Line.1.Reference</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description>0/63 TDLSF Extended</cbc:Description>
<cbc:Name>0/63 TDLSF</cbc:Name>
<cac:SellersItemIdentification>
<cbc:ID>Line.1.Reference</cbc:ID>
</cac:SellersItemIdentification>
<cac:ClassifiedTaxCategory>
<cbc:ID>K</cbc:ID>
<cbc:Percent>0.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">50.00000</cbc:PriceAmount>
<cbc:BaseQuantity>1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cbc:InvoicedQuantity unitCode="NAR">1.00000</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">50.00</cbc:LineExtensionAmount>
<cac:OrderLineReference>
<cbc:LineID>Line.2.Reference</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description>0/64 TDLSF Extended</cbc:Description>
<cbc:Name>0/63 TDLSF</cbc:Name>
<cac:SellersItemIdentification>
<cbc:ID>Line.2.Reference</cbc:ID>
</cac:SellersItemIdentification>
<cac:ClassifiedTaxCategory>
<cbc:ID>K</cbc:ID>
<cbc:Percent>0.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">50.00000</cbc:PriceAmount>
<cbc:BaseQuantity>1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>3</cbc:ID>
<cbc:InvoicedQuantity unitCode="NAR">2.00000</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">8.00</cbc:LineExtensionAmount>
<cac:OrderLineReference>
<cbc:LineID>Line.1.Reference</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description>0/63 TDLSF Extended</cbc:Description>
<cbc:Name>0/63 TDLSF</cbc:Name>
<cac:SellersItemIdentification>
<cbc:ID>Line.1.Reference</cbc:ID>
</cac:SellersItemIdentification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">4.00000</cbc:PriceAmount>
<cbc:BaseQuantity>1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
</Invoice>About Tax Exemption Reason
The tax exemption reasons are automatically generated by Billit based on the ventilation code on header.
If you also want to include your own description 'e.g. legal clause' then you can include this as text in the "Comments" section of the Json.
Cost (Expense, Incoming) related Invoices and Credit Notes
| Code | Description | Default Vat Amount |
|---|---|---|
| 1 | Binnenland (Inland) | NULL |
| 21 | BTW Verlegd (VAT shifted) | 0.00 |
| 22 | Div. Buiten BTW (Misc. Excluding VAT) | NULL |
| 111 | Marge (Margin) | 0.00 |
| 51 | IC Goederen (IC Goods) | 0.00 |
| 55 | IC Diensten (IC Services) | 0.00 |
| 102 | Import Via EU | NULL |
Updated 5 days ago