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. Inventory
  3. HS Classification v 19.0
  4. Sales Conditions FAQ

HS Classification

by Grevlin Global Corp. https://www.grevlin.com
Odoo

$ 17.23

v 19.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Purchase (purchase)
• Invoicing (account)
Lines of code 313
Technical Name grev_od_hs_classification
LicenseOPL-1
Websitehttps://www.grevlin.com
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Purchase (purchase)
• Invoicing (account)
Lines of code 313
Technical Name grev_od_hs_classification
LicenseOPL-1
Websitehttps://www.grevlin.com
  • Description
  • Documentation
  • License
🌎 International Trade  ·  Inventory  ·  Compliance

HS Classification

The complete Harmonized System master for Odoo — 6,940+ WCO codes, 4-level hierarchy, default duty rates, restricted goods flagging, and direct product linkage. One module, zero spreadsheets.

✅ Odoo 19.0 Community / Enterprise
🔒 OPL-1 License
€15 — One-time purchase

Every product shipped across a border needs an HS code — the 6-digit international identifier that determines customs duties, import restrictions, and trade statistics. Without a structured master in Odoo, companies fall back on free-text fields and spreadsheets, introducing errors and audit risk. HS Classification solves this permanently: install once, get 6,940 codes from the WCO 2022 nomenclature, and link every product to its authoritative classification in seconds.

Core Features

🌎

Complete WCO Master Data

6,940+ codes from the WCO 2022 Harmonized System nomenclature, organized across 22 sections and 99 chapters. Loaded automatically at install — no manual import required.

🏠

4-Level Hierarchy

Section → Chapter (2-digit) → Heading (4-digit) → Subheading (6-digit). Hierarchy fields are auto-computed from the code string and stored for fast grouping and filtering.

📊

Default Duty Rates

Store a default import duty rate (%) per HS code with optional country-of-origin scoping. The rate surfaces directly on the product form as a read-only computed field — no extra navigation.

🚫

Restricted Goods Flagging

Flag codes that require special permits, import licenses, or are subject to prohibition. The flag propagates to the product form instantly as a read-only indicator visible to procurement teams.

📚

Versioned & Auditable

Each HS code carries a version number, effective date, and supersession pointer to its replacement. The chatter tracks every change to code, name, version, restriction status, and effective date.

🔗

Product Form Integration

A dedicated HS Classification tab on every product template exposes the HS code selector, duty rate, and restricted-goods indicator without leaving the product record.

The HS Hierarchy in Odoo

Section
I — Live Animals & Animal Products
↓
Chapter (2-digit)
01 — Live animals
↓
Heading (4-digit)
0101 — Live horses, asses, mules and hinnies
↓
Subheading (6-digit)
0101.21 — Pure-bred breeding horses

Master Data at a Glance

22 Sections (I — XXII)
99 Chapters
6,940+ HS codes (WCO 2022)
4 Hierarchy levels
🕐 Data sourced from the official WCO 2022 Harmonized System nomenclature. Loaded at install. Upgradeable via -u.

Built as a Reusable Foundation

HS Classification is a pure data provider — it exposes no side-effects and is safe to declare as a dependency. Any Grevlin module (or your own) that needs HS code data simply lists grev_od_hs_classification in its depends and reads product.hs_code_id.

Trade Logistics
Pre-fills shipment line HS codes from the product record for customs declarations and freight documentation.
Trade Inspection
References HS codes for pre-shipment inspection classification and regulatory compliance checks.
Commodity Base
Commodity products inherit HS classification for agricultural trade, weighbridge documentation, and export compliance.
Your Custom Modules
Add grev_od_hs_classification as a dependency and access product.hs_code_id in any business flow — zero side-effects.

Three-Tier Security Model

👁

HS User

Read-only access to sections and codes. Suitable for all employees who need to look up HS codes on products.

✏️

HS Officer

Can create and edit HS codes. Designed for compliance teams maintaining company-specific code variants.

🛡

HS Manager

Full CRUD including delete. Configures sections, manages code lifecycle, and retires superseded codes.

🔓 Multi-company record rules ensure each company sees only its own codes and global WCO codes. Group inheritance is fully chain-based: Manager ⊃ Officer ⊃ User.

Changelog

