W System / Blog / Belgium Peppol e-invoicing for software builders
Belgium Peppol e-invoicing for software builders: what the mandate needs from your product
In short: Belgium is the one EU country where B2B e-invoicing over Peppol is already mandatory. Since 1 January 2026, VAT-liable businesses established in Belgium must send each other Peppol BIS Billing 3.0 invoices over the Peppol network and must be able to receive them; a PDF by e-mail no longer counts. The three-month tolerance ended on 31 March 2026, and lacking the means to send and receive now costs EUR 1,500 to 5,000 per offence. There is no national format on top of Peppol BIS, but there are Belgian habits your software must get right: 0208 addressing with the enterprise number, the reverse-charge and exemption wording, credit notes and attachments over Peppol. Next: FPS Finance becomes the Peppol Authority on 1 January 2027, and e-reporting is planned for 2028. Timeline, scope, rules, a checklist and two live calls below.
Timeline
| Date | What changes | Status |
|---|---|---|
| 1 January 2026 | Structured e-invoices (Peppol BIS Billing 3.0 over Peppol) mandatory for domestic B2B supplies between VAT-liable businesses established in Belgium; every in-scope business must also be able to receive them | in force (law of 6 February 2024) |
| 1 January – 31 March 2026 | Tolerance: no fines for missing technical means or invoices a system could not yet issue, if the business shows it took timely and reasonable steps | ended |
| 1 January 2027 | FPS Finance takes over from FPS BOSA as the responsible authority and Belgian Peppol Authority | announced 25 June 2026; EC country sheet updated 16 October 2026 |
| 1 January 2028 | Flat-rate (article 56) businesses lose their issuing exemption; near-real-time e-reporting via Peppol (five-corner model) to replace the annual customer listing | flat-rate end in the 2024 law; e-reporting is a pre-draft law, not yet law |
| 1 July 2030 at the latest | Reporting for intra-EU transactions under ViDA | EU law, to be transposed |
Who is in scope
Issuers: every VAT-liable business established in Belgium, including Belgian branches of foreign companies and members of VAT groups, for domestic supplies to a customer that must give its Belgian VAT number. Domestic reverse-charge supplies are included; intra-EU supplies, exports and supplies to consumers are not. Users of the small-business exemption (turnover up to EUR 25,000) and farmers under the agricultural scheme must at least be able to receive. Out of scope: businesses with only article 44 exempt supplies, flat-rate businesses for issuing (until 1 January 2028 at the latest), bankrupt businesses for issuing, and foreign companies registered for VAT in Belgium without a permanent establishment there; the FPS notes the law is still being amended on that last point. A Belgian company acting as individual or global tax representative for a non-established business does not issue under that business's number (FAQ 25).
Format and network
The format is Peppol BIS Billing 3.0 (UBL 2.1, EN 16931); Belgium adds no national CIUS. Invoices travel over Peppol: your software, or the service provider it connects to, sends to the buyer's access point found through the Peppol SMP. Belgian participants are mostly registered as 0208: plus the 10-digit enterprise number (KBO/BCE), some under 9925: plus the VAT number. A customer cannot force a supplier onto its own portal without written consent, and invoices to public bodies still go through Mercurius, which is itself a Peppol access point.
Belgian rules your invoice must follow
From the official specific questions FAQ:
- Credit notes are e-invoices too and go over Peppol in the same format as the original (FAQ 5, 23).
- Attachments belong to the invoice: embed them in the UBL or link them, never by separate e-mail. EN 16931 allows pdf, png, jpg, csv, xlsx and ods; XML by agreement (FAQ 6; B2B FAQ 19–22).
- Reverse charge and other VAT clauses go in a note: invoice note BT-22 or the exemption reason BT-120. A buyer should not reject an invoice that says "reverse charge" but lacks the detailed wording (FAQ 11, 27).
- Missing VATEX codes: Belgian exemptions without a code go in the free text BT-120 (FAQ 9). Out-of-scope lines may temporarily use category E with a note in BT-120 when they share an invoice with taxable lines (FAQ 8).
- Several exemption reasons on one invoice: temporarily allowed in the line note BT-127, with BT-120 just "Exempt from VAT" (FAQ 10).
- Legal-entity data (register of legal entities, legal form, "in liquidation") preferably goes in BT-33 (FAQ 14).
- Date of the taxable event, when it differs from the issue date, goes in BT-72 (ActualDeliveryDate) or the line period BT-134/135 (FAQ 17).
- Self-billing uses the Peppol self-billing document type, and the supplier must be registered to receive it (FAQ 22).
- Foreign currency is allowed, but the VAT total must also be in euro (FAQ 13).
- Wrong recipient: the receiver rejects with a Peppol Invoice Response status RE; the sender corrects with a credit note (FAQ 28, 29).
- Legibility: the receiver stores the structured invoice for the full retention period and must keep it readable, usually through a PDF or viewer (B2B FAQ 17).
Checklist for invoicing and ERP builders
- Emit Peppol BIS Billing 3.0 UBL invoices and credit notes; validate each one against EN 16931 and the Peppol rules before it leaves.
- Store each Belgian customer's enterprise number and look up
0208:<number>(and9925:BE…) in the Peppol Directory before the first send. - Map your VAT cases: reverse charge as category AE with the wording in BT-120 or BT-22, exemptions with a VATEX code or the free text, special schemes per the Business Expert Group guidance.
- Put legal form and register data in BT-33 and the delivery date in BT-72 when it differs from the issue date.
- Embed attachments in the UBL; drop any "send the annex by e-mail" feature for Belgian B2B.
- Receive as well as send: handle incoming invoices, Invoice Responses (accept, reject with RE) and self-billing documents.
- Keep a readable rendition of each stored invoice.
- Plan for 2027–2028: a new Peppol Authority (watch the Service Provider Forum) and, if the law passes, near-real-time e-reporting through the five-corner model.
Example 1: can this Belgian company receive Peppol invoices?
Disclosure: W System, which publishes this page, makes the API used in both examples. GET https://api.wsystem.dev/einvoice/route?id=BE0202239951 checks the VAT number in VIES, looks the company up on Peppol (public Peppol Directory, then SML/SMP) under the Belgian schemes and returns the Belgian mandate row. Real response from the live API on 22 October 2026 (shortened):
{
"query": "BE0202239951",
"vat": {
"vat": "BE0202239951",
"status": "valid",
"valid": true,
"name": "SA DPU PROXIMUS",
"address": "Boulevard du Roi AlbertII 27, 1030 Schaerbeek",
"consultation_number": null
},
"peppol": {
"participant_id": "iso6523-actorid-upis::0208:0202239951",
"name": "Proximus S.A.",
"registered": true,
"supports_peppol_bis3_invoice": true,
"supports_peppol_bis3_creditnote": true,
"registered_since": "2025-06-02"
},
"mandate": {
"b2b_mandatory": true,
"since": "2026-01-01",
"scope": "Domestic B2B between Belgian VAT-registered businesses (penalties since 2026-04-01).",
"format": "Peppol BIS Billing 3.0 (UBL) via Peppol",
"channel": "Peppol",
"next": "Near-real-time e-reporting planned 2028-01-01 (draft law).",
"source": "https://finance.belgium.be/en/enterprises/vat/e-invoicing",
"country": "BE",
"as_of": "2026-10-21"
},
"recommendation": {
"format": "peppol-bis3",
"channel": "Peppol",
"create_with": "POST /einvoice/create {\"format\":\"peppol-bis3\"}",
"why": "The company is registered on Peppol for BIS Billing 3.0 invoices."
}
}
Example 2: create a Belgian reverse-charge invoice and check it
A renovation invoice between two placeholder Belgian companies (made-up enterprise numbers): reverse charge (category AE) with the wording in BT-120, enterprise numbers as 0208 endpoints and legal entity ids, legal form and register in BT-33, and a delivery date before the issue date in BT-72. The API builds Peppol BIS 3 UBL and checks it with the official CEN EN 16931 rules. It does not yet run the Peppol-specific rules, does not send anything and does not judge the VAT treatment. Not tax advice.
curl -X POST https://api.wsystem.dev/einvoice/create \
-H 'Content-Type: application/json' --data @invoice.json
invoice.json:
{
"format": "peppol-bis3",
"invoice_number": "2026-0318",
"issue_date": "2026-10-22",
"due_date": "2026-11-21",
"currency": "EUR",
"buyer_reference": "PO-4471",
"delivery_date": "2026-10-16",
"seller": {
"name": "Renovatie Voorbeeld BV",
"vat_id": "BE0123456749",
"company_id": "0123456749",
"company_id_scheme": "0208",
"legal_form": "BV, RPR Gent",
"street": "Voorbeeldstraat 1",
"city": "Gent",
"postal_code": "9000",
"country": "BE"
},
"buyer": {
"name": "Kantoor Exemple SRL",
"vat_id": "BE0765432146",
"company_id": "0765432146",
"company_id_scheme": "0208",
"street": "Rue de l'Exemple 2",
"city": "Namur",
"postal_code": "5000",
"country": "BE"
},
"lines": [
{
"description": "Renovation works on office building, October 2026",
"quantity": 1,
"unit": "C62",
"unit_price": 4800,
"vat_category": "AE",
"vat_rate": 0
}
],
"vat_exemption_reason": {
"AE": "Reverse charge - Autoliquidation - Verlegging van heffing"
},
"payment": {
"iban": "BE68539007547034",
"terms": "30 days"
}
}
Real response from the live API on 22 October 2026 (the generated XML left out):
{
"valid": true,
"format": "peppol-bis3",
"syntax": "UBL 2.1",
"document_type": "ubl_inv",
"totals": {
"currency": "EUR",
"line_total": "4800.00",
"vat_total": "0.00",
"total_with_vat": "4800.00",
"payable": "4800.00"
},
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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>2026-0318</cbc:ID><cbc:IssueDate>2026-10-22</cbc:IssueDate><cbc:DueDate>2026-11-21</cbc:DueDate><cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode><cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode><cbc:BuyerReference>PO-4471</cbc:BuyerReference><cac:AccountingSupplierParty><cac:Party><cbc:EndpointID schemeID=\"0208\">0123456749</cbc:EndpointID><cac:PostalAddress><cbc:StreetName>Voorbeeldstraat 1</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>BE0123456749</cbc:CompanyID><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:PartyTaxScheme><cac:PartyLegalEntity><cbc:RegistrationName>Renovatie Voorbeeld BV</cbc:RegistrationName><cbc:CompanyID schemeID=\"0208\">0123456749</cbc:CompanyID><cbc:CompanyLegalForm>BV, RPR Gent</cbc:CompanyLegalForm></cac:PartyLegalEntity></cac:Party></cac:AccountingSupplierParty><cac:AccountingCustomerParty><cac:Party><cbc:EndpointID schemeID=\"0208\">0765432146</cbc:EndpointID><cac:PostalAddress><cbc:StreetName>Rue de l'Exemple 2</cbc:StreetName><cbc:CityName>Namur</cbc:CityName><cbc:PostalZone>5000</cbc:PostalZone><cac:Country><cbc:IdentificationCode>BE</cbc:IdentificationCode></cac:Country></cac:PostalAddress><cac:PartyTaxScheme><cbc:CompanyID>BE0765432146</cbc:CompanyID><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:PartyTaxScheme><cac:PartyLegalEntity><cbc:RegistrationName>Kantoor Exemple SRL</cbc:RegistrationName><cbc:CompanyID schemeID=\"0208\">0765432146</cbc:CompanyID></cac:PartyLegalEntity></cac:Party></cac:AccountingCustomerParty><cac:Delivery><cbc:ActualDeliveryDate>2026-10-16</cbc:ActualDeliveryDate></cac:Delivery><cac:PaymentMeans><cbc:PaymentMeansCode>58</cbc:PaymentMeansCode><cac:PayeeFinancialAccount><cbc:ID>BE68539007547034</cbc:ID></cac:PayeeFinancialAccount></cac:PaymentMeans><cac:PaymentTerms><cbc:Note>30 days</cbc:Note></cac:PaymentTerms><cac:TaxTotal><cbc:TaxAmount currencyID=\"EUR\">0.00</cbc:TaxAmount><cac:TaxSubtotal><cbc:TaxableAmount currencyID=\"EUR\">4800.00</cbc:TaxableAmount><cbc:TaxAmount currencyID=\"EUR\">0.00</cbc:TaxAmount><cac:TaxCategory><cbc:ID>AE</cbc:ID><cbc:Percent>0</cbc:Percent><cbc:TaxExemptionReasonCode>VATEX-EU-AE</cbc:TaxExemptionReasonCode><cbc:TaxExemptionReason>Reverse charge - Autoliquidation - Verlegging van heffing</cbc:TaxExemptionReason><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory></cac:TaxSubtotal></cac:TaxTotal><cac:LegalMonetaryTotal><cbc:LineExtensionAmount currencyID=\"EUR\">4800.00</cbc:LineExtensionAmount><cbc:TaxExclusiveAmount currencyID=\"EUR\">4800.00</cbc:TaxExclusiveAmount><cbc:TaxInclusiveAmount currencyID=\"EUR\">4800.00</cbc:TaxInclusiveAmount><cbc:PayableAmount currencyID=\"EUR\">4800.00</cbc:PayableAmount></cac:LegalMonetaryTotal><cac:InvoiceLine><cbc:ID>1</cbc:ID><cbc:InvoicedQuantity unitCode=\"C62\">1</cbc:InvoicedQuantity><cbc:LineExtensionAmount currencyID=\"EUR\">4800.00</cbc:LineExtensionAmount><cac:Item><cbc:Name>Renovation works on office building, October 2026</cbc:Name><cac:ClassifiedTaxCategory><cbc:ID>AE</cbc:ID><cbc:Percent>0</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:ClassifiedTaxCategory></cac:Item><cac:Price><cbc:PriceAmount currencyID=\"EUR\">4800</cbc:PriceAmount></cac:Price></cac:InvoiceLine></Invoice>",
"errors": [],
"warnings": [],
"checked": {
"xsd": true,
"EN16931": true,
"XRechnung": false,
"PeppolBIS3": false,
"SK_national": false,
"NO_national": false
},
"notes": [
"Built to the Peppol BIS Billing 3.0 structure and checked against EN 16931 only; Peppol-specific rules are not run yet."
],
"disclaimer": "Technical check against the official EN 16931 / XRechnung rule sets. A technically valid file is not tax or legal advice. Peppol BIS 3 specific rules (PEPPOL-EN16931-*) are not checked yet."
}
To check a file your product already makes, drop it into the free e-invoice validator (no key) or post it to /einvoice/validate. Free for 20 calls a day per IP; details on the e-invoice API page.
Questions and answers
Who must send Peppol e-invoices in Belgium?
Since 1 January 2026, VAT-liable businesses established in Belgium (including Belgian branches of foreign companies and VAT groups) must issue structured e-invoices for domestic B2B supplies to customers that give a Belgian VAT number. Users of the small-business exemption scheme and farmers under the special agricultural scheme must at least be able to receive them. Not obliged: businesses with only article 44 exempt supplies, flat-rate businesses for issuing (until 1 January 2028 at the latest), bankrupt businesses for issuing, and foreign businesses registered for VAT in Belgium without a permanent establishment there.
Which Peppol identifier does a Belgian company use?
Usually 0208 followed by the 10-digit enterprise number (KBO/BCE), for example 0208:0202239951. Some companies are also or only registered under 9925 with the VAT number. Look up both before deciding a customer cannot receive.
What are the fines?
Not having the technical means to issue and receive a structured e-invoice costs EUR 1,500 for a first offence, EUR 3,000 for a second and EUR 5,000 for later ones; a repeat counts only if found at least three months after the previous fine (Royal Decree of 8 July 2025). The existing fines for missing, late or incorrect invoices also apply to e-invoices.
Are credit notes and attachments sent via Peppol too?
Yes. A document that changes a structured e-invoice and refers to it is itself a structured e-invoice, so credit notes go over Peppol. Attachments belong to the invoice and must travel in the same UBL message (embedded or as an external link), not by e-mail; EN 16931 allows pdf, png, jpg, csv, xlsx and ods.
Does Belgium send invoice data to the tax administration yet?
No. In the current phase nothing is reported. Near-real-time e-reporting via Peppol is planned for 2028 in the coalition agreement and a pre-draft law, but it is not law yet. When it comes it replaces the annual customer listing.
Does my invoicing software have to become a Peppol access point?
No. The FPS BOSA list of compliant solutions is for end-user software; software vendors that want to connect to Peppol can work through a certified Peppol service provider. Becoming one yourself goes through the Belgian Peppol Authority (peppol.be).
Sources
- FPS BOSA: structured electronic invoices between companies are compulsory since 2026
- e-invoice.belgium.be: specific questions about e-invoicing (FAQ 1–32, incl. fines)
- e-invoice.belgium.be: general questions on the B2B obligation
- e-invoice.belgium.be: general questions about e-reporting
- FPS Finance tolerance for the first three months of 2026 (18 December 2025)
- European Commission: 2026 Belgium eInvoicing country sheet (updated 16 October 2026)
- Law of 6 February 2024 introducing the structured e-invoice obligation (text)
Related
- E-invoicing API for EU mandates
- EU e-invoice API: validate, create and route
- Slovakia eFaktúra 2027 (Peppol BIS 3 with 0245:DIČ)
- Norway e-invoicing from 1 January 2027 (EHF / Peppol BIS)
- Germany: BMF letter of 15 October 2026
Checked against the FPS BOSA and FPS Finance pages on e-invoice.belgium.be and the European Commission country sheet on 22 October 2026.
Facts checked 2026-10-22. W System is the maker of this product. Not affiliated with the European Commission. Not legal or tax advice.