UAE e-invoicing · PINT-AE

E-invoicing that lives in your ERP.

Invoy takes invoices from Odoo, NetSuite or any system, checks them against the UAE's PINT-AE rules, sends them through the Accredited Service Provider you chose, and writes the status back on the invoice. Your finance team never leaves the ERP.

Works with the ASP you appoint. Invoy is not an ASP.

INV-2026-0418 · Example Draft
From Sahara Tools Trading LLCTRN 100234567800003
To Marina Fit-Out Co.Dubai · DXB
Item VAT AED
Hex bolts M10 × 400 5% 500.00
Site delivery 5% 150.00
Installation, 6 h 5% 1,080.00
Total incl. VATAED 1,816.50
Seller TRN formatibr-132-ae
Emirate codeibr-128-ae
5% on standard linesibr-190-ae
Due date presentibr-127-ae
<cbc:CustomizationID>urn:peppol:pint:billing-1@ae-1</…>
<cbc:ID>INV-2026-0418</cbc:ID>
<cbc:EndpointID schemeID="0235">1002345678</…>
<cbc:CountrySubentity>DXB</…>
<cbc:TaxAmount currencyID="AED">86.50</…>
  1. Odoo
  2. Invoy
  3. Your ASP
  4. FTA · reported
The mandate

Every UAE business transacting B2B or B2G is in scope, free zones included.

Source: UAE Ministry of Finance

Revenue of 50 million dirhams or more: e-invoicing goes live.

Everyone else must appoint their ASP.

Everyone else goes live. Government entities follow on 1 Oct 2027.

The gap

Your ASP sends the invoice. Someone still has to get it out of your ERP.

  • 01Your ASP is the post office. It validates, transmits to the buyer's ASP and reports to the FTA.
  • 02Your ERP doesn't speak PINT-AE. Tax codes, emirate codes, TRNs and dozens of mandatory fields have to be mapped and right before anything is sent.
  • 03Invoy is the missing piece. It sits between the two, so your ERP stays the system of record and your ASP gets clean documents.
The UAE five-corner model: your ERP, Invoy, your ASP, the buyer's ASP, the buyer, and the FTA receiving tax data from both ASPs Invoy Your ERP corner 1 Your ASP corner 2 Buyer's ASP corner 3 Buyer corner 4 FTA corner 5 Peppol tax data tax data
How it works

From posted invoice to reported, in five steps.

  1. 1

    Pull

    The Odoo or NetSuite adapter picks up the posted invoice. Other systems post JSON or upload a CSV.

    POST /v1/invoicesExample
    {
      "number": "INV-2026-0418",
      "seller": { "trn": "100234567800003" },
      "lines": [{ "taxCode": "S-UAE", "quantity": 400 }, …]
    }
  2. 2

    Map

    Your ERP's tax codes are mapped once to PINT-AE categories, rates and exemption reasons. Unmapped codes stop the invoice instead of guessing.

    Your tax code PINT-AE Meaning
    S-UAE S · 5% Standard rated
    Z-UAE Z · 0% Zero rated
    EX-RES E · DL8.46.2 Exempt: residential
    RC-IMP AE · 5% Reverse charge
  3. 3

    Validate

    Every invoice is checked against the PINT-AE rules before it can leave. Problems come back as findings your team can fix, on the invoice.

    Validation · INV-2026-0418passed
    identifiers   TRN, TIN and endpoint formats
    parties       addresses, emirate codes, legal registration
    tax           categories, rates, exemption reasons
    totals        lines, allowances, VAT breakdown, rounding
  4. 4

    Send

    Invoy generates the PINT-AE XML and submits it to your ASP, with retries and a single ID per invoice so nothing is sent twice.

    INV-2026-0418.xmlUBL 2.1 · PINT-AE
    <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
      <cbc:CustomizationID>urn:peppol:pint:billing-1@ae-1</…>
      <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
      <cbc:DocumentCurrencyCode>AED</cbc:DocumentCurrencyCode>
      …
  5. 5

    Write back

    The status, the document ID and your ASP's response land on the invoice in your ERP. Rejections arrive with the reason and the rule.

    Status history · ExampleINV-2026-0418
    1. Queued in Invoyqueued
    2. Received by your ASPsubmitted
    3. Delivered to the buyer's ASPdelivered
    4. Tax data reported to the FTAreported
Validation

Errors your finance team can actually fix.

A rejected e-invoice usually comes back as an XML error code. Invoy catches the problem first and says what's wrong, where, and which rule it breaks.

  • Before sending, not after. Invalid invoices never reach your ASP.
  • In plain language. Every finding names the field to fix and the official rule ID.
  • On the invoice. Findings show up in Odoo and NetSuite, where the invoice is edited.
