Belgian Peppol UBL Structure Guide
Every e-invoice sent through the Peppol network in Belgium is an XML document based on the Universal Business Language (UBL 2.1) standard. These invoices must conform to the Peppol BIS Billing 3.0 profile, which is built on the European e-invoicing standard EN 16931. Starting 1 January 2026, all VAT-registered Belgian businesses must send and receive B2B invoices electronically through the Peppol network. Invoices sent via email in PDF format are no longer considered valid for VAT purposes.
This document covers the full structure of a Peppol UBL invoice, section by section, with XML examples and Zoho Books mapping notes.
What Is UBL?
UBL (Universal Business Language) is an XML-based standard maintained by OASIS for electronic business documents such as invoices and credit notes. It provides a single structured vocabulary that any system can read and process. The current version used by the Peppol network is UBL 2.1.
What is Peppol BIS Billing 3.0?
Peppol does not use raw UBL. It uses a specific profile called Peppol BIS Billing 3.0, built on top of UBL 2.1 and compliant with the European standard EN 16931. Every Peppol invoice must satisfy three layers of rules:
- UBL 2.1 XML schema — the document must be valid XML that conforms to the UBL 2.1 structure.
- EN 16931 business rules — the European standard defines semantic rules (e.g., tax amounts must add up, every line must have a price and quantity).
- Peppol BIS 3.0 rules — Peppol adds its own requirements on top (e.g., mandatory
CustomizationID,ProfileID, andBuyerReference).
Header Information
The header identifies the invoice on the Peppol network. Every Peppol BIS 3.0 invoice must include a CustomizationID and ProfileID so the network can recognise and route it. The InvoiceTypeCode identifies the document type. It is usually 380 for a standard invoice and 381 for a credit note. Belgian invoices typically use EUR as the document currency and must include a BuyerReference to help the buyer route the invoice internally.
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<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>INV-000005</cbc:ID>
<cbc:IssueDate>2026-02-19</cbc:IssueDate>
<cbc:DueDate>2026-02-19</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>EMP-000012</cbc:BuyerReference>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Mandatory | ubl:Invoice | Invoice | Root element of a UBL Invoice | |
| Mandatory | cbc:ID | Invoice number | A unique identification of the Invoice (Article 226(2) of directive 2006/112/EC). | 33445566 |
| Mandatory | cbc:IssueDate | Invoice issue date | The date when the Invoice was issued. Format YYYY-MM-DD. | 2017-11-01 |
| Optional | cbc:DueDate | Payment due date | The date when the payment is due. Format YYYY-MM-DD. | 2017-11-01 |
| Mandatory | cbc:InvoiceTypeCode | Invoice type code | Code specifying the functional type of the Invoice. 380 = standard invoice, 381 = credit note. | 380 |
| Optional | cbc:BuyerReference | Buyer reference | An identifier assigned by the Buyer used for internal routing purposes. | abs1234 |
| Mandatory | cbc:DocumentCurrencyCode | Invoice currency code | The currency in which all Invoice amounts are given (except Total VAT in accounting currency). | EUR |
For credit notes, use InvoiceTypeCode 381 with a CreditNote root element. The BuyerReference is mandatory in Peppol and typically contains a purchase order number or an internal reference agreed upon between buyer and seller.
Seller Information
This section identifies the party issuing the invoice. It includes the seller’s name, postal address, VAT number, legal registration details, and contact information.
The seller’s VAT number follows the BE0XXXXXXXXX format and is placed under PartyTaxScheme. The RegistrationName under PartyLegalEntity must be the official registered name as it appears in the KBO.
Note: The PartyTaxScheme block is included in the UBL output only if the seller’s tax identifier is registered with scheme 9925 (Belgian VAT). If the identifier is not registered under the 9925 scheme, this block is not added to the UBL.
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0208">0xxxxxxxx0</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeAgencyID="ZZZ" schemeID="0208">0xxxxxxxx0</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Business Reg. Name</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Bessenveldstraat 453</cbc:StreetName>
<cbc:CityName>Monstreux</cbc:CityName>
<cbc:PostalZone>1400</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode listAgencyID="6" listID="ISO3166-1:Alpha2">BE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID schemeAgencyID="ZZZ" schemeID="9925">BE0xxxxxxxx0</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID schemeAgencyID="6" schemeID="UN/ECE 5153">VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Business Reg. Name</cbc:RegistrationName>
<cbc:CompanyID schemeAgencyID="ZZZ" schemeID="0208">0xxxxxxxx0</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>post8 t0</cbc:Name>
<cbc:ElectronicMail>email@example.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Mandatory | cac:AccountingSupplierParty | Seller | Group providing information about the Seller. | |
| Mandatory | cac:AccountingSupplierParty/cac:Party | Party | Seller party container. | |
| Mandatory | cac:AccountingSupplierParty/cac:Party/cbc:EndpointID | Seller electronic address | Identifies the Seller's electronic address for application level response. | 7300010000001 |
| Mandatory | cac:AccountingSupplierParty/cac:Party/cbc:EndpointID/@schemeID | Seller electronic address scheme ID | Identification scheme of the Seller electronic address. | 0088 |
| Optional | cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification | Party identification | Seller party identification container (repeatable). | |
| Mandatory | cac:PartyIdentification/cbc:ID (Seller) | Seller identifier / bank assigned creditor identifier | Identification of the Seller or unique banking reference. Use ICD code list or SEPA. | 5060012349998 |
| Optional | cac:AccountingSupplierParty/cac:Party/cac:PartyName | Party name | Seller party name container. | |
| Mandatory | cac:PartyName/cbc:Name (Seller) | Seller trading name | A name by which the Seller is known (Business name). | Seller Business Name AS |
| Mandatory | cac:AccountingSupplierParty/cac:Party/cac:PostalAddress | Seller postal address | Group providing Seller address info. Sufficient components must comply with legal requirements. | |
| Optional | SellerPostalAddress/cbc:StreetName | Seller address line 1 | The main address line. | Main Street 1 |
| Optional | SellerPostalAddress/cbc:CityName | Seller city | The city, town or village of the Seller address. | London |
| Optional | SellerPostalAddress/cbc:PostalZone | Seller post code | The postal code of the Seller address. | W1G 8LZ |
| Mandatory | SellerPostalAddress/cac:Country | Country | Seller country container. | |
| Mandatory | SellerPostalAddress/cac:Country/cbc:IdentificationCode | Seller country code | A code that identifies the country. | GB |
| Optional | cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme | Party VAT/tax identifiers | Seller VAT/Tax identifier group (up to 2 occurrences). | |
| Mandatory | SellerPartyTaxScheme/cbc:CompanyID | Seller VAT identifier / Tax registration ID | The Seller's VAT identifier or local tax identification. | NO999888777 |
| Mandatory | SellerPartyTaxScheme/cac:TaxScheme | Tax scheme | Tax scheme container. | |
| Mandatory | cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity | Party legal entity | Seller legal entity container. | |
| Mandatory | SellerPartyLegalEntity/cbc:RegistrationName | Seller name | Full formal name of the Seller in the national registry. | Full Formal Seller Name LTD. |
| Optional | SellerPartyLegalEntity/cbc:CompanyID | Seller legal registration identifier | Identifier issued by an official registrar identifying the Seller. | 987654321 |
| Optional | cac:AccountingSupplierParty/cac:Party/cac:Contact | Seller contact | Group providing Seller contact information. | |
| Optional | Contact/cbc:Name | Seller contact point | A contact point for the Seller. | xyz123 |
| Optional | Contact/cbc:ElectronicMail | Seller contact email address | An e-mail address for the Seller contact point. | test.name@foo.bar |
Buyer Information
The buyer section identifies the party receiving and paying the invoice. It includes the buyer’s name, address, legal registration, and optionally, a VAT identifier and contact details.
Belgian buyers use schemeID="0208" for their KBO/BCE enterprise number as the electronic endpoint. PartyLegalEntity/RegistrationName is the buyer’s official registered name, while PartyName/Name is their trading name.
Note: The PartyTaxScheme block is included in the UBL output only if the buyer’s tax identifier is registered with scheme 9925 (Belgian VAT). If the identifier is not registered under the 9925 scheme, this block is not added to the UBL.
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0208">0xxxxxxxx0</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeAgencyID="ZZZ" schemeID="0208">0xxxxxxxx0</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Lien Janssens</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Strepestraat 233</cbc:StreetName>
<cbc:CityName>Laar</cbc:CityName>
<cbc:PostalZone>3400</cbc:PostalZone>
<cbc:CountrySubentity>Belgium</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode listAgencyID="6" listID="ISO3166-1:Alpha2">BE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID schemeAgencyID="ZZZ" schemeID="9925">BE0xxxxxxxx0</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID schemeAgencyID="6" schemeID="UN/ECE 5153">VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Lien Janssens</cbc:RegistrationName>
<cbc:CompanyID schemeAgencyID="ZZZ" schemeID="0208">0xxxxxxxx0</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Lien Janssens</cbc:Name>
<cbc:ElectronicMail>buyer@example.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Mandatory | cac:AccountingCustomerParty | Buyer | Group providing information about the Buyer. | |
| Mandatory | cac:AccountingCustomerParty/cac:Party | Party | Buyer party container. | |
| Mandatory | Party/cbc:EndpointID | Buyer electronic address | Identifies the Buyer's electronic address to which the invoice is delivered. | 987654321 |
| Mandatory | Party/cbc:EndpointID/@schemeID | Buyer electronic address scheme ID | Identification scheme of the Buyer electronic address. | 0192 |
| Mandatory | BuyerPartyIdentification/cbc:ID | Buyer identifier | An identifier of the Buyer. | SE8765456787 |
| Optional | Party/cac:PartyName | Party name | Buyer party name container. | |
| Mandatory | BuyerPartyName/cbc:Name | Buyer trading name | A name by which the Buyer is known (Business name). | Buyer Trading Name |
| Mandatory | Party/cac:PostalAddress | Buyer postal address | Group providing Buyer address info. | |
| Optional | BuyerPostalAddress/cbc:StreetName | Buyer address line 1 | The main address line. | Hovudgatan 32 |
| Optional | BuyerPostalAddress/cbc:CityName | Buyer city | The city, town or village of the Buyer address. | Stockholm |
| Optional | BuyerPostalAddress/cbc:PostalZone | Buyer post code | The postal code of the Buyer address. | 34567 |
| Optional | BuyerPostalAddress/cbc:CountrySubentity | Buyer country subdivision | The subdivision of a country. | Region A |
| Mandatory | BuyerPostalAddress/cac:Country | Country | Buyer country container. | |
| Mandatory | BuyerPostalAddress/cac:Country/cbc:IdentificationCode | Buyer country code | A code that identifies the country. | SE |
| Optional | Party/cac:PartyTaxScheme | Party VAT identifier | Buyer VAT identifier group. | |
| Mandatory | BuyerPartyTaxScheme/cbc:CompanyID | Buyer VAT identifier | The Buyer's VAT identifier. | SE8765456787 |
| Mandatory | BuyerPartyTaxScheme/cac:TaxScheme | Tax scheme | Tax scheme container. | |
| Mandatory | BuyerPartyTaxScheme/cac:TaxScheme/cbc:ID | Tax scheme ID | Mandatory element. Use VAT. | VAT |
| Mandatory | Party/cac:PartyLegalEntity | Party legal entity | Buyer legal entity container. | |
| Mandatory | BuyerPartyLegalEntity/cbc:RegistrationName | Buyer name | The full name of the Buyer. | Buyer Full Name AS |
| Optional | BuyerPartyLegalEntity/cbc:CompanyID | Buyer legal registration identifier | Identifier from an official registrar identifying the Buyer. | 5560104525 |
| Optional | Party/cac:Contact | Buyer contact | Group providing Buyer contact information. | |
| Optional | Contact/cbc:Name | Buyer contact point | A contact point for the Buyer. | Jens Jensen |
| Optional | Contact/cbc:ElectronicMail | Buyer contact email address | An e-mail address for the Buyer contact point. | jens.j@buyer.se |
Document References
This section links the invoice to related business documents such as purchase orders, sales orders, contracts, and previously issued invoices.
<cbc:BuyerReference>Buyer Reference</cbc:BuyerReference>
<cac:OrderReference>
<cbc:ID>PO Reference</cbc:ID>
<cbc:SalesOrderID>SO-Reference</cbc:SalesOrderID>
</cac:OrderReference>
<cac:ProjectReference>
<cbc:ID>Project Reference</cbc:ID>
</cac:ProjectReference>
<cac:AdditionalDocumentReference>
<cbc:ID>BE-INV-2026-000009</cbc:ID>
<cac:Attachment>
<cbc:EmbeddedDocumentBinaryObject characterSetCode="ASCII" encodingCode="Base64" filename="invoice.pdf" mimeCode="application/pdf">
JVBERi0xLjUKJeLjz9MK...
</cbc:EmbeddedDocumentBinaryObject>
</cac:Attachment>
</cac:AdditionalDocumentReference>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Optional | cac:OrderReference | Order and sales order reference | Group for order and sales order references. | |
| Optional | cac:OrderReference/cbc:ID | Purchase order reference | Identifier of a referenced purchase order, issued by the Buyer. | 98776 |
| Optional | cac:OrderReference/cbc:SalesOrderID | Sales order reference | Identifier of a referenced sales order, issued by the Seller. | 112233 |
| Optional | cac:ProjectReference | Project reference | Reference to a project. | |
| Optional | cac:ProjectReference/cbc:ID | Project reference | The identification of the project the invoice refers to. | PID33 |
| Optional | cac:AdditionalDocumentReference | Additional supporting documents | Group providing info about additional supporting documents. | |
| Optional | cac:AdditionalDocumentReference/cbc:ID | Invoiced object identifier / Supporting document reference | Identifier for an object or supporting document. | AB23456 |
| Optional | cac:AdditionalDocumentReference/cac:Attachment | Attachment | Container for attached or external documents. | |
| Optional | cac:Attachment/cbc:EmbeddedDocumentBinaryObject | Attached document | An attached document embedded as Base64 binary object. | aHR0cHM6Ly90ZXN0... |
| Optional | cac:Attachment/cbc:EmbeddedDocumentBinaryObject/@mimeCode | Attached document Mime code | The mime code of the attached document. | text/csv |
| Optional | cac:Attachment/cbc:EmbeddedDocumentBinaryObject/@filename | Attached document Filename | The file name of the attached document. | Hours-spent.csv |
| Optional | cac:Attachment/cac:ExternalReference/cbc:URI | External document location | URL identifying where the external document is located. | http://www.example.com/index.html |
The BuyerReference is a mandatory Peppol field that helps the buyer route and identify the invoice internally. The OrderReference/ID is the purchase order number issued by the buyer. The SalesOrderID is the seller’s own sales order reference. ProjectReference/ID links the invoice to a specific project or contract identifier, making it easier for the buyer to allocate costs to the correct project in their accounting system. AdditionalDocumentReference allows you to embed supporting files (like a PDF copy of the invoice) directly in the XML as Base64-encoded binary objects. Common MIME types are application/pdf, image/png, and image/jpeg.
Delivery Information
The delivery section describes where and when goods or services were delivered. It can include the delivery date, a location identifier, the full address, and the name of the receiving party. This section is optional.
<cac:Delivery>
<cac:DeliveryLocation>
<cac:Address>
<cbc:CityName>Laar</cbc:CityName>
<cbc:PostalZone>3400</cbc:PostalZone>
<cbc:CountrySubentity>Belgium</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode listAgencyID="6" listID="ISO3166-1:Alpha2">BE</cbc:IdentificationCode>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Optional | cac:Delivery | Delivery information | Group providing info about where and when goods/services are delivered. | |
| Optional | Delivery/cac:DeliveryLocation | Delivery location | Delivery location container. | |
| Optional | DeliveryLocation/cac:Address | Deliver to address | Group providing the delivery address. | |
| Optional | DeliveryAddress/cbc:CityName | Deliver to city | The city of the delivery address. | Malmö |
| Optional | DeliveryAddress/cbc:PostalZone | Deliver to post code | The postal code of the delivery address. | 86756 |
| Optional | DeliveryAddress/cbc:CountrySubentity | Deliver to country subdivision | The subdivision of a country. | South Region |
| Optional | DeliveryAddress/cac:Country | Country | Delivery country container. | |
| Optional | DeliveryAddress/cac:Country/cbc:IdentificationCode | Deliver to country code | A code that identifies the country. | SE |
Payment Instructions
This section specifies how the buyer should pay the invoice. The PaymentMeansCode indicates the payment method.
For Belgian invoices, credit transfer with an IBAN is the standard setup. The PaymentID is used for reconciliation and typically contains the structured communication reference that appears on the bank statement.
<cac:PaymentMeans>
<cbc:PaymentMeansCode>1</cbc:PaymentMeansCode>
<cbc:PaymentID>INV-000005</cbc:PaymentID>
<cac:CardAccount>
<cbc:PrimaryAccountNumberID>f52d87</cbc:PrimaryAccountNumberID>
<cbc:NetworkID>N/A</cbc:NetworkID>
</cac:CardAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Net within 30 days</cbc:Note>
</cac:PaymentTerms>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Optional | cac:PaymentMeans | Payment instructions | Group providing information about the payment. | |
| Mandatory | PaymentMeans/cbc:PaymentMeansCode | Payment means type code | Code for how a payment is expected to be settled. | 30 |
| Optional | PaymentMeans/cbc:PaymentMeansCode/@name | Payment means text | Text for how a payment is expected to be settled. | Credit transfer |
| Optional | PaymentMeans/cbc:PaymentID | Remittance information | A textual value to establish a link between payment and Invoice. | 432948234234234 |
| Optional | PaymentMeans/cac:CardAccount | Payment card information | Group for card payment information. | |
| Optional | CardAccount/cbc:PrimaryAccountNumberID | Payment card primary account number | The PAN of the card (never include full PAN). | 1234 |
| Optional | CardAccount/cbc:NetworkID | Network ID | Syntax required element (not a business term). | NA |
| Optional | CardAccount/cbc:HolderName | Payment card holder name | The name of the payment card holder. | John Doe |
| Optional | PaymentMeans/cac:PaymentMandate | Direct debit | Group to specify a direct debit. | |
| Optional | PaymentMandate/cbc:ID | Mandate reference identifier | Unique ID assigned by Payee for the direct debit mandate. | 123456 |
| Optional | PaymentMandate/cac:PayerFinancialAccount | Payer financial account | Payer financial account container. | |
| Optional | PayerFinancialAccount/cbc:ID | Debited account identifier | The account to be debited by the direct debit. | 12345676543 |
| Optional | cac:PaymentTerms | Payment terms | Payment terms container. | |
| Optional | PaymentTerms/cbc:Note | Payment terms | Textual description of payment terms (including possible penalties). | Net within 30 days |
Allowances and Charges
This section applies document-level discounts (allowances) and surcharges (charges) that affect the entire invoice. Line-level allowances and charges are handled separately within each invoice line.
The ChargeIndicator distinguishes between the two: true for charges, false for allowances. Each entry must include the applicable VAT category and rate so the tax totals remain correct. Reason codes follow UNCL5189 for allowances and UNCL7161 for charges. The totals from this section feed into AllowanceTotalAmount and ChargeTotalAmount in the monetary totals.
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Discount</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">200</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>25</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Optional | cac:AllowanceCharge | Document level allowances and charges | Group for allowances/charges applicable to the Invoice as a whole. | |
| Optional | AllowanceCharge/cbc:ChargeIndicator | Charge indicator | Use true for Charges, false for Allowances. | false |
| Optional | AllowanceCharge/cbc:AllowanceChargeReasonCode | Allowance/charge reason code | The reason code (UNCL5189 for allowances, UNCL7161 for charges). | 95 |
| Optional | AllowanceCharge/cbc:AllowanceChargeReason | Allowance/charge reason | The reason expressed as text. | Discount |
| Optional | AllowanceCharge/cbc:MultiplierFactorNumeric | Allowance/charge percentage | The percentage used with base amount to calculate amount. | 20 |
| Optional | AllowanceCharge/cbc:Amount | Allowance/charge amount | The amount without VAT. Max 2 decimals. | 200 |
| Optional | AllowanceCharge/cbc:Amount/@currencyID | Currency ID | Mandatory attribute. Use BT-5. | EUR |
| Optional | AllowanceCharge/cbc:BaseAmount | Allowance/charge base amount | The base amount for calculation. Max 2 decimals. | 1000 |
| Optional | AllowanceCharge/cbc:BaseAmount/@currencyID | Currency ID | Mandatory attribute. Use BT-5. | EUR |
| Optional | AllowanceCharge/cac:TaxCategory | Tax category | Tax category for the allowance/charge. | |
| Optional | AllowanceCharge/TaxCategory/cbc:ID | VAT category code | Coded identification of the VAT category. | S |
| Optional | AllowanceCharge/TaxCategory/cbc:Percent | VAT rate | The VAT rate as percentage. | 25 |
| Optional | AllowanceCharge/TaxCategory/cac:TaxScheme | Tax scheme | Tax scheme container. | |
| Optional | AllowanceCharge/TaxCategory/cac:TaxScheme/cbc:ID | Tax scheme ID | Mandatory. Use VAT. | VAT |
Tax Total and VAT Breakdown
This section provides the total VAT amount and a breakdown by VAT category and rate. If the invoice has lines with different VAT rates, each rate gets its own TaxSubtotal entry. This section is mandatory.
When the tax currency differs from the document currency, two TaxTotal elements are required — one in each currency. Belgian invoices commonly use VAT categories S (standard rate — 6%, 12%, or 21%), Z (zero-rated), and AE (reverse charge for intra-EU B2B transactions).
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">64.80</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">1080.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">64.80</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>6.0</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Mandatory | cac:TaxTotal | Tax total | When tax currency is provided, two instances must be present (only one with tax subtotal). | |
| Mandatory | TaxTotal/cbc:TaxAmount | Invoice total VAT amount | Total VAT amount for the Invoice. Max 2 decimals. | 486.25 |
| Mandatory | TaxTotal/cbc:TaxAmount/@currencyID | Currency ID | Mandatory attribute. Use BT-5 or BT-6. | EUR |
| Optional | TaxTotal/cac:TaxSubtotal | VAT breakdown | Group providing VAT breakdown by category, rate and exemption. | |
| Mandatory | TaxSubtotal/cbc:TaxableAmount | VAT category taxable amount | Sum of all taxable amounts for this VAT category. Max 2 decimals. | 1945.00 |
| Mandatory | TaxSubtotal/cbc:TaxableAmount/@currencyID | Currency ID | Mandatory attribute. Use BT-5. | EUR |
| Mandatory | TaxSubtotal/cbc:TaxAmount | VAT category tax amount | Total VAT amount for a given category. Max 2 decimals. | 486.25 |
| Mandatory | TaxSubtotal/cbc:TaxAmount/@currencyID | Currency ID | Mandatory attribute. Use BT-5. | EUR |
| Mandatory | TaxSubtotal/cac:TaxCategory | VAT category | VAT category container. | |
| Mandatory | TaxSubtotal/TaxCategory/cbc:ID | VAT category code | Coded identification of a VAT category. | S |
| Optional | TaxSubtotal/TaxCategory/cbc:Percent | VAT category rate | The VAT rate as percentage. | 25 |
| Mandatory | TaxSubtotal/TaxCategory/cac:TaxScheme | Tax scheme | Tax scheme container. | |
| Mandatory | TaxSubtotal/TaxCategory/cac:TaxScheme/cbc:ID | Tax scheme ID | Mandatory. Use VAT. | VAT |
Monetary Totals
This section summarises all amounts on the invoice. It is mandatory and must be mathematically consistent — validation errors commonly occur here if the amounts don’t add up.
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">1080.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">1085.20</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">1150.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">4.80</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">10.00</cbc:ChargeTotalAmount>
<cbc:PayableRoundingAmount currencyID="EUR">0.00</cbc:PayableRoundingAmount>
<cbc:PayableAmount currencyID="EUR">1150.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Mandatory | cac:LegalMonetaryTotal | Document totals | Group providing monetary totals for the Invoice. | |
| Mandatory | LegalMonetaryTotal/cbc:LineExtensionAmount | Sum of Invoice line net amount | Sum of all Invoice line net amounts. Max 2 decimals. | 3800.0 |
| Mandatory | LegalMonetaryTotal/cbc:LineExtensionAmount/@currencyID | Currency ID | line items total Currency Code | EUR |
| Mandatory | LegalMonetaryTotal/cbc:TaxExclusiveAmount | Invoice total amount without VAT | Total amount without VAT. Max 2 decimals. | 3600.0 |
| Mandatory | LegalMonetaryTotal/cbc:TaxExclusiveAmount/@currencyID | Currency ID | invoice total without tax Currency Code | EUR |
| Mandatory | LegalMonetaryTotal/cbc:TaxInclusiveAmount | Invoice total amount with VAT | Total amount with VAT. Max 2 decimals. | 4500.0 |
| Mandatory | LegalMonetaryTotal/cbc:TaxInclusiveAmount/@currencyID | Currency ID | invoice total with tax Currency Code | EUR |
| Optional | LegalMonetaryTotal/cbc:AllowanceTotalAmount | Sum of allowances on document level | Sum of all document level allowances. Max 2 decimals. | 200.0 |
| Optional | LegalMonetaryTotal/cbc:AllowanceTotalAmount/@currencyID | Currency ID | Sum of total Invoice Allowance (entity level) Currency Code | EUR |
| Optional | LegalMonetaryTotal/cbc:ChargeTotalAmount | Sum of charges on document level | Sum of all document level charges. Max 2 decimals. | 0.0 |
| Optional | LegalMonetaryTotal/cbc:ChargeTotalAmount/@currencyID | Currency ID | Sum of total Invoice Charges (entity level) Currency Code | EUR |
| Optional | LegalMonetaryTotal/cbc:PrepaidAmount/@currencyID | Currency ID | Mandatory attribute. Use BT-5. | EUR |
| Optional | LegalMonetaryTotal/cbc:PayableRoundingAmount | Rounding amount | Amount to add for rounding. Max 2 decimals. | 0.0 |
| Optional | LegalMonetaryTotal/cbc:PayableRoundingAmount/@currencyID | Currency ID | Amount to add for rounding at entity level Currency Code | EUR |
| Mandatory | LegalMonetaryTotal/cbc:PayableAmount | Amount due for payment | The outstanding amount requested to be paid. Max 2 decimals. | 3500.0 |
| Mandatory | LegalMonetaryTotal/cbc:PayableAmount/@currencyID | Currency ID | Payable Amount Currency Code | EUR |
Invoice Lines
Each invoice must have at least one invoice line representing a good or service being billed. Every line includes a unique ID, the invoiced quantity with its unit code (UN/ECE Rec 20, e.g., C62 for units, KGM for kilograms), the line net amount, and item details such as the name, description, VAT category, and unit price.
Lines can also include their own allowances and charges, an invoice period, and references to purchase order lines or object identifiers. The ClassifiedTaxCategory within each line item determines which VAT bucket the line falls into for the tax breakdown.
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">4.0</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">1080.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>N/A</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">8.00</cbc:Amount>
</cac:AllowanceCharge>
<cac:Item>
<cbc:Description>Item description text</cbc:Description>
<cbc:Name>Dozen Cement</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>6.0</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">205.00</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62" unitCodeListID="UNECERec20">1.0</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
Field Reference & Books Mapping
| Status | XPath | Zoho Books Field | Description | Example |
|---|---|---|---|---|
| Mandatory | cac:InvoiceLine | Invoice line | Group providing information on individual Invoice lines. | |
| Mandatory | InvoiceLine/cbc:ID | Invoice line identifier | A unique identifier for the individual line. | 12 |
| Mandatory | InvoiceLine/cbc:InvoicedQuantity | Invoiced quantity | The quantity of items charged in the Invoice line. | 100 |
| Mandatory | InvoiceLine/cbc:InvoicedQuantity/@unitCode | Invoiced quantity unit of measure | Unit of measure for the invoiced quantity (UN/ECE Rec 20/21). | C62 |
| Mandatory | InvoiceLine/cbc:LineExtensionAmount | Invoice line net amount | Total amount of the line net of VAT. Max 2 decimals. | 2145.00 |
| Mandatory | InvoiceLine/cbc:LineExtensionAmount/@currencyID | Currency ID | Currency of Invoice line net amount | EUR |
| Mandatory | LineDocumentReference/cbc:ID | Invoice line object identifier | Identifier for an object on which the line is based. | AB12345 |
| Optional | LineDocumentReference/cbc:ID/@schemeID | Line object identifier scheme ID | Identification scheme of the line object identifier. | ABZ |
| Optional | InvoiceLine/cac:AllowanceCharge | Line allowances or charges | Group for allowances/charges on the Invoice line. | |
| Optional | AllowanceCharge/cbc:ChargeIndicator | Charge indicator | Use true for Charges, false for Allowances. | false |
| Optional | AllowanceCharge/cbc:AllowanceChargeReason | Line allowance/charge reason | Reason expressed as text. | Discount |
| Optional | AllowanceCharge/cbc:MultiplierFactorNumeric | Line allowance/charge percentage | Percentage used with base amount to calculate amount. | 20 |
| Optional | AllowanceCharge/cbc:Amount | Line allowance/charge amount | The amount without VAT. Max 2 decimals. | 200 |
| Optional | AllowanceCharge/cbc:Amount/@currencyID | Currency ID | Line Allowance total Currency Code | EUR |
| Optional | AllowanceCharge/cbc:BaseAmount | Line allowance/charge base amount | Base amount for calculation. Max 2 decimals. | 1000 |
| Optional | AllowanceCharge/cbc:BaseAmount/@currencyID | Currency ID | Line Item Base Currency Total Currency Code | EUR |
| Mandatory | InvoiceLine/cac:Item | Item information | Group providing info about the goods/services invoiced. | |
| Optional | Item/cbc:Description | Item description | A description for an item, more detail than Item name. | Long description of the item on the invoice line |
| Mandatory | Item/cbc:Name | Item name | A name for an item. | Item name |
| Mandatory | Item/cac:ClassifiedTaxCategory | Line VAT information | Group for VAT info applicable to the goods/services invoiced on the line. | |
| Mandatory | ClassifiedTaxCategory/cbc:ID | Invoiced item VAT category code | The VAT category code for the invoiced item. | S |
| Optional | ClassifiedTaxCategory/cbc:Percent | Invoiced item VAT rate | The VAT rate as percentage for the invoiced item. | 25 |
| Mandatory | ClassifiedTaxCategory/cac:TaxScheme | Tax scheme | Tax scheme container. | |
| Mandatory | ClassifiedTaxCategory/cac:TaxScheme/cbc:ID | Tax scheme ID | Mandatory. Use VAT. | VAT |
| Mandatory | InvoiceLine/cac:Price | Price details | Group providing price info for the Invoice line. | |
| Mandatory | Price/cbc:PriceAmount | Item net price | Price of an item, exclusive of VAT, after subtracting item price discount. | 23.45 |
| Mandatory | Price/cbc:PriceAmount/@currencyID | Currency ID | Mandatory attribute. Use BT-5. | EUR |
| Optional | Price/cbc:BaseQuantity | Item price base quantity | The number of item units to which the price applies. | 1 |
| Optional | Price/cbc:BaseQuantity/@unitCode | Item price base quantity unit of measure | Unit of measure for the base quantity (must match invoiced quantity unit). | C62 |