Skip to content
TAQNIX
Odoo ModulesWordPress PluginsWordPress ThemesShopify ThemesApp TemplatesScripts & UtilitiesBlogSell on TAQNIX

UAE E-Invoicing (PINT AE) for Odoo 19 Community documentation

A guide to UAE E-Invoicing (PINT AE): identifiers and tax categories, the readiness checklist and the batch check, the validation of the files and the official Schematron, the outbox, the statuses given by your ASP, the XML and ZIP export, and what is not implemented or not verified.

Documents version 1.0.0Updated Oct 29, 2026

Start here

In plain words: UAE E-Invoicing (PINT AE) prepares the electronic invoice files of your customer invoices and credit notes in the PINT AE format (Peppol PINT AE Billing 1.0.4, OASIS UBL 2.1), checks them before and after they are made, and keeps them in an outbox with a status, the reference given by your service provider and a log. It does not send anything. In the UAE model an e-invoice is sent to the buyer and reported to the Federal Tax Authority (FTA) by the Accredited Service Provider (ASP) you appoint: you give the files to your ASP and record its answer in Odoo.

Who it is for: companies in the United Arab Emirates that run their invoicing in Odoo 19 and must prepare e-invoices for their ASP, and the accountants and partners who set them up.

Important: This module is not certified or approved by the Ministry of Finance (MoF) or the FTA, it is not an ASP and it is not a Peppol access point. It is a tool that prepares and checks files; it is not tax or legal advice. The rules and their dates change: read the chapter Not implemented and not verified and check the current official texts and your ASP’s requirements before you rely on a file.

The examples: the pictures show a demo company, Al Noor General Trading LLC in Dubai, in AED. Its names, TRNs and licence numbers are fictitious and only have the right format. It has eleven customer invoices and one credit note from 14 September to 29 October 2026; the documents were prepared on 30 October 2026 by Amira Saleh (administrator). The ASP is shown as Your appointed ASP and its answers were typed by hand: nothing was sent anywhere. The figures in the text are those of the pictures.

Tip: To see it at work, open Accounting → Accounting → E-Invoicing (UAE) → Outbox.
The module in four views: the outbox, the readiness checklist of an invoice, the check of a batch and the validation of a file.
The module in four views: the outbox, the readiness checklist of an invoice, the check of a batch and the validation of a file.

What you get

In plain words: Everything you need to hand correct PINT AE files to your ASP: identifiers, tax categories, checks, the file, its validation and a record of what happened to it.
FeatureWhat it does
PINT AE XMLCustomer invoices (type 380), credit notes (381) and fully out-of-scope documents (480 / 81) in the PINT AE Billing 1.0.4 format (UBL 2.1).
IdentifiersTIN, TRN, e-invoicing address and legal registration (trade licence, Emirates ID, passport, cabinet decision) on the company and the customers; emirate codes from the address.
Tax categoriesS, Z, E, O and AE on the sale taxes, with the exemption reason and the reverse charge goods type; pre-set on the UAE taxes of Odoo.
Readiness checklistAbout 45 checks on each invoice before any file is made: document, credit note, seller, buyer, export, payment, lines and taxes, the 14 business days estimate.
Batch checkThe same checks for a period or a selection of invoices, with the list of problems and a button to generate the ready ones.
Local validationEvery file is checked against the official OASIS UBL 2.1 XSD (shipped) and, when you install it, the official PINT AE Schematron.
Four resultsValid, Valid with warnings, Invalid, Not fully validated. Never more than what really ran.
OutboxOne record per invoice with its status (draft, ready, sent, accepted, rejected, error), the ASP reference, the dates, the SHA-256 of the file, the validation log and a log nobody can edit.
Statuses by handA manager records what the ASP answered; only allowed changes, a reference format check, a reason for a rejection or an error.
DownloadsThe XML of one document, or a ZIP of many with a manifest.json; an integrity check of the stored file.
Connector hookA documented place for a future ASP connector. No ASP connector is included.
ArabicThe module is translated; the screens work right to left.

Requirements

