Skip to Content

Belgium EN 16931 Check

74.55 74.55

Instant digital delivery after payment confirmation.
License: OPL-1, every download is watermarked.
Terms and Conditions

Belgium EN 16931 Check

Deep Peppol BIS 3.0 business-rule validation for the Belgian B2B mandate

Belgium made structured B2B e-invoicing over the Peppol network mandatory on 1 January 2026 (sanction tolerance to 31 March 2026; repeat breaches up to EUR 5 000). Belgian invoices travel as Peppol BIS Billing 3.0 UBL — a CIUS of EN 16931 — and a Belgian access point runs the document against the official EN 16931 + Peppol-EN16931 Schematron before it will route it. This module runs that same body of business rules inside Odoo, so a non-compliant invoice is caught up front instead of being bounced downstream.

Real EN 16931 rule engine

The calculation chain (BR-CO)

  • Line net = qty × (price / base qty) − allowances + charges
  • Sum of invoice line net amounts (BT-106)
  • Document allowance / charge totals (BT-107 / BT-108)
  • Tax-exclusive total (BT-109) and per-category VAT math (BT-116/117)
  • Total VAT (BT-110), grand total (BT-112)
  • Amount-due chain — prepaid / rounding / payable (BT-113/114/115)

Every check uses the EN 16931 ±0.02 rounding tolerance.

VAT categories done right

  • BR-S standard rated — positive rate + seller VAT id
  • BR-Z zero rated · BR-E exempt
  • BR-AE reverse charge — buyer VAT id required
  • BR-G export · BR-O out of scope
  • BR-IC/K intra-community supply
  • Mandatory VAT exemption reason (BT-120 / BT-121) with the standard VATEX code

Belgian VAT-category classifier

Beyond the naive mapping

A naive connector maps “rate > 0 → S, rate = 0 → Z” and ships invoices a Belgian access point rejects. A 0 % line can legitimately be Z, E, AE, K, G or O — and each demands a different exemption reason. This module inspects the Belgian 21/12/6/0 % rates and the partner context (domestic, EU B2B, EU B2C, export; VAT-registered or not) to assign the correct category and reason.

Decimal & payment-terms rules

  • BR-DEC — at most two decimals on monetary amounts
  • BR-CO-25 — a positive amount due needs a due date or payment terms
  • PEPPOL-EN16931 — one VAT breakdown per category/rate; allowance/charge reasons

Workflow

  • One-click Validate EN 16931 on every customer invoice
  • Per-invoice status: Valid / Valid-with-Warnings / Invalid
  • Error & warning counters and a report tab citing each BR-* rule
  • Optional batch cron to pre-flight posted documents
  • Company settings: enable, block-on-error, strict-warnings

Built on the e-Invoice Core Engine

This validator layers on the shared e-Invoice Core Engine framework and the Belgium Peppol CIUS rule pack (both installed automatically as dependencies). The EN 16931 rules are real, deterministic algorithms — not stubs — and are unit tested with plain python.

Privacy: validation runs entirely inside your own Odoo database. No data is transmitted to Belgian authorities, to Peppol, or to any third party; transport stays with your existing access point.

Compatible with Odoo 18 and Odoo 19.

Screenshots

Invoice With En 16931 Deep V

Invoice With En 16931 Deep V

Customer Invoices List En 16

Customer Invoices List En 16

Update date: 2026-07-02