Odoo Fiscal Positions
Odoo Fiscal Positions are rules that automatically remap the default taxes and accounts on a transaction based on a customer or vendor's situation — such as inter-state, SEZ or export. They are configured in Odoo Accounting and attached to a contact. They matter because they apply the correct GST treatment (IGST versus CGST/SGST, or zero-rated) automatically, instead of relying on the user to pick the right tax each time.
What Are Odoo Fiscal Positions?
A fiscal position is Odoo's mechanism for saying "for this kind of party, swap the default tax and account for this other one." A product carries a default tax — say GST 18% intra-state — but when it is sold to an out-of-state customer, the fiscal position remaps that to 18% IGST, and to a customer in an SEZ or abroad it remaps to a zero-rated tax. The rule does the substitution so the user does not have to remember it.
An Indian business on Odoo meets fiscal positions the moment it sells across state lines. A Coimbatore textile manufacturer selling within Tamil Nadu charges CGST+SGST, but the same product to a Karnataka buyer must attract IGST; a fiscal position mapped to the customer's state makes Odoo apply the right one automatically. It is the difference between correct GST by design and correct GST by everyone remembering the rule.
Key terms
- Parent-Subsidiary Consolidation — Combining group accounts, each with its own tax setup.
- Tally Vault — Tally's company data encryption feature.
- Tally XML Export — Exporting Tally data in XML for interchange and migration.
How Odoo Fiscal Positions Work
A fiscal position sits between the default tax and the transaction, swapping in the correct treatment:
- 1Define the mapping
A fiscal position lists which default taxes and accounts map to which replacements — the rule itself.
- 2Attach it to a contact
The position is set on a customer or vendor (or auto-detected by state/country), telling Odoo when to apply it.
- 3Create a document
An invoice or bill is raised for that contact, carrying products with their default taxes.
- 4Remap on the fly
Odoo substitutes the mapped tax and account — for example IGST in place of CGST/SGST — on each line.
- 5Post the correct entry
The double-entry engine posts the remapped tax to the right GST account, so returns pull correct figures.
How to Set Up Odoo Fiscal Positions in Odoo
Fiscal positions are configured in Accounting and then applied to contacts (Odoo Accounting, v17/18):
- 1Open the Accounting app
From the Odoo apps, open Accounting.
- 2Go to Fiscal Positions
Navigate to Configuration > Fiscal Positions to see existing positions.
- 3Create a position
Click New and name it (for example Inter-State / IGST or SEZ / Zero-rated).
- 4Add tax and account mappings
In the Tax Mapping and Account Mapping tabs, set which default tax/account maps to which replacement.
- 5Set auto-detection (optional)
Enable Detect Automatically and set the country/state so Odoo applies the position based on the customer's location.
- 6Apply on the contact
Open the customer or vendor, go to the Sales & Purchase tab, and select the Fiscal Position under Fiscal Information.
Odoo Fiscal Positions: A Practical Example
| Particulars | Amount (INR) | Treatment |
|---|---|---|
| Sale within Tamil Nadu | 1,00,000 | Default: CGST 9% + SGST 9% = ₹18,000 |
| Same sale to Karnataka buyer | 1,00,000 | Fiscal position remaps to IGST 18% = ₹18,000 |
| Sale to SEZ unit | 1,00,000 | Fiscal position remaps to zero-rated (₹0 GST) |
| Tax posted | varies | Correct GST account by rule, not by memory |
A Coimbatore textile manufacturer sells the same ₹1,00,000 order three ways. Within Tamil Nadu, Odoo applies CGST+SGST of ₹18,000; to a Karnataka buyer, the inter-state fiscal position remaps it to ₹18,000 IGST; to an SEZ unit, the zero-rated position drops GST to nil. The user picks the customer and Odoo applies the right treatment automatically — no manual tax selection, and each posts to the correct GST account.
No position on a contact: An out-of-state customer left without a fiscal position keeps the default intra-state tax → assign the correct position or enable auto-detection.
Common Mistakes With Odoo Fiscal Positions
Fiscal positions misfire when the mappings or triggers are wrong:
- No position on a contact — An out-of-state customer left without a fiscal position keeps the default intra-state tax → assign the correct position or enable auto-detection.
- Incomplete tax mapping — Mapping only some taxes leaves others un-remapped → cover every default tax the position should change.
- Wrong auto-detect geography — A mis-set country/state applies the wrong position automatically → verify the detection rules against real customer locations.
- Forgetting zero-rated accounts — SEZ/export sales without a zero-rated mapping overstate GST → set up the zero-rated position explicitly.
Odoo Fiscal Positions are rules that automatically remap the default taxes and accounts on a transaction based on a customer or vendor's situation — such as inter-state, SEZ or export. They are configured in Odoo Accounting and attached to a contact. They matter because they apply the correct GST treatment (IGST versus CGST/SGST, or zero-rated) automatically, instead of relying on the user to pick the right tax each time.
Need help with Odoo Fiscal Positions?
Odoo Fiscal Positions sits inside your day-to-day books. Patron's CA-led team keeps them accurate, compliant and audit-ready.
Applicable framework: GST place-of-supply and zero-rating under CGST/IGST Acts 2017; product guidance – Odoo Accounting. For general information only, not professional advice. Verify the current position for your entity before acting.
