
Odoo Integration
UAE E-Invoicing for Odoo β PINT-AE Made Simple
TrustBill bridges your Odoo instance to the UAE FTA e-invoicing network. Whether you run self-hosted Odoo or Odoo.sh, we handle PINT-AE XML conversion, validation, and accredited ASP submission β no ERP migration needed.
Is Odoo PINT-AE ready out of the box?
Odoo has built-in Peppol e-invoicing for many countries, but the UAE is not yet in Odoo's native Peppol country list and no official PINT-AE module has shipped as of the latest releases. That means Odoo will not generate PINT-AE XML or transmit invoices through a UAE Accredited Service Provider on its own. The fix is a certified PINT-AE connector. TrustBill acts as the ASP bridge: it reads invoice data from Odoo, converts it to validated PINT-AE XML, and submits it to the FTA network on your behalf.
Odoo field β PINT-AE mapping
The exact mapping TrustBill applies when converting an Odoo `account.move` record (via XML-RPC / JSON-RPC or Automated Actions webhook) to PINT-AE XML. Field names below are the Odoo 15β18 model field IDs; Studio custom fields follow the same conventions once created. Keep this table handy before configuring your Odoo VAT taxes and partner masters.
| Odoo field | PINT-AE / UBL 2.1 field | Note |
|---|---|---|
| account.move.name | cbc:ID | Odoo invoice sequence. Must be unique across all submissions. |
| account.move.invoice_date | cbc:IssueDate | ISO date. Must not be in the future. |
| res.partner.vat (partner) | cac:AccountingCustomerParty/cac:PartyTaxScheme/cbc:CompanyID | Buyer TRN β 15 digits. Set on the partner (Contacts) record. |
| res.company.vat | cac:AccountingSupplierParty/cac:PartyTaxScheme/cbc:CompanyID | Your TRN. Set once on the res.company record. |
| account.move.line.name / product_id.name | cac:InvoiceLine/cbc:Description or cac:Item/cbc:Name | Line-item text. UTF-8; Arabic product translations honoured. |
| account.move.line.quantity Γ price_unit | cbc:LineExtensionAmount, cbc:BaseQuantity, cac:Price/cbc:PriceAmount | PINT-AE reconstructs the line total from qty Γ price. |
| account.move.line.tax_ids β account.tax.name | cac:ClassifiedTaxCategory (S=5%, Z=0%, E=exempt, O=out-of-scope) | Odoo tax record must map to a PINT-AE category via TrustBill Tax Mapping. |
| account.move.currency_id | cbc:DocumentCurrencyCode | AED for domestic; non-AED needs a currency rate for the invoice date. |
| account.move.amount_total | cac:LegalMonetaryTotal/cbc:PayableAmount | Reconciled against line totals + tax; mismatch = validation failure. |
| res.partner.x_free_zone (Studio field) | Extension namespace flag; VAT category derived | Add the custom field to the partner form once via Studio. |
| account.move.narration / x_advance_uuid | cac:DocumentReference for advance-payment linking (type 386) | Populate on any invoice that recovers a prior advance. |
| account.move.reversed_entry_id (credit note) | cbc:InvoiceTypeCode="381"; cac:BillingReference/cac:InvoiceDocumentReference | Odoo credit notes must be created from the source invoice via 'Add Credit Note', not standalone. |
Common Odoo β PINT-AE validation errors
The eight most-hit validation errors when an Odoo invoice fails PINT-AE checks, and exactly what to fix in Odoo to clear each one. TrustBill's dashboard surfaces these codes with plain-English explanations; the table below is the reference version.
| Error code | Meaning | Fix in Odoo (15β18) |
|---|---|---|
| PAE-BR-01 | Buyer TRN missing or malformed. | Contacts β edit the partner β set Tax ID (vat) to the 15-digit TRN. Country must be United Arab Emirates. |
| PAE-BR-04 | Seller TRN missing. | Settings β Users & Companies β Companies β edit β set Tax ID. |
| PAE-BR-11 | Line-total mismatch (qty Γ price β line total). | In the invoice, edit the line and correct rounding on Quantity or Unit Price so the amount reconciles. Check the Decimal Precision settings if issue recurs. |
| PAE-BR-12 | Odoo tax not mapped to a PINT-AE category. | TrustBill β Settings β Tax Mapping. Map each Odoo tax (5% VAT, 0% Zero Rated, VAT Exempt, etc.) to a PINT-AE category (S / Z / E / O). |
| PAE-BR-14 | Currency is not AED and no FX rate reference supplied. | Settings β Companies β check Multi-Currency is enabled and rates are configured for the invoice date. |
| PAE-BR-21 | Credit note lacks a valid parent invoice reference. | In Odoo, open the source invoice β Actions β Add Credit Note. Do not create the credit note as a standalone entry. |
| PAE-BR-22 | Advance-payment invoice not linked to its recovery. | Add a Studio field x_advance_uuid on account.move and populate it on the recovery invoice with the advance-invoice UUID. |
| PAE-BR-31 | Free-zone flag set but supply-place code not present. | In the partner form, set the free-zone Studio field and ensure the shipping address street/city includes the free-zone name. |
Self-hosted Odoo vs Odoo.sh for UAE e-invoicing
Both deployment options work with TrustBill. Self-hosted Odoo gives you full control over the server and lets you install any connector module from the Odoo Apps Store. Odoo.sh is Odoo's managed cloud platform and is faster to maintain, but it still needs a PINT-AE bridge because the UAE is not natively supported. TrustBill integrates via a secure API with either environment, so you do not need to change your hosting choice to become compliant.
Odoo setup timeline and key milestones
Most Odoo e-invoicing rollouts take 4 to 8 weeks from kickoff to go-live. The work is front-loaded on data quality: cleaning partner tax IDs, confirming VAT treatment codes, mapping invoice line items to PINT-AE fields, and running sandbox tests. Key deadlines are fixed by Ministerial Decisions No. 243 and 244 of 2025: large businesses must go live on 1 January 2027, while SMEs must comply by 1 July 2027. Because configuration, ASP onboarding, and testing take time, this is a 2026 project, not a 2027 one.
Multi-company and UAE VAT support
Odoo's multi-company structure fits the UAE mandate well. Each company record can hold its own Tax Registration Number, legal name, address, and fiscal settings. TrustBill uses that company context to generate and route PINT-AE invoices per legal entity, so mainland, free zone, and VAT group scenarios are handled without manual separation. We also map UAE-specific fields such as VAT categories, margin schemes, and reverse-charge indicators.
Data security and data residency
TrustBill connects to Odoo using API tokens over TLS 1.3 and only requests the minimum read access required for invoice data. All PINT-AE XML and supporting data are encrypted at rest using AES-256-GCM. Invoice data is stored in the UAE region, so you maintain data residency for tax and audit purposes. You control the API credentials and can revoke access at any time from your Odoo user settings.
Frequently Asked Questions
Is Odoo PINT-AE ready?
Not out of the box. Odoo supports Peppol e-invoicing for several countries, but the UAE is not yet a native country. You need a certified PINT-AE connector such as TrustBill to convert Odoo invoices and submit them through an accredited ASP.
Should I use self-hosted Odoo or Odoo.sh?
Both work. Self-hosted gives more control over custom modules and server settings. Odoo.sh is a managed cloud platform and easier to maintain. TrustBill integrates with either via a secure API.
How long does the setup take?
Plan 4 to 8 weeks for data cleanup, connector configuration, sandbox testing, and ASP onboarding. Large businesses must be live by 1 January 2027, and SMEs by 1 July 2027.
Does the integration support multi-company?
Yes. Odoo's multi-company setup lets each legal entity have its own TRN and settings, and TrustBill generates and routes PINT-AE invoices per company.
How is invoice data kept secure?
TrustBill uses API-token access, TLS 1.3 in transit, and AES-256-GCM at rest. Data is stored in the UAE, and you retain full control over credentials from Odoo.