Back to all articlesAccounting

Fiscal Positions in Odoo: Why HK Businesses With No VAT Still Need Them

How Odoo fiscal positions auto-classify revenue and expenses by region — and why correct local-vs-offshore mapping matters for Hong Kong Profits Tax filing, even with no consumption tax.

APAA
Fiscal Positions in Odoo: Why HK Businesses With No VAT Still Need Them

At APAA, "Hong Kong has no VAT — do I even need fiscal positions?" is one of the most common questions we field from SME owners setting up Odoo. It is a fair question, and the short answer surprises people: if you do any cross-border business at all, yes, you absolutely need them — just not for the reason most people assume.

Hong Kong's simple, low-tax regime is genuinely an advantage. No VAT, no GST, no sales tax. But that simplicity disappears the moment trade crosses a border. Selling to a mainland China client brings PRC VAT into the picture. Exporting to the EU means dealing with VAT Reverse Charge. Importing from overseas can pull in customs duties. And even for purely local transactions, different revenue types need to land in separate accounts so your Profits Tax filing holds up. Odoo's fiscal positions exist to handle exactly this, automatically. This guide explains what they are, how to configure them for a Hong Kong business, and the three ways to apply them.

Why Hong Kong Businesses Need Fiscal Positions

Let us address the objection head-on. Yes, Hong Kong imposes no consumption tax. But fiscal positions in the Hong Kong context are mostly not about tax rates — they are about classifying revenue and expenses correctly, which is what makes your tax filing defensible.

The Hong Kong Tax Landscape

TaxRateNotes
Profits TaxFirst HK$2M: 8.25%, remainder: 16.5%Only on Hong Kong-sourced profits
Salaries TaxProgressive, max 15%Not relevant to fiscal positions
VAT/GSTN/AHong Kong imposes no consumption tax
Import DutyMost goods duty-freeOnly on alcohol, tobacco, hydrocarbon oils, methanol

That two-tier Profits Tax — 8.25% on the first HK$2 million of profits and 16.5% on the rest — applies only to Hong Kong-sourced profits. That last phrase is the whole reason fiscal positions matter here: you need to be able to show, cleanly, which of your revenue is local and which is offshore.

When You Actually Need Fiscal Positions

Transaction typeTax treatmentAccount classification
Local sale (B2B/B2C)No tax (0%)Local sales revenue
Export to mainland ChinaNo tax on the HK side; the buyer handles PRC VATExport revenue — China
Export to EU B2BNo tax (Reverse Charge — the buyer reports VAT)Export revenue — EU
Export to USNo tax on the HK sideExport revenue — other regions
Import from mainland ChinaMost goods duty-free; record the import costsImport costs
Import from EUMay involve local VAT (record if refundable)Import costs — EU

The key takeaway: Hong Kong charges no consumption tax, but correctly separating local from export revenue is critical for Profits Tax filing — and especially for any offshore income exemption claim.

What Fiscal Positions Are

Fiscal positions are rule sets inside Odoo's accounting module that automatically swap the default taxes and accounts on your products when a transaction meets specific conditions.

How they work:

  • You set default taxes on your products (for example, "No Tax" for a Hong Kong business)
  • When a customer or transaction matches a fiscal position's criteria,
  • Odoo substitutes the taxes and accounts that position defines.

What that looks like for a Hong Kong business:

Customer typeDefault taxFiscal positionApplied taxAccount
Local customerNo taxNone (use default)No taxLocal sales revenue
Mainland China B2BNo taxChina ExportNo taxExport revenue — China
EU business customerNo taxEU B2B ExportNo taxExport revenue — EU
Other overseas customerNo taxOverseas ExportNo taxExport revenue — other

Notice what is happening across that table: the tax stays "No tax" in every row. In the Hong Kong context, fiscal positions are doing account classification, not tax-rate substitution. You are not adding tax — you are routing each region's revenue to its own ledger account, which you need for three reasons:

  1. Profits Tax filing — distinguishing Hong Kong-sourced from offshore income
  2. Management reporting — seeing how each market actually performs
  3. Audit preparation — clean classification means fewer auditor queries

Setting Up Fiscal Positions for Hong Kong

Step 1: Review Your Chart of Accounts

Before you configure any fiscal position, make sure your chart of accounts is granular enough to receive the classified revenue. Here is a structure that works well for an export-active Hong Kong SME:

Account codeAccount namePurpose
4000Local Sales RevenueHong Kong domestic transactions
4100Export Revenue — Mainland ChinaSales to mainland China
4200Export Revenue — EUSales to the European Union
4300Export Revenue — Other RegionsSales to all other overseas markets
4400Service Revenue — LocalLocal services
4500Service Revenue — OverseasCross-border services

Step 2: Create the Fiscal Positions

Go to Accounting → Configuration → Fiscal Positions and build one position per transaction type.

Example: Mainland China Export

  1. Click Create
  2. Name it "Mainland China Export"
  3. Under the Account Mapping tab:
    • Default account 4000 (Local Sales Revenue) → replacement 4100 (Export Revenue — Mainland China)
    • Default account 4400 (Service Revenue — Local) → replacement 4500 (Service Revenue — Overseas)
  4. In Legal Notes: "Export sale — no consumption tax applicable under Hong Kong tax law"

Example: EU B2B Export

  1. Name it "EU B2B Export"
  2. Account mapping: 4000 → 4200
  3. Legal notes: "Reverse Charge — VAT to be accounted for by the recipient per EU Council Directive 2006/112/EC"

Step 3: Configure Tax Mappings (If Applicable)

