Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Delivery
  3. Logistics UAE Customs v 19.0
  4. Sales Conditions FAQ

Logistics UAE Customs

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 17
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Sales (sale_management)
• Purchase (purchase)
• Discuss (mail)
Community Apps Dependencies Show
• Customs Broker
• Logistics Suite Base
• Logistics UAE
• Freight Forwarding
• Logistics Quotation
Lines of code 10421
Technical Name eh_log_l10n_ae_customs
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · Logistics Suite
ERP Heritage Logistics Suite

Logistics UAE Customs (Mirsal 2)

Plugs a working Mirsal 2 declaration adapter, UAE declaration types, and HS duty overlays into the logistics customs engine, so a fresh install can write and submit a UAE declaration on day one.

Free · LGPL-3Odoo 19 Communityv19.0.1.0.0v19.0.1.0.0
Mirsal 2 adapter
Declaration submit
Status query
Health check
7 UAE declaration types

Why this module

Logistics UAE Customs (Mirsal 2)

Real adapter, not a stub

A concrete Mirsal 2 adapter that actually serialises and parses

The module ships a real subclass of the suite BaseAdapter. It builds the documented Mirsal 2 declaration XML (parties, totals, lines with HS code, duty and VAT rates), dispatches over HTTPS through the engine transport, and parses the regulator response into a structured result with the regulator reference, status, and any field-level errors. Declaration submit, status query, and health check are all implemented.

Day-one UAE master data

UAE declaration types and HS overlays seeded on install

Seven UAE-scoped declaration types are appended to the universal seed: import to local from ROW, import to free zone, free zone to free zone, free zone to local, re-export consumed, temporary admission, and export to ROW. A starter UAE HS overlay carries duty and VAT defaults including excise-bearing goods. Enough to write a working declaration without hand-keying master data first.

Safe by default

Mock environment on install, so nothing calls the live regulator

The seeded Mirsal 2 profile defaults to the mock environment. A fresh deployment replays bundled fixtures deterministically and never accidentally hits the live Dubai Trade endpoint. Operators flip the environment to sandbox or production only after configuring the credential through the documented precedence chain (environment variable first, then encrypted config parameter), resolved per company.

Day in the life

From a typed declaration to a regulator reference, in one click

A broker fills a UAE import declaration in the customs engine: declaration type, parties with their tax registration numbers, lines with HS codes, customs value, duty and VAT. They submit. The Mirsal 2 adapter serialises the record into the documented XML, dispatches it, and parses the response. On acceptance the regulator-issued reference lands back on the declaration; on rejection the field-level error (for example an HS code not registered in the national tariff) is surfaced verbatim. Every request and response is logged as an append-only adapter message for audit. With the profile in mock mode, the whole loop runs offline against bundled fixtures, so the team can rehearse the flow before live credentials exist.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

Regulator rejection

When Mirsal 2 rejects a declaration, the parser extracts each error code, message, and offending field (for example HS_CODE_NOT_FOUND pointing at Lines/Line[1]/HsCode) into a structured list rather than swallowing it, so the operator sees exactly which line failed.

Malformed regulator XML

A submit response that is not well-formed XML raises a typed AdapterValidationError with a clear message and the raw payload preserved in the message log, instead of a bare stack trace. The status query and health check parsers degrade gracefully to an unknown or OK status.

Free zone movements

UAE free zone reality is modelled as distinct declaration types: import to free zone, free zone to free zone, and free zone to local. The free-zone-to-local and import-to-local types carry the deferment-required flag that triggers the engine guarantee-balance guard before submission.

Excise-bearing goods

The HS overlay seeds duty rates that reflect UAE excise reality (50 percent on carbonated and malt beverages, 100 percent on cigarettes) alongside zero-rated medicines, so the seeded tariff is a realistic starting point rather than a flat placeholder.

Missing credentials in mock

Building request headers without a configured API key does not crash in mock mode; the live call path fails fast with a clean credentials-missing message only when a real dispatch is attempted.

