· via dev.to (home feed)
UAE Peppol B2B e-invoicing pilot is live and Odoo has no native access point
UAE's B2B e-invoicing pilot went live on 1 July 2026, requiring PINT AE XML over Peppol. A dev.to walkthrough maps the 17 mandatory fields to Odoo and flags the data gaps that block compliance.

UAE e-invoicing pilot is now live
UAE mandatory e-invoicing entered its pilot phase on 1 July 2026, and according to a technical walkthrough published on dev.to, every VAT-registered business in the country sending B2B invoices must now route them through the UAE Peppol network formatted as PINT AE XML. For developers working with Odoo deployments, the post identifies an immediate gap: Odoo ships without a UAE Peppol access point, so the transmission layer has to be added externally.
How the UAE Peppol network is structured
The dev.to article describes the standard Peppol four-corner model: the seller's ERP, the seller's accredited service provider (ASP), the buyer's ASP, and the buyer's ERP. The seller-side ASP is where developers plug in. It validates each invoice against the PINT AE schema, handles the Peppol transmission, and returns a status response the ERP can record.
For Odoo specifically, the recommended flow intercepts the moment an account.move record is posted, reads the invoice data from the ORM, maps it to PINT AE fields, serialises it to XML, posts it to the ASP's API endpoint, and writes the returned status back onto the invoice record.
What PINT AE requires
PINT AE is the UAE's national extension of Peppol BIS Billing 3.0, defined in version 1.1 of the Ministry of Finance's Electronic Invoicing Guidelines, which the post dates to June 2026. Every B2B invoice must pass schema validation before the ASP will transmit it.
The schema lists 17 mandatory fields, identified by BT codes. They cover the invoice number, an ISO 8601 date, a type code (380 for a standard invoice, 381 for a credit note), an ISO 4217 currency code, names, 15-digit TRNs, street addresses, cities and country codes for both supplier and buyer, plus the sum of line net amounts, the total VAT amount and per-line net amounts. The supplier's country code must read AE.
Beyond the header, each invoice line must carry one of four VAT category codes: S for the 5% standard rate, Z for zero-rated supplies such as exports, E for exempt supplies, and O for out-of-scope transactions. Units of measure must be expressed as UN/CEFACT codes, for example EA, KGM, LTR or HUR.
The Odoo side of the mapping
The post maps each BT field onto Odoo models: invoice-level fields land on account.move, supplier details on res.company, buyer details on res.partner, and line amounts on account.move.line. Two pieces do not exist in stock Odoo. Units of measure carry no UN/CEFACT codes, and tax records have no PINT AE category. Both require custom fields, which the article models as an added code field on uom.uom and a VAT-category selection field on account.tax, populated through data files.
Data quality, not schema, is the bottleneck
The author's core argument is that schema compliance is the easy part; messy data in existing Odoo databases is what actually stalls implementations. Five failures recur across UAE deployments: buyer TRNs missing, which the post reports on 20-40% of customer records in typical databases; street and city crammed into a single street field; missing UN/CEFACT codes on units of measure; tax records without a VAT category; and UAE fiscal positions left unset on customer records, which prevents tax lines from carrying the correct category.
The suggested remedies are unglamorous: bulk partner imports, constraint checks that require a VAT number for UAE customers, migration scripts to split combined addresses, and data files to backfill unit and tax codes.
Talking to the ASP
The API pattern is similar across most FTA-approved ASPs, per the post: POST the XML payload with a bearer token and an invoice identifier header. A 200 response means the invoice was sent and returns a Peppol ID plus a timestamp; a 422 returns structured validation errors that the connector can surface to users.
Why it matters
The UAE mandate turns e-invoicing from a formatting concern into a live integration project with a compliance obligation attached. ERPs without native Peppol connectivity, Odoo among them, need connectors, custom fields and, more expensively, data cleanup before a single valid invoice can leave the system. The pattern also travels: Peppol underpins similar regimes in other jurisdictions, so the field mappings and failure modes documented here are broadly reusable. And because the ASP rejects non-validating XML, incomplete customer records now carry a direct cash-flow cost, since invoices that cannot be transmitted cannot be settled.
- #e-invoicing
- #peppol
- #odoo
- #uae
- #erp