In plain words: Odoo 19 with the UAE localization and Odoo’s UBL module. The module does not need Accounting Pro or any other Taqnix module.
ItemDetails
Odoo19.0 (Community or Enterprise)
Apps neededInvoicing / Accounting (account), Import/Export electronic invoices with UBL/CII (account_edi_ubl_cii) and United Arab Emirates - Accounting (l10n_ae). They are installed with the module when missing.
LicenseOPL-1 (Odoo Proprietary License v1.0)
ItemWhat it needs
CompanyA company in the United Arab Emirates with the UAE chart of accounts and taxes (l10n_ae), a TRN in the Tax ID field and an emirate on its address.
CustomersA TRN or TIN, an address with an emirate (or a state / region abroad), and the e-invoicing address when it is not the automatic one.
Official Schematron (optional)The PINT AE validation files of OpenPeppol, downloaded or uploaded by a manager from the module. They are not included in the package.
saxonche (optional)The Python package saxonche (SaxonC-HE, an XSLT 2.0 engine) on the Odoo server, to run the Schematron: pip install saxonche in the Python of Odoo. Without it, files are checked with the XSD only and show Not fully validated.
An ASPA contract with an Accredited Service Provider. The module prepares the files for it; it does not replace it.
Tip: The menus sit in the Accounting menu of the Invoicing / Accounting app, which Odoo shows to users with accounting rights. Users with billing rights only reach the e-invoice from the invoice itself (its tab, its button and the Action menu).

Install

In plain words: Copy the module folder into your addons, restart Odoo and install UAE E-Invoicing (PINT AE) from Apps. Then switch it on for your company.
  1. Unzip the package. Inside is taqnix_uae_einvoicing.zip; unzip it to get the folder taqnix_uae_einvoicing.
  2. Copy the folder into one of the addons_path folders of your Odoo server and restart Odoo.
  3. Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
  4. Remove the “Apps” filter, search UAE E-Invoicing and press Install.
# or from the command line
./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_uae_einvoicing --stop-after-init

After the installation:

  1. Open Accounting → Accounting → E-Invoicing (UAE) → Settings and tick Use UAE e-invoicing for this company; enter the legal registration and the name of your ASP and press Save.
  2. Press Tax categories and check the category of each sale tax (see Tax categories).
  3. Optional: press PINT AE Schematron and install the official rules (see Install the official Schematron).
  4. Fill in the identifiers of your customers (see Company and customer identifiers).

How it fits with your ASP

In plain words: Odoo prepares and checks the file; your ASP sends it and reports it. The module keeps the trace of each step.
StepWhoWhere in Odoo
1. Post the customer invoice or credit noteYouThe invoice, as usual
2. Check itOdoo (this module)The tab UAE E-Invoicing of the invoice, or E-Invoicing (UAE) → Readiness
3. Generate the PINT AE file and validate itOdoo (this module)Generate e-invoice on the invoice, or Generate the ready ones
4. Give the file to the ASPYou (Manual connector)Download XML, or a ZIP from the outbox
5. Send it to the buyer and report it to the FTAYour ASPOutside Odoo
6. Record the answer of the ASPA managerSet status on the document: sent, accepted, rejected or error

A document moves through the statuses Draft (made but invalid, or the invoice was reset), Ready (made and not invalid), Sent to ASP, then Accepted, Rejected or Error. Once a document is sent, its invoice cannot be reset to draft or deleted: correct it with a credit note.

Important: Odoo’s own Send button and its Peppol service (IAP) are not used for the UAE: they do not send PINT AE files. The module registers the format pint_ae but never proposes it automatically in that flow.

Company and customer identifiers

In plain words: PINT AE files carry the TRN, the 10-digit TIN, an electronic address and a legal registration for both sides. You enter them once on the company (in the Settings) and on each customer.

On a customer, open the tab UAE E-Invoicing:

FieldMeaning
TRN formatThe TRN is the Tax ID field of the contact. The badge says whether its format is right (15 digits, starting with 1 and ending with 03). Whether the number exists is only known by the FTA and your ASP.
UAE TINThe 10-digit Tax Identification Number. Leave it empty to use the first 10 digits of the TRN (setting TIN source).
TIN used in e-invoicesThe TIN the file will contain.
E-invoicing addressAutomatic (UAE: TIN; abroad: Peppol ID, else the export address), UAE TIN (scheme 0235), Not subject to UAE e-invoicing (0235:9900000098), Export, buyer not on Peppol (0235:9900000099) or Peppol participant ID (the Peppol fields of Odoo).
Buyer identifierFor a buyer with a predefined address and no TRN: another identifier written in the file.
Legal registrationID, type (TL trade licence, EID Emirates ID, PAS passport, CD cabinet decision) and the issuing authority (trade licence) or the passport country.

