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. Customs Broker v 18.0
  4. Sales Conditions FAQ

Customs Broker

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 18.0 Third Party 43
Download for v 18.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
• Freight Forwarding
• Logistics Quotation
• Logistics Suite Base
Lines of code 9368
Technical Name eh_log_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

Customs Broker for Odoo 18

A guarded customs declaration spine with HS classification, duty and VAT lines, a deferment ledger, and a regulator-of-record adapter that country packs plug into.

Free · LGPL-3Odoo 18 Communityv18.0.1.0.0v18.0.1.0.0
DECLARATION SPINE
HS CLASSIFICATION
DUTY · VAT LINES
DEFERMENT LEDGER
REGULATOR ADAPTER

See it in action

Customs declarations list with broker reference, declaration type, regulator and state.

The broker workspaceDeclarations keyed by broker reference and declaration type, with regulator-of-record routing and a clean open / queried / cleared lifecycle.

Customs declaration form with HS classification lines, deferment account and regulator routing.

Declaration detailHS classification, duty and VAT, deferment account ledger and the regulator adapter all on one file.

Why this module

Customs Broker for Odoo 18

ENGINE, NOT PROTOCOL

The spine ships, the country pack does the wire

This module carries the declaration lifecycle, the deferment ledger, and the HS model. The regulator protocol lives in a separately registered adapter, so the engine holds zero knowledge of any specific authority. Submit without a registered adapter and it raises with the list of providers it does know, never a silent no-op.

GUARDED LIFECYCLE

States move through buttons, not raw writes

Ten declaration states with a whitelisted transition table. A direct write to the state field is rejected outright. Marking a declaration ready blocks on missing HS lines, missing HS codes, zero customs value, or a missing regulator profile. Submission blocks when the deferment balance is below what is payable.

MONEY THAT TIES OUT

A deferment ledger that actually computes

The deferment account balance is computed from posted ledger entries, opening balance plus credits minus debits, with cancelled entries excluded. Paying an assessed declaration auto-posts the duty and VAT debit back to the account, linked to the declaration for traceability. A low-balance threshold flags accounts before they block a submission.

Day in the life

From confirmed order to cleared declaration

An operator opens a declaration, picks the type, and adds HS lines. Each line pulls a default duty and VAT rate from the HS code, then computes duty as value times rate and VAT on value plus duty. Marking it ready runs the preflight: no lines, no HS code, zero value, or no regulator profile each block with a specific message. Submit dispatches through the regulator adapter; with no country pack installed it raises cleanly, listing the providers it recognises. Once assessed, paying it debits the deferment account and the balance ticks down. Every transition writes an audit event and posts to the chatter.

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.

DIRECT STATE WRITE

Writing the state field directly, outside the action buttons, is rejected with error EHL-CUSTOMS-DECL-001. State only moves through the guarded transition methods so the audit trail and preflight checks cannot be bypassed.

DISALLOWED TRANSITION

The transition table is a strict whitelist. Jumping from ready straight to cleared, or any move not in the allowed set, raises a state-conflict error naming the current state and the transitions that are legal from it.

NO REGULATOR ADAPTER

Submitting when no adapter is registered for the profile's provider code raises a configuration-missing error that lists every registered provider. The engine never falls back to a no-op or a mock unless a mock-mode adapter is explicitly registered.

DEFERMENT SHORT

If the deferment account balance is below the declaration's payable amount, submission is blocked with the account label, current balance, and payable shown, so the broker tops up before filing rather than after a rejection.

HS CODE SHAPE

HS codes are validated all-digit with length 2, 4, 6, 8, or 10. A non-numeric code or a five-digit code is rejected at write. The same code is allowed once per country (empty country is WCO scope), so national overlays do not collide.

CANCELLED LEDGER ENTRY

A cancelled deferment entry is excluded from the live balance computation entirely, so reversing a top-up or a duty debit restores the balance without leaving a phantom amount.

What is inside

Built to do the job, end to end.

  • Declaration spine and state machine. eh.log.customs.declaration carries parties, regulator-of-record, declaration number and date, HS lines, computed customs value, duty, VAT and total payable, broker reference, deferment account, and a ten-state lifecycle (draft, ready, submitted, queried, assessed, paid, cleared, closed, cancelled, rejected) with a whitelisted transition table and per-step preflight guards.
  • HS classification model. eh.log.customs.hs.code is a hierarchical chapter, heading, subheading, and national-line model with automatic level inference from code length, all-digit length validation, per-country uniqueness, and default duty and VAT rates that flow onto declaration lines. A 16-chapter seed ships; country packs add the deeper national overlays.
  • Deferment account ledger. eh.log.customs.deferment.account is the broker's prepaid float at a customs authority, with a live balance computed from eh.log.customs.deferment.entry rows (credits for top-ups, debits for duty), a configurable low-balance flag, and account-number uniqueness per regulator and company. Paying a declaration auto-posts the duty and VAT debit.
  • Regulator-of-record adapter. Each declaration links to an eh.log.adapter.profile. The submit action builds a neutral payload dict and dispatches through the shared adapter registry with an idempotency key, so any country pack can map the payload to its wire format. Adapter exchanges are recorded with correlation id and redacted payloads in the suite's audit message log.
  • Declaration types and sale-order linkage. eh.log.customs.declaration.type seeds the universal directions (Import, Export, Transit, Transfer, Re-export, Temporary Admission) with a requires-deferment flag, extensible per country. A declaration links back to its sale order, and the sale order shows a smart-button counter of its declarations.
  • Multi-company, audit, and search. Record rules isolate declarations, deferment accounts, and entries by company. Every state transition logs an event and posts to the chatter. List, form, kanban, calendar, pivot, and graph views ship with a search view for filtering and grouping by state, type, regulator, and customer.

Honest about the edges

What this does not do, so nothing surprises you.

  • Declarations are created and operated by hand. This module does not auto-spawn declarations when a sale order is confirmed; the sale order carries a smart-button counter only. Plan to create each declaration from the workspace.
  • No regulator wire protocol ships in this module. Submission dispatches through an adapter that a country localisation pack must register. With no pack installed, submit raises a clear configuration error rather than transmitting anything.
  • The HS seed is chapter-level only (16 chapters). Heading, subheading, and national tariff lines with country-specific duty and VAT rates come from country packs, not from this base module.
  • Duty and VAT are computed from per-line rates you supply or that the HS code defaults provide. There is no live tariff-database lookup, no multi-currency declared-value conversion, and no customs-valuation engine beyond value times rate.
  • There is no built-in document register, dangerous-goods classification guard, penalty or dispute workflow, pre-arrival notification, or period-end statement PDF in this module. Those are out of scope for the declaration spine.
  • Deferment debits are posted on payment of an assessed declaration. The module does not reserve or ring-fence a balance at submission time; the submission guard checks the balance but does not hold it.
Search

customs broker odoo, customs clearance odoo 19, customs declaration management, HS code classification, harmonised system tariff, duty and VAT calculation, deferment account ledger, regulator of record adapter, single window customs, freight forwarding customs, 3PL customs module, import export declaration, customs declaration lifecycle, multi company customs odoo, odoo 19 community logistics

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 Odoo Implementation Australia • LinkedIn

v18.0.1.0.0 · LGPL-3 · Odoo 18 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