Multi-company dispatch

Credential lookup is company-scoped, so one Odoo install can dispatch to two companies Dubai Trade accounts from the same Mirsal 2 profile shape without cross-wiring keys.

What is inside

Built to do the job, end to end.

  • Mirsal 2 adapter (adapters/mirsal2.py). Concrete BaseAdapter subclass, provider code mirsal2, API version pinned to 2.4. Implements serialize and parse for declaration_submit, declaration_status, and health_check, with per-message endpoint paths, HTTP method selection, and Bearer-token headers from the credentials helper. Registered in the suite adapter registry at import time.
  • UAE declaration types (data). Seven country-scoped eh.log.customs.declaration.type records appended to the universal seed: import to local, import to free zone, free zone to free zone, free zone to local, re-export consumed, temporary admission, export to ROW. Two carry the requires_deferment flag that drives the engine pre-submission guard.
  • UAE HS overlay (data). Eight UAE-scoped eh.log.customs.hs.code records with duty and VAT defaults, including smartphones, portable computers, vehicles, excise-bearing beverages and tobacco, medicines, and plastics. A starter set; production deployments append the full national tariff through a separate data load.
  • Default Mirsal 2 profile (data). One eh.log.adapter.profile record seeded with environment set to mock, sandbox endpoint, API key auth, request timeout, retry attempts, and circuit-breaker threshold and cooldown, so the engine resilience controls are pre-tuned for this regulator.
  • Fixture-backed tests (tests). A TransactionCase suite asserts registry registration, profile seeding, well-formed submit XML serialisation including every line, structured parse of the success and rejection fixtures, typed errors on unknown message types and malformed XML, and a full mock-mode round trip that writes an adapter message.
  • Auto-install wiring (manifest). Depends on eh_log_base, eh_log_customs, and eh_log_l10n_ae, with auto_install true, so buyers who already run the customs engine and the UAE localisation pack get the Mirsal 2 wiring without an extra install step.

Honest about the edges

What this does not do, so nothing surprises you.

  • This is an add-on, not a standalone app. The customs declaration model, its state machine, the deferment account and ledger, and the submit action all live in the parent customs engine (eh_log_customs); this pack supplies the UAE adapter and master data that those features run against.
  • The Mirsal 2 adapter is implemented to the published documentation and verified offline with fixtures. Live sandbox and production verification are deferred until the operator configures real Dubai Trade credentials; the profile ships in mock mode for this reason.
  • Implemented message types are declaration submit, status query, and health check. There is no amendment or cancellation message type, no pre-arrival notification, and no scheduled status-polling cron in this module.
  • The HS overlay is a starter set of eight subheadings with default duty and VAT rates. It is not the full UAE national tariff; operators load the complete tariff and override per-line rates where the actual rate differs.
  • The module ships no views, wizards, or new security-controlled models of its own. It is a data and adapter pack that surfaces through the parent engine screens.
  • Default duty and VAT rates in the seed reflect common UAE values at time of authoring and are not a substitute for a current ruling from the customs broker or the regulator.
Search

UAE customs Odoo, Mirsal 2 adapter, Dubai Trade integration, Dubai Customs declaration, Odoo 19 freight forwarding, customs declaration Odoo, UAE HS code tariff, FTA VAT customs, free zone declaration UAE, GCC customs Odoo, Federal Customs Authority, logistics customs engine, Odoo Community customs, deferment account customs, Mirsal declaration submission

Languages

Available in 19 languages

The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.

ArabicChinese (Simplified)Chinese (Traditional)DutchFrenchGermanHindiIndonesianItalianJapaneseKoreanPolishPortuguese (Brazil)RussianSpanishSwedishThaiTurkishVietnamese
ERP Heritage

Production-grade Odoo accounting, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by ERP Heritage - Top Odoo Partner • LinkedIn

v19.0.1.0.0 · LGPL-3 · Odoo 19 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with