INV-2026-0419 · Example3 to fix · not sent
  • ibr-190-ae

    Standard-rated lines must use the UAE rate of 5%. Line 2 uses 4%.

    lines[2].taxRate
  • ibr-128-ae

    The buyer's emirate must be a code such as DXB or AUH. "Dubai" isn't one.

    buyer.address.countrySubdivision
  • ibr-127-ae

    Add a due date. The invoice has an amount to pay.

    dueDate
  • passed

    Everything else, including totals, VAT breakdown and identifiers.

Where it runs

Inside Odoo and NetSuite. Or anything with an API.

Odoo

An addon for Odoo 17. Finance teams send e-invoices from the invoice they already have open.

Invoices / INV-2026-0418 reported
Invoy document ID
4b6000ca-0128…
ASP reference
ASP-88213
Reported
21 Oct 2026, 09:14
  • Send button on posted invoices and credit notes
  • Findings shown on the invoice, with the field to fix
  • Status kept current automatically
  • Supplier e-invoices become draft vendor bills

NetSuite

A SuiteApp: Invoy fields on invoices and credit memos, a send button on the transaction, settings per subsidiary, and a scheduled job that keeps every status current.

Anything else

Post invoices as JSON to the REST API or upload a CSV and get per-row findings back. Status changes arrive by signed webhook.

Your ASP

Keep the ASP you chose.

Every business must send through one Accredited Service Provider, appointed on EmaraTax. Invoy isn't one, on purpose. You pick the ASP; Invoy connects your ERP to it.

Each ASP has its own adapter behind one interface, so changing provider later is a configuration change, not a new integration.

Invoy connects to one ASP at a time through interchangeable adapters invoy core Your ASP adapter · active Another ASP adapter Another ASP adapter

One ASP per business

That's the rule. Invoy sends through yours and receives through it too.

Credentials stay yours

Your ASP credentials belong to your account and are encrypted at rest.

No lock-in

Switching ASP doesn't touch your ERP, your mappings or your history.

Inbound

Supplier invoices come in too.

From 2027 your suppliers send e-invoices too. Invoy pulls them from your ASP and creates draft vendor bills in Odoo, matched to the supplier by TRN, to products, and to the purchase order.

Differences against the purchase order are flagged before anyone approves the bill.

Vendor bill · Draft · Examplefrom e-invoice
Supplier
Gulf Fasteners LLC · TRN matched
Purchase order
PO-2026-0091 · matched
Products
3 of 3 matched
Total incl. VAT
AED 4,210.50

Line 2: 120 billed, 100 ordered.

Who it's for

Built for the people who run the ERP.

Finance teams

Send, check and fix e-invoices from the invoice screen. No portal to log into, no XML to read.

ERP partners and integrators

One tested connector per client instead of a custom build each time, with an API, webhooks and OpenAPI docs.

Groups with many entities

Each legal entity is its own tenant, with its own seller profile, tax mapping, ASP and retention policy.

For developers. Post the canonical invoice, get findings or a document ID back, then follow the status by webhook. Every webhook is signed with HMAC-SHA256.

shellREST API
curl -X POST "$INVOY_URL/v1/invoices" \
  -H "X-Api-Key: $INVOY_KEY" \
  -H "Content-Type: application/json" \
  -d @INV-2026-0418.json

201 { "uuid": "4b6000ca-…", "findings": [],
      "submission": { "state": "queued" } }
Records and security

Kept the way an auditor would want.

  • Statutory retentionEvery document, its XML and its status history kept for 5 years after the tax period, 7 for real estate. Nothing is purged early.
  • Encrypted secretsASP credentials and webhook secrets are encrypted at rest and redacted from logs.
  • Audit logWho sent, changed or resent what, and when. Append-only, per entity.
  • Backed up and monitoredNightly database backups, health checks and alerts on failed submissions.
Questions

Straight answers.

Is Invoy an Accredited Service Provider?

No. ASPs are accredited by the Ministry of Finance to transmit e-invoices and report them to the FTA. Invoy connects your ERP to the ASP you appoint and handles everything before and after transmission.

Do I still need an ASP?

Yes. Every business in scope appoints one ASP on EmaraTax. Invoy works alongside it, and you keep the commercial relationship with your ASP.

Which systems do you support?

Odoo 17 and NetSuite through native adapters. Any other system can send invoices as JSON through the API or upload a CSV.

When do I need to be ready?

Businesses with revenue of 50 million dirhams or more go live on 1 January 2027. Everyone else must appoint an ASP by 31 March 2027 and go live on 1 July 2027.

Mapping and testing take time, so start before you appoint your ASP.

What does it cost?

Pricing on request. It depends on your ERP, the number of legal entities and your invoice volume. Your ASP charges separately.

What happens when an invoice fails validation?

It isn't sent. The findings appear on the invoice with the field to fix and the rule it breaks. Fix it and send again.

Get ready

Find out what your ERP needs before 31 March.

Tell us which ERP and ASP you use. We'll reply with what your setup needs: tax-code mapping, missing fields and a go-live plan.

  • No commitment, no sales sequence.
  • Prefer email? contact email to come

We use these details only to reply to you.