| Item | VAT | AED |
|---|---|---|
| Hex bolts M10 × 400 | 5% | 500.00 |
| Site delivery | 5% | 150.00 |
| Installation, 6 h | 5% | 1,080.00 |
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.
<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</…>
- Odoo
- Invoy
- Your ASP
- FTA · reported
Every UAE business transacting B2B or B2G is in scope, free zones included.
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.
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.
From posted invoice to reported, in five steps.
-
1
Pull
The Odoo or NetSuite adapter picks up the posted invoice. Other systems post JSON or upload a CSV.
{ "number": "INV-2026-0418", "seller": { "trn": "100234567800003" }, "lines": [{ "taxCode": "S-UAE", "quantity": 400 }, …] } -
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
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.
identifiers TRN, TIN and endpoint formats parties addresses, emirate codes, legal registration tax categories, rates, exemption reasons totals lines, allowances, VAT breakdown, rounding
-
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.
<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
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.
- Queued in Invoyqueued
- Received by your ASPsubmitted
- Delivered to the buyer's ASPdelivered
- Tax data reported to the FTAreported
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.
-
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.
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.
- 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.
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.
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.
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.
- 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.
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.
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" } }
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.
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.
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