UAE Corporate Tax Compliance
This is the installation and configuration guide for UAE Corporate Tax Compliance, the
ecosire_uae_corporate_tax module. Everything on this page describes the module exactly as it
ships today — the facts were read out of the released build, not from a roadmap.
| Technical name | ecosire_uae_corporate_tax |
| Odoo versions | 17.0, 18.0, 19.0 (Community or Enterprise) |
| Current shipped version | 17.0 → 17.0.1.0.1, 18.0 → 18.0.1.0.1, 19.0 → 19.0.1.0.1 |
| Price | $349 USD — one-time |
| Odoo module licence | OPL-1 |
| Category | Accounting / Tax |
The module ships as a separate build for each Odoo major version (17.0, 18.0, 19.0), and each is a separate product. Install the build that matches the Odoo version you actually run — a 17.0 build will not install on Odoo 19. There is no activation key and no licence module to install: the module is self-contained and installs and runs standalone.
The module computes UAE Corporate Tax under Federal Decree-Law No. 47 of 2022 (financial years starting on or after 1 June 2023). It derives Taxable Income from your Odoo accounting profit through a structured adjustment waterfall, applies the AED 375,000 zero-rate band and the 9% standard rate, handles the Small Business Relief election and the Free Zone (QFZP) income split, and produces an audit-ready working paper for filing in the FTA EmaraTax portal.
Important — no filing transmission: there is no public machine-to-machine API for UAE CT return submission. EmaraTax (https://emsrvs.tax.gov.ae) is a portal that requires a UAE Pass or FTA account login. This module never transmits a return; it prepares the numbers and the workpaper that you (or your tax agent) enter into EmaraTax.
Requirements
| Requirement | Detail |
|---|---|
| Odoo | 17.0, 18.0 or 19.0, Community or Enterprise, self-hosted or Odoo.sh. Odoo Online (SaaS) cannot install third-party modules |
| Odoo apps | account (standard Odoo Accounting). mail comes with it and carries the chatter trail |
| Python packages | none beyond Odoo's own |
| Platform account | none — the module makes no outbound calls and needs no API credentials |
| Company data | a company with AED as its currency for correct threshold comparisons, and your 15-digit FTA Tax Registration Number (TRN) |
Installation
1. Install the package
Unpack the build that matches your Odoo series into an addons directory that is on the Odoo
addons_path:
unzip ecosire_uae_corporate_tax-<version>.zip -d /opt/odoo/addons/
sudo systemctl restart odoo
Installing the ZIP does not replace your database backup routine: take a database backup first on a production instance.
2. Install the module in Odoo
- Open Apps and click Update Apps List.
- Search for ECOSIRE UAE Corporate Tax Compliance.
- Click Install. There is no key to enter and no licence screen — the module is usable as soon as it is installed.
Installing the module gives the administrator the UAE CT / Manager group so a fresh database is usable straight away; grant UAE CT / User to the people who prepare returns (see Users and access).
Configuration
All thresholds are per-company data, not code: when FTA guidance changes you update the settings fields and no redeploy is needed.
Step 1 — Company settings
- Go to Settings and open the UAE Corporate Tax section.
- Fill in the fields (a UAE CT / Manager can also edit them on the company form under Settings ▸ Companies):
| Field | Meaning | Default |
|---|---|---|
uae_ct_trn | UAE Tax Registration Number — the 15-digit TRN from your EmaraTax profile | (blank) |
uae_ct_standard_rate | Corporate Tax rate above the zero-rate band (%) | 9.0 |
uae_ct_zero_rate_threshold | Taxable income taxed at 0% (AED) | 375,000 |
uae_ct_sbr_revenue_threshold | Gross-revenue ceiling for the Small Business Relief election (AED) | 3,000,000 |
uae_ct_sbr_available_until | Last period-end eligible for the SBR election | 2026-12-31 |
uae_ct_interest_cap_ebitda_pct | Interest-deduction limitation: EBITDA cap (%) | 30.0 |
uae_ct_interest_cap_floor | Interest-deduction limitation: floor amount (AED) | 12,000,000 |
- Click Save.
The defaults reflect publicly reported values. Several Ministerial Decisions (MD 73/2023 for SBR, MD 139/2023 for QFZP) have not been fully retrieved from primary sources at the time of writing. Confirm each threshold against the FTA legislation page (https://tax.gov.ae/en/Legislation.aspx) and update the settings before you file — no code change is needed.
Step 2 — Adjustment types (optional)
The install seeds the standard adjustment types (fines and penalties, disallowed entertainment, interest disallowance, exempt dividends and so on). Add your own under UAE Corporate Tax ▸ Configuration ▸ Adjustment Types — each type carries the legal reference that prints on the working paper.
Step 3 — Free Zone companies (QFZP)
For a Qualifying Free Zone Person, enable Qualifying Free Zone Person on the period, name the free zone, and enter the period's Qualifying Income (0%) and Non-Qualifying Income (9%). The module applies 0% to qualifying income and computes 9% on non-qualifying income above the AED 375,000 threshold. A QFZP is automatically ineligible for Small Business Relief.
Usage
The working paper, step by step
-
Create a period. UAE Corporate Tax ▸ Working Papers ▸ New. Set the Tax Period Start and Tax Period End. The Filing & Payment Due date is computed nine months after the period end. Choose the Entity Type (resident juridical person / non-resident with a UAE permanent establishment / natural person with business activity). The TRN defaults from the company settings and can be overridden per period.
-
Enter or pull accounting profit. Pull from Ledger derives accounting profit and gross revenue from the posted journal entries of the period. You can also key in figures from audited financial statements. Gross revenue is required for the SBR eligibility test.
-
Add income adjustments on the Income Adjustments tab. Addition lines increase taxable income (non-deductible expenses, interest disallowance); Deduction lines reduce it (exempt income). Enter amounts as positive figures — the type sets the direction.
-
Apply tax losses. Enter Tax Losses Brought Forward and Tax Losses Applied (capped at the balance brought forward); Losses Carried Forward is computed.
-
Configure the relief elections. Electing Small Business Relief triggers the eligibility test (revenue threshold, entity type, QFZP exclusion, SBR expiry); an invalid election shows an SBR Notice naming the reason. For QFZP, see Step 3 above.
-
Compute. Compute runs the waterfall:
Accounting Profit+ Total Additions- Total Deductions- Tax Losses Applied= Adjusted Income→ relief elections (SBR → taxable income = 0; QFZP → split income)→ zero-rate band (AED 375,000 at 0%)→ standard rate (9% on the excess)= CT PayableThe period moves to Computed and the chatter records the taxable income and CT payable.
-
Print the working paper. Print Working Paper renders a PDF showing every waterfall step with its legal reference — the document you attach to your tax file.
-
Read the EmaraTax field list. EmaraTax Field List posts the structured field values for the period (identification, revenue, Small Business Relief, Free Zone, tax payable) to the record's chatter, so you can copy each figure into the matching EmaraTax screen. The wording of the portal screens is FTA-controlled and is not asserted field-by-field here — the values are.
-
File in EmaraTax. Log in at https://emsrvs.tax.gov.ae with UAE Pass or your FTA account, open Corporate Tax ▸ File Return, select the period and enter the values. Keep the EmaraTax confirmation reference, then click Mark Filed in EmaraTax in Odoo to close the period. Reset to Draft reopens a period if you need to correct it.
Users and access
| Group | Can |
|---|---|
| UAE CT / User | Create and edit working papers and adjustments for their own companies |
| UAE CT / Manager | Everything a user can, plus configuration (adjustment types, company thresholds) |
Every model is company-scoped by record rule, so a user of one company cannot read another company's periods or adjustments.
Tax Group consolidated returns
Not supported. Whether a UAE CT tax group files one consolidated return or separate returns with an offset is not confirmed from the primary legislation, so Tax Group return refuses with a clear message instead of producing a number that might be wrong. File each group member's period individually until the rules are wired.
Troubleshooting and FAQ
| Issue | Cause | Fix |
|---|---|---|
| Pull from Ledger returns zero | No posted journal entries in the chosen period dates | Match the period dates to posted entries and make sure they are posted, not draft |
| An SBR notice appears although SBR was elected | The election failed an eligibility test | Read the notice — it names the reason (revenue above the threshold, QFZP company, non-resident entity, period end after the SBR expiry) |
| Enabling QFZP removes the SBR option | Expected behaviour | A QFZP is not eligible for Small Business Relief |
| Adjustments reject negative amounts | Validation | Enter positive amounts; choose the kind (addition/deduction) for direction |
| CT payable looks high for a QFZP | Qualifying and non-qualifying income are not split correctly | For a QFZP the 0% applies to qualifying income with no band deducted from it — enter only non-qualifying income in that field |
| Filing due date looks wrong | Company financial year not set correctly | The due date is nine months after the period end — check the period end date against your financial year |
| "Tax Group consolidated returns are not yet supported" | A group return was attempted | File each member's period individually; consolidation awaits confirmed rules |
| Tax figures look wrong after an FTA change | Seeded thresholds not verified against the legislation | Update the thresholds under Settings ▸ UAE Corporate Tax once verified |
Regulatory notes
- SBR time limit (reported): Small Business Relief is reported to be available for tax periods ending on or before 31 December 2026 (MD 73/2023). The module warns when SBR is elected for a period ending after the configured expiry date. Verify the boundary against the Ministerial Decision before relying on it.
- QFZP conditions (reported): Qualifying Free Zone Person status requires free-zone registration, adequate substance, qualifying income (or de-minimis non-qualifying income) and audited financial statements. The module takes the QFZP flag as a manual input — establishing and evidencing that status is the taxpayer's responsibility.
- No transmission: the module makes no outbound calls and never sends data to the FTA. It produces the numbers, the PDF working paper and the field list for manual entry in EmaraTax.
- Multi-company: each company keeps its own thresholds, elections and periods; a user sees only the companies they are allowed to see.