Version 1.0.0 — April 2026   Initial Release

  • Complete WCO 2022 Harmonized System master: 22 sections, 6,940+ codes
  • 4-level hierarchy with auto-computed chapter, heading, and subheading fields
  • Default duty rate per code with optional country-of-origin scoping
  • Restricted goods flag with propagation to product.template
  • Code versioning with effective date and supersession tracking
  • Chatter-based audit trail on all business-critical fields
  • Dedicated HS Classification tab on the product form
  • Three-tier security model with multi-company record rules
  • Fully reusable as a zero-side-effect dependency module
🙋

Need Help?

30 days of free support included with every purchase.

📧 support@grevlin.com

𝕏 @GrevlinGlobal

© 2026 Grevlin Global Corp. · OPL-1 License · Compatible with Odoo 19.0 Enterprise · www.grevlin.com

HS Classification

The HS Classification module provides a complete, versioned :dfn:`Harmonized System` (:abbr:`HS (Harmonized System)`) code master for Odoo 19.0 — preloaded with 6,940+ codes from the WCO 2022 nomenclature, organized across 22 sections and 4 hierarchy levels. It links every product to its authoritative international trade classification and surfaces duty rates and restricted-goods flags directly on the product form.

This module is a pure data provider designed to be declared as a dependency by any Grevlin module (or custom module) that requires HS code data. It introduces no side-effects on the modules that depend on it.

Note

This module targets Odoo 19.0 Enterprise and is licensed under OPL-1.

Overview

Key Features

  1. Complete WCO 2022 master data — 22 sections (I–XXII), 99 chapters, and 6,940+ subheadings loaded automatically at installation.
  2. 4-level hierarchy — Section → Chapter (2-digit) → Heading (4-digit) → Subheading (6-digit), with hierarchy fields auto-computed and stored for fast search and grouping.
  3. Default duty rates — a Float duty rate per code with optional country-of-origin scoping via a Many2many to res.country.
  4. Restricted goods flagging — a boolean flag that propagates instantly to the product form as a read-only indicator.
  5. Code versioning and supersession — each code carries a version number, effective date, and a pointer to its replacement when retired.
  6. Full audit trail — mail.thread chatter on grev.hs.code tracks every change to code, name, version, is_restricted, and effective_date.
  7. Product form integration — a dedicated HS Classification tab on every product.template record.
  8. Multi-company support — global WCO codes (company_id = False) are visible to all companies; company-specific variants are scoped via record rules.

Data Models

grev.hs.section
The 22 top-level WCO sections (Roman numerals I–XXII). Global — no company_id. Each section groups the chapters that fall under it.
grev.hs.code
The central classification entity. One record per HS code per version per company. Tracks hierarchy, duty rate, restriction status, versioning, and regulatory notes. Inherits mail.thread for chatter-based auditing.
product.template extension
Adds hs_code_id (Many2one), hs_duty_rate (related Float, read-only), and hs_is_restricted (related Boolean, read-only) to the product form under the HS Classification tab.

Installation

  1. Copy the grev_od_hs_classification module directory into your Odoo add-ons path.
  2. Update the add-ons list: :menuselection:`Settings --> Technical --> Activate Developer Mode`, then :menuselection:`Settings --> Apps --> Update Apps List`.
  3. Search for HS Classification and click :guilabel:`Install`.

Important

Master data (22 sections and 6,940+ HS codes) is loaded automatically during installation via CSV files with noupdate=0. Running -u grev_od_hs_classification on a later Odoo upgrade will refresh the standard nomenclature without touching company-specific codes.

Configuration

Security Groups

Assign users to the appropriate group via :menuselection:`Settings --> Users & Companies --> Users`:

Group Permissions
HS Classification / User Read grev.hs.section and grev.hs.code
HS Classification / Officer Create and edit codes (inherits User)
HS Classification / Manager Full CRUD including delete (inherits Officer)

The :menuselection:`Purchase --> Configuration --> HS Classification` root menu is visible to all users in the User group or higher. The :menuselection:`Configuration` sub-menu (sections and codes) requires the Manager group.

Multi-Company

Global WCO codes are created with company_id = False and are visible to every company. To create a company-specific variant of a code, set the :guilabel:`Company` field on the grev.hs.code record to the relevant company. The record rule company_id = False OR company_id in company_ids enforces isolation.

Note

grev.hs.section carries no company_id — sections are part of the international standard and are shared across all companies.

Usage

Assigning an HS Code to a Product

  1. Navigate to :menuselection:`Inventory --> Products --> Products` (or :menuselection:`Purchase --> Products --> Products`).
  2. Open a product and click the :guilabel:`HS Classification` tab.
  3. In the :guilabel:`HS Code` field, search by code string or description (e.g. 0101 or horse).
  4. Select the appropriate subheading. :guilabel:`Duty Rate (%)` and :guilabel:`Restricted Goods` are populated automatically from the linked code.
  5. Click :guilabel:`Save`.