The emirate is read from the state of the address (Dubai, Abu Dhabi, Sharjah, Ajman, Umm Al Quwain, Ras Al Khaimah, Fujairah) and written with its PINT AE code (for example DXB). A foreign customer needs a state / region on its address.

The tab UAE E-Invoicing of the customer Gulf Retail FZ LLC: TRN 100456789100003 with a valid format, the TIN used in e-invoices 1004567891 (the first 10 digits
The tab UAE E-Invoicing of the customer Gulf Retail FZ LLC: TRN 100456789100003 with a valid format, the TIN used in e-invoices 1004567891 (the first 10 digits of the TRN), the e-invoicing address Automatic, and the trade licence CN-2201345 issued by Abu Dhabi DED.

Tax categories

In plain words: Each sale tax tells the file which PINT AE tax category it is. The module pre-sets the UAE taxes of Odoo; you check them once.
CategoryUseExtra field
S - Standard rated (5%)Domestic supplies at 5%—
Z - Zero ratedZero-rated supplies and exports (Odoo’s generic builder would write E for a domestic 0% tax: the module writes Z)—
E - Exempt from VATExempt suppliesExemption reason (DL8.46.1 to DL8.46.4), required
O - Outside the scope of VATSupplies outside the scope; a document with only O lines becomes a 480 / 81 document—
AE - Reverse chargeDomestic reverse charge on concerned goodsReverse charge goods type (DL8.48.x), required

Open Settings → Tax categories to see all sale taxes in one editable list. Pre-set the UAE taxes fills the category of the UAE taxes that have none; a category you chose is never overwritten. A tax without category blocks the file.

The tax categories of Al Noor General Trading LLC: the seven 5% emirate taxes in S, 0% and 0% EX in Z, 0% EXT in E with the reason DL8.46.2 (supply of residenti
The tax categories of Al Noor General Trading LLC: the seven 5% emirate taxes in S, 0% and 0% EX in Z, 0% EXT in E with the reason DL8.46.2 (supply of residential units), Out of Scope in O and the reverse charge tax 0% RCM gold in AE with the goods type DL8.48.8.1. The tourist refund tax 5% TR TS has no category: an invoice using it would be blocked.

The readiness checklist on an invoice

In plain words: Before any file is made, the module checks the invoice and lists the problems first. Errors block the file; warnings do not.

On a posted customer invoice or credit note of a company that uses UAE e-invoicing, open the tab UAE E-Invoicing. You see the transaction type (BTAE-02), the export flag, the credit note reason for a credit note, the UUID once the file was made, the e-invoice status and the Readiness checklist. When everything passes, press Generate e-invoice in the header.

GroupExamples of checks
DocumentCustomer invoice or credit note, posted, invoice date, currency, not negative, supported transaction type, at least one line
Credit noteCredit note reason (BTAE-03), the original invoice (except for a volume discount)
SellerCountry UAE, TRN format, TIN, legal registration and authority, address, emirate
BuyerName, country, address, emirate or region, TRN format, e-invoicing address, identifier
ExportExport address used only with the export flag, delivery address abroad
Lines and taxesOne PINT AE category per line, exemption reason, reverse charge with the buyer TRN, quantity, discount, GTIN, unit codes; the 5% VAT of the total within the official tolerance
TimingWithin 14 business days (estimate): a warning only

The flags free trade zone, deemed supply, profit margin scheme, summary invoice, continuous supply, disclosed agent billing and e-commerce are shown under Not supported in this version: they are read-only and a document that would need them is blocked.

The export invoice INV/2026/00004 to Northwind Imports Inc. (USD): Export ticked, transaction type 00000001, its UUID, status Ready and Valid, and the green lin
The export invoice INV/2026/00004 to Northwind Imports Inc. (USD): Export ticked, transaction type 00000001, its UUID, status Ready and Valid, and the green line “Ready: every check passed” with the 23 checks passed. The chatter says the file was generated and not sent.
INV/2026/00008 to Falcon Logistics FZE: one error, Customer emirate (the customer state must be one of the seven emirates), listed before the 22 checks passed.
INV/2026/00008 to Falcon Logistics FZE: one error, Customer emirate (the customer state must be one of the seven emirates), listed before the 22 checks passed. No file can be made until the address is fixed.

Check a batch

In plain words: Check all invoices of a period at once, see every problem in one list and generate the ready ones.
  1. Open Accounting → Accounting → E-Invoicing (UAE) → Readiness, or select invoices in the list of customer invoices and choose Check e-invoicing readiness in the Action menu.
  2. Choose the dates (or leave them empty) and keep Only documents not sent yet ticked.
  3. Press Run the checks: the counts Checked, Ready, With errors and Generated appear with the list of problems (document, customer, level, message).
  4. Press Generate the ready ones to make and validate the files of the invoices without errors.

A batch takes at most 2,000 documents; above that, choose a shorter period. The action Generate PINT AE e-invoices of the invoice list does the same without the dialog.

The readiness check of Al Noor General Trading LLC, all dates, documents not sent yet: 10 checked, 9 ready, 1 with errors. INV/2026/00008 (Falcon Logistics FZE)
The readiness check of Al Noor General Trading LLC, all dates, documents not sent yet: 10 checked, 9 ready, 1 with errors. INV/2026/00008 (Falcon Logistics FZE) has the emirate error; INV/2026/00009 (Oasis Facilities Management LLC) has a warning because its estimated deadline, 2026-10-02, is passed.

Validation results

In plain words: Every file is checked right after it is made. The result is one of four, and it never claims more than what really ran.
ResultWhen
ValidThe UBL 2.1 XSD passed and the official PINT AE Schematron ran and found no error and no warning.
Valid with warningsBoth checks ran without error, but the Schematron or the readiness checks gave warnings.
InvalidThe XSD or the Schematron found an error. The document stays in Draft and cannot be sent through a connector.
Not fully validatedA check did not run: the Schematron is not installed, saxonche is missing, a check is switched off in the settings, or the engine failed (the reason is in the log).

The tab Validation log of the document shows each check and every failed rule with its identifier. After you install the Schematron, or fix a customer, press Validate again (or Regenerate after a change of the invoice). A document already sent keeps the validation it had.

INV/2026/00010 to Al Wasl Hospitality LLC: Invalid and back in Draft. The XSD passed; the official Schematron (PINT AE Billing 1.0.4) failed on rule ibr-068 bec
INV/2026/00010 to Al Wasl Hospitality LLC: Invalid and back in Draft. The XSD passed; the official Schematron (PINT AE Billing 1.0.4) failed on rule ibr-068 because the customer’s Peppol ID uses scheme 0088 (GLN) with a wrong check digit, a mistake the module’s own checks do not see.
INV/2026/00009 to Oasis Facilities Management LLC, dated 14 September: Valid with warnings and Ready. Both checks passed; the warning says the estimated 14 busi
INV/2026/00009 to Oasis Facilities Management LLC, dated 14 September: Valid with warnings and Ready. Both checks passed; the warning says the estimated 14 business days deadline, 2026-10-02, is passed.
INV/2026/00011, prepared before the Schematron was installed: Not fully validated. The XSD passed; the log says the official PINT AE Schematron files were not d
INV/2026/00011, prepared before the Schematron was installed: Not fully validated. The XSD passed; the log says the official PINT AE Schematron files were not downloaded yet.
Tip: The validation log is stored text, written in the language of the user who made the file.

Install the official Schematron

In plain words: The business rules of PINT AE are published by OpenPeppol. They cannot be shipped with the module, so a manager installs them once; the module checks that they are the exact version it was tested with.
  1. Install the Python package saxonche on the Odoo server and restart Odoo. The dialog shows saxonche installed when it is found.
  2. Open E-Invoicing (UAE) → Settings → PINT AE Schematron.
  3. Either download the file yourself from the official address shown (docs.peppol.eu/poac/ae/pint-ae/resources.zip) and upload it (Upload your file, then Install the uploaded ZIP), or tick Allow downloading the Schematron from docs.peppol.eu in the Settings and press Download from docs.peppol.eu (the server downloads it).
  4. The SHA-256 of the ZIP is compared with the expected one of PINT AE Billing 1.0.4. Only the four compiled rule files and the unit code list are kept; their own SHA-256 is checked again before every use.
  5. Press Validate again on the documents prepared before, or select them in the outbox and use the action Validate again.

Stop using the installed rules switches the Schematron off. The files stay on the server in the Odoo data folder (taqnix_uae_einvoicing/<database>/).

Important: OpenPeppol does not allow the redistribution of its files without consent: you download them for your own use. The download from the server is off by default.
The dialog PINT AE Schematron: the note that the files are not shipped, the checked version PINT AE Billing 1.0.4, the official address, the expected SHA-256, s
The dialog PINT AE Schematron: the note that the files are not shipped, the checked version PINT AE Billing 1.0.4, the official address, the expected SHA-256, saxonche installed, download not allowed, and the line Installed (installed on 2026-10-29 21:37:23 server time by Amira Saleh from an upload).

The outbox

In plain words: One line per prepared document: what it is, whether it is valid, where it stands with your ASP.

Open Accounting → Accounting → E-Invoicing (UAE) → Outbox. The list shows the document, the invoice date, the customer, the type, the total, the Validation and the Status badges, the ASP reference and the date it was generated. Rejected, error and invalid documents are red; accepted ones are grey.

FilterShows
To hand to the ASPReady documents
SentDocuments sent and waiting for an answer
ProblemsRejected, error or invalid documents
Not fully validatedFiles whose Schematron or XSD did not run
Invoices / Credit notesTypes 380 and 480 / 381 and 81

Group by status, validation or customer; search by name, customer, ASP reference or UUID. Documents are created by the module only: there is no New or Delete button.

The outbox of Al Noor General Trading LLC: eleven documents. INV/2026/00001 accepted (ASP-00418823), INV/2026/00002 sent to the ASP, INV/2026/00006 rejected, IN
The outbox of Al Noor General Trading LLC: eleven documents. INV/2026/00001 accepted (ASP-00418823), INV/2026/00002 sent to the ASP, INV/2026/00006 rejected, INV/2026/00010 invalid and in draft, INV/2026/00009 valid with warnings, INV/2026/00011 not fully validated, a credit note (381), an out-of-scope document (480) and an export invoice in USD ($ 22,200.00).

An e-invoice document

In plain words: The form of a document gathers the facts of its file: the invoice, the validation, the ASP and who made it.
BlockFields
DocumentInvoice / credit note, customer, type, invoice date, total, direction, company
ValidationValidation, UBL 2.1 XSD passed, Schematron run and its version, UUID (BTAE-07), file name, SHA-256
Accredited Service ProviderASP, ASP reference, sent on, answered on, last message
GeneratedGenerated on, generated by
ButtonWhat it does
Download XMLDownloads the file after checking its SHA-256; the download is logged.
RegenerateMakes the file again from the invoice (not after it was sent).
Validate againValidates the stored file again (not after it was sent).
Set statusRecords the answer of the ASP (managers).
Check file integrityConfirms that the stored file still has its recorded SHA-256.
Send to ASP / Check statusOnly shown when an ASP connector is installed and chosen in the settings.

The UUID is made once from the database and the invoice and never changes, even when the file is regenerated. The tabs History and Note hold the log and a free note (managers).

INV/2026/00001 to Gulf Retail FZ LLC, 22,144.50 AED: Accepted. Valid, XSD passed, Schematron PINT AE Billing 1.0.4, its UUID, the file INV_2026_00001_pint_ae.xm
INV/2026/00001 to Gulf Retail FZ LLC, 22,144.50 AED: Accepted. Valid, XSD passed, Schematron PINT AE Billing 1.0.4, its UUID, the file INV_2026_00001_pint_ae.xml and its SHA-256; ASP reference ASP-00418823 and the answer typed by hand; the validation log shows both checks passed.

Record the answer of your ASP

In plain words: With the Manual connector, the ASP’s answer reaches Odoo through you: a manager records it, and the log keeps who did what and when.
  1. Give the file to your ASP (portal, e-mail or the channel your ASP gives you).
  2. On the document press Set status, choose Sent to ASP and type the reference the ASP gave you; press Apply.
  3. When the ASP answers, press Set status again and choose Accepted, Rejected or Error with the ASP’s message.
FromAllowed changes
ReadySent to ASP
Sent to ASPAccepted, Rejected, Error
ErrorReady, Sent to ASP
RejectedDraft (to correct and regenerate)
Draft, AcceptedNone

A rejection or an error needs the ASP’s message. The reference is checked against the ASP reference format of the settings (# a digit, A a letter, * a letter or a digit). Nobody can change or delete the log.

The dialog Set the e-invoice status on INV/2026/00002 (current status Sent to ASP), filled in for the picture with Accepted, the reference ASP-00418824 and the
The dialog Set the e-invoice status on INV/2026/00002 (current status Sent to ASP), filled in for the picture with Accepted, the reference ASP-00418824 and the answer of the ASP. It was not applied: INV/2026/00002 stays Sent in the demo.
INV/2026/00006 to Bayt Al Kitab Bookshop: Rejected. Its History tab shows the two status changes typed by Amira Saleh: Ready to Sent to ASP (Uploaded), then Sen
INV/2026/00006 to Bayt Al Kitab Bookshop: Rejected. Its History tab shows the two status changes typed by Amira Saleh: Ready to Sent to ASP (Uploaded), then Sent to ASP to Rejected with the message “ASP: buyer identifier not recognised, please check”.

Download and export

In plain words: Give your ASP one file or many. Every download is logged, and the stored file is checked before it leaves Odoo.

In the outbox, select documents and choose Download XML files (ZIP) in the Action menu (at most 1,000 at a time). The ZIP holds one XML file per document and a manifest.json with, for each file, the document, type, UUID, SHA-256, status, validation and company, and the note that the files were prepared for the ASP and are not sent or certified. Validate again in the same menu re-validates the selection.

The outbox with its eleven documents selected and the Action menu open: Export, Download XML files (ZIP) and Validate again.
The outbox with its eleven documents selected and the Action menu open: Export, Download XML files (ZIP) and Validate again.

The file itself is a PINT AE Billing 1.0.4 UBL invoice or credit note: CustomizationID urn:peppol:pint:billing-1@ae-1, ProfileID urn:peppol:bis:billing, the transaction type flags, the UUID, the seller with endpoint scheme 0235 and its TIN, the TRN, the legal entity, the buyer, the tax totals and the lines. A document not in AED also carries the tax currency AED, the exchange rate, a second tax total in AED and the AED total.

The file INV_2026_00004_pint_ae.xml of the export invoice in USD, indented here for reading (the file is written on one line): ProfileExecutionID 00000001 (expo
The file INV_2026_00004_pint_ae.xml of the export invoice in USD, indented here for reading (the file is written on one line): ProfileExecutionID 00000001 (export), tax currency AED, the AED total “AED 81529.52”, the seller endpoint 0235:1003456789 with the emirate code DXB, and on the right the zero-rated (Z) tax total and the first line with its AED amounts.

Settings

In plain words: One dialog per company, which e-invoicing managers can use without being Odoo administrators.

Open Accounting → Accounting → E-Invoicing (UAE) → Settings:

SettingMeaning
Use UAE e-invoicing for this companyShows the tab and the buttons on the invoices of this company.
Company TRN, TIN source, Company TINThe TRN comes from the company’s Tax ID. From the TRN (first 10 digits) unless typed, or Typed on the contact only. TIN used in e-invoices shows the result.
Legal registrationID, type and issuing authority (or passport country) of the company.
Accredited Service Provider (ASP)The name of your ASP, shown in the outbox; the module never contacts it.
ASP reference formatOptional mask checked when a reference is typed, for example ASP-########.
ConnectorManual (download the XML for your ASP). Other choices appear only when an ASP connector module is installed.
Default payment meansThe code written on invoices without a bank account (with a bank account: 30, credit transfer).
ValidationValidate with the UBL 2.1 XSD, validate with the PINT AE Schematron, allow downloading the Schematron from docs.peppol.eu, and the state of the installed rules.
14 business days (estimate)The weekend days and the official holidays (one date per line) used for the deadline warning.

The footer buttons open the Tax categories, Pre-set the UAE taxes and the PINT AE Schematron dialog.

The settings of Al Noor General Trading LLC: UAE e-invoicing on, TRN 100345678900003, TIN from the TRN (1003456789), trade licence 1045872 issued by the Dubai D
The settings of Al Noor General Trading LLC: UAE e-invoicing on, TRN 100345678900003, TIN from the TRN (1003456789), trade licence 1045872 issued by the Dubai Department of Economy and Tourism, Your appointed ASP with the format ASP-########, connector Manual, payment means 1 (instrument not defined), both validations on, download not allowed, Schematron installed and usable, weekend Saturday and Sunday.

Who can do what

In plain words: Three groups under UAE E-Invoicing, given automatically from the accounting rights.
GroupGiven withCan
ViewerAccounting read-only rightsOpen the outbox, download the XML and the ZIP, check the integrity of a file
UserBilling rights (Invoicing)Also run the readiness checks, generate, regenerate and validate files
ManagerAccounting administratorAlso change the settings, record the statuses given by the ASP, send through a connector, install the Schematron, write the note

Each user sees only the documents of the companies they have access to. The outbox records cannot be created, edited or deleted by hand, and the log can be neither changed nor deleted.

How the file is built

In plain words: The file follows the PINT AE Billing 1.0.4 specification and its official examples; each rule below is in the code and in the tests.
ElementHow the module fills it
Document type380 for an invoice, 381 for a credit note; 480 / 81 when every line is outside the scope (O), as in the official out-of-scope example.
Transaction type (BTAE-02)Eight flags; only flag 8, Exports, is supported. The seven others block the file.
UUID (BTAE-07)A UUID version 5 made from the database UUID and the invoice, stored at the first generation, never changed.
SellerEndpoint 0235 with the 10-digit TIN; TRN in the tax scheme VAT; a seller without TRN can only issue 480 / 81 documents (with its TIN).
BuyerTIN, or 0235:9900000098 (not subject), or 0235:9900000099 (export, not on Peppol), or its Peppol ID.
LinesNet price with base quantity 1 and the gross price as a price allowance; the AED amounts BTAE-08 and BTAE-10 on every line (BTAE-08 left out for E), in AED as the BIS asks, whatever the invoice currency.
Other currencyTax currency AED, exchange rate with 6 decimals, a second tax total in AED and the AED total BTAE-20.
Payment means30 when the invoice has a bank account, else the default of the settings. Odoo’s ZZZ is not in the PINT AE list.
Amounts dueThe document total (with cash rounding). Payments made later are not reported in the file. No PDF is embedded.
TextsCharacters forbidden in XML removed, no empty element, the rest escaped.

The 5% VAT of the standard rated total must equal the official tolerance (rule aligned-ibrp-s-09). With Odoo’s UAE default, Round per line, an invoice with many lines can drift: the module blocks it and asks you to set the tax rounding to Round Globally.

What was checked: seven reference documents made by the module (standard, credit note, zero rated, mixed exempt, out of scope 480, export in USD, reverse charge) pass the OASIS UBL 2.1 XSD and the official PINT AE 1.0.4 Schematron (both layers) with no failed rule; a broken file is reported invalid. The module has 163 automated tests, green on a fresh database.

Important: “Valid” in Odoo means that these local checks passed. Your ASP validates every file again, and only your ASP’s answer tells you whether the e-invoice was accepted.

Not implemented and not verified

In plain words: What the module does not do, what is only an estimate, and the points that no official source confirmed yet. Read this chapter before you rely on a file.

What the module is not

PointDetail
No sendingIt sends nothing. Your ASP sends the e-invoice to the buyer and reports it to the FTA.
No status of its ownIt is not an ASP, not a Peppol access point and not certified or approved by the MoF or the FTA.
No ASP connectedManual means you download the files and record the ASP’s answers. A connector for a real ASP needs that ASP’s API documentation and test access; none is included.
Nothing for the FTANo Tax Data Document, no EmaraTax connection, no QR code and no digital signature (the UAE model has none).
No Odoo PeppolOdoo’s Peppol service (IAP) cannot be used for the UAE.

Documents and scenarios not covered

Not coveredWhat happens
Self-billing (389 / 261), profit margin scheme and category N, free trade zone, summary invoices, continuous supply, disclosed agent billing, e-commerce, deemed supplyThe flag is read-only and the file is blocked
B2C sales and Point of Sale receiptsNot prepared (B2C is excluded from UAE e-invoicing for now)
Early payment discounts, fixed-amount taxesThe invoice is blocked
An invoice with only exempt (and out-of-scope) linesBlocked: the right document for it is not confirmed, ask your ASP
Vendor billsNot imported from e-invoices

Checks and validation

PointDetail
Formats onlyTRN and TIN formats are checked, not whether they exist at the FTA.
GLN check digitThe check digit of a Peppol ID with scheme 0088 is not checked by the module: only the official Schematron catches it (see the invalid example).
Foreign customersNeed a state / region (rule ibr-144-ae). For a country without states in Odoo, create one in the Contacts configuration first.
RoundingRound per line can drift more than 0.02 on long invoices: such files are blocked until you choose Round Globally.
Schematron not shippedA manager downloads or uploads it. Without it, and without saxonche, files are Not fully validated, never Valid.
saxonche licenceNot stated on PyPI and not verified; saxonche is not included in the package.
Emirate ruleIn the 1.0.4 Schematron the emirate code rule does not fire on the seller and buyer addresses; the module’s own check does.
Local resultA Valid status is a local check only; your ASP validates again.

Points not confirmed by an official source (ask your ASP)

PointWhat the module does
UUIDMakes a fixed UUID per invoice, while the MoF guidelines say the ASP generates it: your ASP may replace it.
TIN sourceFirst 10 digits of the VAT TRN unless typed; ask which TRN to use when your VAT and Corporate Tax TRNs differ (a warning appears when the TIN and TRN do not match).
AED total text (BTAE-20)Written as “AED 1234.56”, copied from the only official example.
Reverse charge rateThe file carries the rate of the Odoo tax (often 0%); the official example shows 5%. The official rules accept both.
Export prices in AEDThe official Exports example writes BTAE-08 / BTAE-10 in USD, the BIS text says AED; the module writes AED (the Schematron accepts both).
14 business daysAn estimate from the weekend days and holidays you enter; only a warning.
IssueTimeWhether the issue time is mandatory is not confirmed; it is not written.
ASP APIsNo ASP interface, real transmission or FTA confirmation was tested.

Dates to check

Per the Ministry of Finance decisions listed in the module notes (Ministerial Decision No. 244 of 2025 as amended by Ministerial Decision No. 66 of 2026), as read on 29 October 2026: businesses with revenue of AED 50 million or more had to appoint an ASP by 30 October 2026 and implement e-invoicing from 1 January 2027; the other businesses appoint an ASP by 31 March 2027 and implement from 1 July 2027 (government entities from 1 October 2027). These dates have already changed once: check the current text on the Ministry of Finance website and with your ASP.

Important: This module is a preparation and checking tool, not tax or legal advice.

Troubleshooting

In plain words: Most problems are a missing identifier or category: the checklist names it.
ProblemWhat to do
No UAE E-Invoicing tab on the invoiceTick Use UAE e-invoicing for this company in the Settings; the tab appears on its customer invoices and credit notes (the file is made once they are posted). Your user needs at least the Viewer group.
No E-Invoicing (UAE) menuThe menu sits under Accounting → Accounting, which Odoo shows to users with accounting rights.
Customer emirate errorSet the state of the customer address to one of the seven emirates.
Customer region error (abroad)Set a state / region on the address; create it for the country if Odoo has none.
A tax has no PINT AE categorySettings → Tax categories, or Pre-set the UAE taxes.
Standard rated VAT not equal to 5% of the taxable amountSet the tax rounding of the company to Round Globally and reset and post the invoice again.
Not fully validatedInstall saxonche on the server and the official Schematron, then Validate again. The log says which check did not run.
InvalidRead the failed rule in the Validation log, fix the invoice or the customer, then Regenerate.
SHA-256 mismatchThe stored file was changed after it was made: press Regenerate.
The ASP reference is refusedIt does not match the ASP reference format of the Settings: correct the reference or the format.
The invoice cannot be reset to draftIts e-invoice was sent: issue a credit note instead.

Updating and removing

In plain words: Updates keep your documents, logs and settings.

Replace the folder with the new version, restart Odoo and run -u taqnix_uae_einvoicing. Your outbox, its log, the identifiers on the contacts and the tax categories are kept.

When you uninstall the module, the prepared XML files stay as attachments of their invoices; the outbox and its log are removed. The downloaded Schematron files stay in the Odoo data folder (taqnix_uae_einvoicing/<database>/): delete them by hand if you want.

Support

Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.