What Are Fiscal Positions?
Fiscal positions in Odoo 19 automatically replace default taxes and accounts with alternatives based on the customer's or vendor's location, VAT status, or business type. They handle scenarios like intra-EU B2B (reverse charge), exports (zero-rated), or domestic tax-exempt sales. The account.fiscal.position model manages these mappings.
Prerequisites
- Odoo 19 with Accounting module installed
- Taxes configured for your jurisdiction
- Accounting Manager access
Step 1: Enable Fiscal Positions
Navigate to Accounting > Configuration > Settings. Under the Taxes section, enable Fiscal Positions. Click Save.
Step 2: Access Fiscal Position Configuration
Go to Accounting > Configuration > Fiscal Positions. Odoo may have created default positions based on your localization (chart of accounts package).
Step 3: Create a Fiscal Position
Click New and configure:
- Fiscal Position — Name (e.g., "EU B2B - Reverse Charge", "Export - Zero Rate", "Domestic Tax Exempt")
- Company — For multi-company environments
Step 4: Configure Tax Mappings
In the Tax Mapping tab, define how taxes are replaced:
| Tax on Product | Tax to Apply |
|---|---|
| VAT 20% | 0% (Intra-EU) |
| VAT 20% | (empty - tax removed) |
| VAT 10% Reduced | 0% (Intra-EU Reduced) |
When this fiscal position is applied to an invoice, Odoo replaces the product's default tax with the mapped tax. If the "Tax to Apply" column is empty, the tax is removed entirely.
Step 5: Configure Account Mappings
In the Account Mapping tab, define how accounts are replaced:
| Account on Product | Account to Use Instead |
|---|---|
| Domestic Revenue (4000) | Export Revenue (4100) |
| Domestic COGS (5000) | Export COGS (5100) |
This ensures revenue and expense entries land in the correct accounts for different business scenarios.
Step 6: Set Up Automatic Detection
Fiscal positions can be applied automatically based on the partner's location. Enable auto-detection by configuring:
- Detect Automatically — Check this box on the fiscal position
- VAT Required — Only apply if the partner has a VAT number (useful for B2B reverse charge scenarios)
- Country Group — Apply for partners in a specific country group (e.g., European Union)
- Country — Apply for partners in a specific country
- State — Apply for partners in a specific state/province
Odoo evaluates fiscal positions in sequence. The first matching position is applied. More specific rules (state-level) should have lower sequences than broader rules (country group).
Step 7: Assign Fiscal Positions to Partners
For partners that always require a specific fiscal position, open their record and go to the Sales & Purchases tab. Set the Fiscal Position field. This overrides automatic detection.
Step 8: Test Your Configuration
- Create an invoice for a domestic customer — verify default taxes apply
- Create an invoice for an EU B2B customer with VAT — verify reverse charge mapping
- Create an invoice for a non-EU export customer — verify zero-rate or tax removal
- Check that revenue accounts map correctly for each scenario
Common Fiscal Position Scenarios
| Scenario | Tax Mapping | Auto-Detect |
|---|---|---|
| Domestic B2C | No mapping (default taxes apply) | N/A |
| EU B2B (Reverse Charge) | 20% VAT mapped to 0% Intra-EU | EU country group + VAT required |
| Export (Non-EU) | 20% VAT mapped to 0% Export | Non-EU countries |
| Tax Exempt | All taxes removed (empty mapping) | Manual assignment |
Best Practices
- Map all tax rates — if a product has both standard and reduced rates, create mappings for each
- Test with each customer type before processing real transactions
- Use auto-detection for scalability — manual assignment does not scale with a growing customer base
- Consult your accountant for country-specific tax rules before configuring mappings