Tip

Use the search bar inside the HS Code selector to filter by section or chapter. The selector displays the 6-digit subheading and its WCO description for unambiguous selection.

Browsing the HS Code Master

To browse or search all codes, go to :menuselection:`Purchase --> Configuration --> HS Codes`.

  • The list view shows code, description, section, duty rate (%), and restriction status.
  • Use :guilabel:`Group By` → Section or Chapter for a hierarchical view.
  • Use the :guilabel:`Restricted Goods` filter to see only flagged codes.
  • Archived codes are hidden by default; enable :guilabel:`Archived` to include them.

Managing Code Lifecycle

Retiring an Obsolete Code

  1. Open the code to retire via :menuselection:`Purchase --> Configuration --> HS Codes`.
  2. In the :guilabel:`Superseded By` field, select the replacement code.
  3. Set :guilabel:`Active` to False to archive the retired code.
  4. Click :guilabel:`Save`.

Important

Archiving a code does not delete it. Products linked to an archived code retain the linkage and the code remains accessible in audit history. ondelete='restrict' on product.template.hs_code_id prevents deletion of any code in use by a product.

Creating a Company-Specific Code Variant

  1. Go to :menuselection:`Purchase --> Configuration --> HS Codes` and click :guilabel:`Create`.
  2. Enter the code string, description, and set the :guilabel:`Company` field to your company.
  3. Assign the appropriate :guilabel:`Section` and fill duty / compliance fields as needed.
  4. Click :guilabel:`Save`.

Note

Company-specific codes coexist with global WCO codes. Only users of the owning company can see the company-specific variant; all companies see the global codes with company_id = False.

Integration

This module is consumed by the following Grevlin modules:

Module How it uses HS Classification
grev_od_purchase_trade_logistics Reads product.hs_code_id to pre-fill shipment line HS codes for customs declarations and freight documentation.
grev_od_purchase_trade_inspection References hs_code_id for pre-shipment inspection classification and regulatory compliance checks.
grev_od_commodity_base May reference grev.hs.code for commodity product classification in agricultural trade workflows.
Any custom module Declare grev_od_hs_classification in depends; access product.hs_code_id directly — no additional configuration needed.

To access HS code data from another module:

hs_code = product.hs_code_id        # grev.hs.code record or empty
duty    = product.hs_duty_rate       # Float, read-only related
restricted = product.hs_is_restricted  # Boolean, read-only related

Technical Reference

Field Index — grev.hs.code

Field Type Description
code Char (required, indexed) HS code string, e.g. 1001.91
name Char (required) Short WCO description
section_id Many2one → grev.hs.section Parent section
chapter Char (computed, stored) First 2 digits of the code
heading Char (computed, stored) First 4 digits of the code
subheading Char (computed, stored) First 6 digits of the code
parent_id Many2one → grev.hs.code Hierarchical parent code
version Integer (default 1) Edition version
effective_date Date Date this version became active
superseded_by_id Many2one → grev.hs.code Replacement code when retired
duty_rate Float(16,4) Default import duty rate (%)
origin_country_ids Many2many → res.country Countries where this rate applies; empty = global
is_restricted Boolean Requires special permit or license
company_id Many2one → res.company Owning company; False = global

Database Constraints

  • grev.hs.section.code — unique across all companies (WCO global standard).
  • (grev.hs.code.code, version, company_id) — unique per company scope.
  • section_id uses ondelete='restrict' — a section with linked codes cannot be deleted.
  • parent_id uses ondelete='restrict' — a parent with children cannot be deleted.
  • product.template.hs_code_id uses ondelete='restrict' — an HS code linked to a product cannot be deleted.
  • superseded_by_id uses ondelete='set null' — retiring a code never cascades a deletion.

Hierarchy Computation

_compute_hierarchy strips dots and spaces from the code string, then slices:

clean      = code.replace('.', '').replace(' ', '')
chapter    = clean[:2]   # e.g. "10"
heading    = clean[:4]   # e.g. "1001"
subheading = clean[:6]   # e.g. "100191"

All three fields are stored (store=True) for indexed search and grouping.

See Also

  • grev_od_purchase_trade_logistics — reads product.hs_code_id for shipment customs data
  • WCO Harmonized System — official WCO nomenclature overview
  • Grevlin Procurement Suite
Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

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 or have a question related to your purchase, please use the support page.
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