Most Hong Kong transactions carry no tax, but you may still need tax mappings for a few situations:

  • Withholding tax — some countries require withholding on payments made to Hong Kong suppliers
  • Tax recorded for reference — recording the buyer's VAT liability (for example, mainland China's 13% VAT) purely for reconciliation purposes
  • Agency-collected taxes — where you collect tax on a buyer's behalf through certain platforms

How Fiscal Positions Get Applied

Once your positions exist, Odoo gives you three ways to attach them to a transaction. They range from fully automatic to fully manual.

Method 1: Automatic Detection

The most efficient route — Odoo picks the right position from the customer's data.

  1. Go to Accounting → Configuration → Fiscal Positions
  2. Open a position (for example, "Mainland China Export")
  3. Enable Detect Automatically
  4. Set the conditions:
    • Country: select "China"
    • Or Country Group: select a group you have created (for example, "Southeast Asia")

A sensible automatic-detection setup for a Hong Kong business:

Fiscal positionDetection criteria
Mainland China ExportCountry = China
EU B2B ExportCountry Group = EU + VAT Required
Overseas ExportCountry Group = Non-HK, Non-China, Non-EU

Detection order matters. Odoo tries to match positions in the order they appear in the list, so put the most specific conditions first. "Mainland China Export" must sit above "Overseas Export" — otherwise a mainland customer would be wrongly swept into the generic overseas position.

Method 2: Partner Default

Assign a default fiscal position to a specific customer or vendor.

  1. Go to Contacts and open the partner record
  2. Switch to the Sales & Purchase tab
  3. Pick the right position in the Fiscal Position field

This suits long-term mainland China clients, regular overseas distributors, and any partner with a special tax arrangement.

Method 3: Manual Override

Override the position directly on an individual invoice or bill.

  1. Create the invoice or bill
  2. Select the customer or vendor first
  3. Go to the Other Info tab
  4. Change the Fiscal Position field

Handy for genuine one-offs — for instance, a normally-local customer asking for a single shipment direct to an overseas address.

Three Real Hong Kong Scenarios

A Trading Company (Import/Export)

A Hong Kong trader sources from mainland China and sells into Europe and Southeast Asia. The setup:

  • "Mainland China Supplier" — classifies import costs to a dedicated account
  • "EU B2B Export" — classifies export revenue and attaches the Reverse Charge legal note
  • "Southeast Asia Export" — classifies export revenue to a regional account

The result: every sale lands in the correct revenue account automatically, Profits Tax filing cleanly separates local from offshore income, and invoices carry the right legal disclaimers without anyone remembering to add them.

A Professional Services Firm (Consulting/IT)

A Hong Kong IT consultancy serves both local and overseas clients:

  • Local clients use the default (Service Revenue — Local)
  • "Overseas Service" classifies service revenue to the overseas account, supporting any offshore income exemption claim

The result: service revenue splits by geography on its own, offshore claims are backed by clean accounting records, and year-end adjustments shrink dramatically.

A Retail / E-commerce Seller (Cross-border)

A Hong Kong e-commerce seller trades locally and sells into the mainland via cross-border platforms:

  • Local sales use the default
  • "Cross-border E-commerce — China" records platform-mediated mainland revenue, noting any platform-collected tax arrangements

The result: local and cross-border revenue stay cleanly separated, making channel performance easy to track.

Practices Worth Adopting

Always select the customer first. When creating an invoice or bill, add the customer or vendor before any product lines. That ensures the right fiscal position applies from the outset and every subsequent tax and account calculates correctly.

Prefer automatic detection over manual selection. Use auto-detection wherever you can. Manual picking is error-prone, and the risk only grows with transaction volume.

Review your positions at least annually. Tax rules change. Once a year, confirm that account classifications still meet filing requirements, legal note wording is still accurate, and detection rules still cover all your common transaction types.

Test thoroughly before going live. Create sample invoices with test customers from different regions and verify that the correct position auto-detects, account mappings apply, legal notes appear on the invoice, and reports aggregate correctly by region.

Work with your tax advisor. Hong Kong's offshore income exemption claim has strict requirements. Fiscal position account classification is only the first step — the actual tax treatment should be guided by a qualified tax advisor.

Summary

For a Hong Kong business, the core value of Odoo fiscal positions is not tax-rate substitution — because Hong Kong charges no consumption tax — but automated revenue and expense classification. The points that matter:

  • Account mapping is the primary function — routing transactions from different regions into the correct ledger accounts
  • Automatic detection assigns the right position from the customer's location, cutting human error
  • Legal notes ensure invoices carry the correct disclaimers (Reverse Charge, and so on)
  • Profits Tax filing benefits from clean revenue classification, especially the local-vs-offshore distinction

Set up properly, fiscal positions mean your books are organised by region and transaction type from day one — which is exactly what cuts down the year-end audit and tax-filing scramble.

Where to Go From Here

Start by reviewing your existing chart of accounts for enough revenue and cost classifications. Then build fiscal positions for your primary trading markets, set automatic detection for your most common customer regions, assign defaults to long-term partners, and test with sample invoices before going live.

If you would rather have your chart of accounts and fiscal positions designed around how your Hong Kong business actually trades — and the offshore-income angle handled correctly — that is precisely the work our team does. Talk to APAA about setting up your Odoo tax classification.

Tags:odooaccountingfiscal-positionstaxprofits-tax

Considering Odoo for your business?

Talk to APAA about a tailored Odoo implementation for your Hong Kong SME.

Enquire about Odoo services
Fiscal Positions in Odoo: Why HK Businesses With No VAT Still Need Them | APAA