Romania - Excise Management (Authorizations, Import, Warehouse)
by NextERP Romania https://www.nexterp.ro$ 3436.80
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Purchase (purchase)
• Invoicing (account) • Discuss (mail) • Inventory (stock) |
| Community Apps Dependencies | Show |
| Lines of code | 3389 |
| Technical Name |
l10n_ro_excise |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Purchase (purchase)
• Invoicing (account) • Discuss (mail) • Inventory (stock) |
| Community Apps Dependencies | Show |
| Lines of code | 3389 |
| Technical Name |
l10n_ro_excise |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
Romania - Excise Management (Authorizations, Import, Warehouse)
Romania - Excise base and management: categories & rates, per-product excise, customs authorizations tracked per lot, excise due on the stock movement that releases goods for consumption, with per-authorization sales reporting.
Overview
End-to-end excise duty management for Romanian operators subject to ANAF excise obligations — registered consignees, certified consignees, importers, and domestic suppliers. The module ties together ANAF-published rate tables, customs authorizations, stock locations with an excise regime, and lot-level traceability so that the 635 = 446 accounting entry is generated automatically at the exact moment goods leave suspension and enter free circulation.
What this module provides
- ANAF Excise Categories (
l10n.ro.anaf.excise.category) — one record per D120 row code (e.g.R0Beer,R6Wine,R12Cigarettes), including the ANAF unit-of-measure string (anaf_uom_name) used in the C2 column of the XML declaration. - Historical rate tables (
l10n.ro.anaf.excise.year.rates) — H1/H2 or quarterly rates per category per year; 2025 and 2026 rates are pre-loaded out of the box. - Product-level excise configuration on
product.template:l10n_ro_excise_category_id,l10n_ro_excise_ratio(UoM conversion to the ANAF UoM),l10n_ro_excise_degrees(Plato / hl pure alcohol multiplier), and a computedl10n_ro_excise_ratethat always reflects the current period's rate. - Excise Authorizations (
l10n.ro.excise.authorization) — track each customs channel (Registered Consignee, Certified Consignee, Importer, Domestic Supplier) with its ANAF code, SEED number, EMCS/e-DA reference, guarantee amount and validity period. Theexcise_due_next_dayflag handles the registered-consignee rule automatically. - Stock Location excise regime (
l10n_ro_excise_regimeonstock.location) — mark a location as Tax Warehouse (suspended) or Free Circulation (duty-paid); the engine fires the excise event on the move that crosses this boundary. - Automatic excise entry generation — when
StockMove._action_donedetects an excise event (import receipt, intra-EU receipt, or release from a suspended to a duty-paid location), it builds the635 = 446draft journal entry viaResCompany._l10n_ro_build_excise_entryand optionally a landed-cost record to fold the excise into inventory valuation. - Lot-level excise stamping —
l10n_ro_excise_authorization_id,l10n_ro_excise_entry_id, andl10n_ro_excise_amountonstock.lotgive full per-lot traceability of which authorization brought the goods in and how much excise was paid. - Authorization propagation — setting
l10n_ro_excise_authorization_idon a Purchase Order propagates it to the receipt and from the receipt onto every received lot automatically. - Excise Sales by Authorization report — pivot/list view (
action_l10n_ro_excise_sale_report) under Accounting → Reporting → Excise Sales by Authorization for per-authorization revenue breakdowns needed for the D120 return.
Built & supported by NextERP Romania
Romanian Odoo specialists, here for the long run — from implementation to localization and day-to-day production support.
What we do
Odoo Solutions
From quick-start rollouts to multi-company deployments and custom modules built for your processes.
Romanian Localization
SAF-T (D406), e-Factura, e-Transport, D300 / D390 / D394, ANAF integration, full chart of accounts and fiscal positions.
Our Services
Implementation, customization, migration, integration, support and consultancy — Romanian-speaking, SLA-backed.
Features
- Automatic 635 = 446 excise entry generated on the stock move that releases goods for consumption — at intra-EU receipt, import, or warehouse release.
- ANAF D120-aligned categories with pre-loaded 2025 and 2026 rate tables, including H1/H2 and quarterly splits.
- Four excise channels modeled as Authorizations: Registered Consignee, Certified Consignee, Importer, and Domestic Supplier — each with SEED, EMCS/e-DA, and guarantee tracking.
- Registered Consignee next-day rule — the excise due date is shifted to the first working day after receipt automatically.
- Per-lot excise traceability — authorization, entry reference, and RON amount stamped directly on each
stock.lot. - Tax Warehouse / Free Circulation location flag — cross-boundary stock moves trigger the excise event with no manual intervention.
- Authorization propagated from PO to receipt to lots — set it once on the purchase order; all downstream documents inherit it.
- Excise Sales by Authorization report — pivot and list view ready for D120 declaration preparation under Accounting → Reporting.
Configuration
Follow these steps after installing l10n_ro_excise.
1. Verify pre-loaded excise categories and rates
- Go to Accounting → Configuration → Excise → Excise Categories.
- Confirm that the ANAF row codes (e.g.
R0,R6,R12) and theiranaf_uom_namevalues are correct for your product mix. - Go to Accounting → Configuration → Excise → Excise Years to review the 2025 and 2026 rate tables. Add a new
l10n.ro.anaf.excise.yearrecord withl10n.ro.anaf.excise.year.rateslines if a future year is needed.
2. Create Excise Authorizations
-
Go to Accounting → Configuration → Excise → Authorizations.
-
Click New and fill in:
Field Description Name Internal label Type Registered Consignee / Certified Consignee / Importer / Domestic Supplier Code Official authorization number from customs SEED Code EMCS SEED registration number EMCS Ref e-DA reference Guarantee Amount RON guarantee deposited with ANAF Date Start / Date Stop Validity period -
Save. The
excise_due_next_dayflag is computed automatically for Registered Consignee type.
3. Configure excise products
- Open a product form (Inventory → Products → Products or Purchase → Products).
- On the product, set:
- Excise Category (
l10n_ro_excise_category_id) — select the ANAF D120 row (e.g.R0 — Beer). - Excise Ratio (
l10n_ro_excise_ratio) — conversion from the product's UoM to the ANAF UoM (e.g.0.01for litres → hectolitres). - Excise Degrees (
l10n_ro_excise_degrees) — Plato degrees for beer or % vol for spirits; leave0for flat-rate categories.
- Excise Category (
- The computed Excise Rate field shows the current period rate from
l10n.ro.anaf.excise.year.rates.
4. Set the Excise Regime on stock locations
- Go to Inventory → Configuration → Locations.
- Open each location that is part of your excise chain and set Excise Regime:
- Tax Warehouse (suspended) — goods stored here are under excise suspension.
- Free Circulation (duty-paid) — goods here have already cleared excise.
- Moves from a suspended location to a duty-paid location will automatically trigger excise entry generation.
5. Verify accounting accounts
Ensure accounts 635 (excise expense bridge) and 446 (excise payable to the state) exist in your chart of accounts and are accessible via ResCompany._l10n_ro_get_excise_accounts. These are resolved automatically for the Romanian localization (l10n_ro_account_enterprise).
How it works
Receiving excise goods under a customs authorization
Intra-EU receipt (Registered or Certified Consignee)
- Create a Purchase Order for the excise goods.
- On the purchase order header, set Excise Authorization (
l10n_ro_excise_authorization_id) to the matching registered- or certified-consignee authorization. - Confirm the order. The authorization is copied to the generated receipt automatically.
- When the goods arrive, validate the receipt. On validation, Odoo:
- classifies the move as an excise event,
- generates a draft 635 = 446 excise journal entry,
- stamps
l10n_ro_excise_amountandl10n_ro_excise_entry_idon each received lot, - stamps the authorization on every lot via
StockPicking._l10n_ro_propagate_excise_authorization.
- For a Registered Consignee authorization (
excise_due_next_day = True), the entry date is set to the first working day after the receipt date. - Post the draft entry in Accounting → Accounting → Journal Entries once reviewed.
Release from a Tax Warehouse to free circulation
- Create an internal transfer from a location with Excise Regime = Tax Warehouse (suspended) to a location with Excise Regime = Free Circulation (duty-paid).
- Validate the transfer. The move is detected as a release event; the excise entry and landed-cost adjustment are generated exactly as for an intra-EU receipt.
Viewing lot-level excise details
- Open Inventory → Products → Lots/Serial Numbers.
- Select a lot of an excise product.
- The lot form shows Excise Authorization, Excise Category, Excise Entry, and Excise Amount — providing a full audit trail per batch.
Excise Sales by Authorization report
- Go to Accounting → Reporting → Excise Sales by Authorization.
- Use the pivot view to group sales lines by authorization and excise category.
- Filter by date range to match the D120 declaration period.

Versions
19.0.1.0.0 (2026-06-24)
- Changelog tracking starts at this release.
Discover the NextERP suite
Other modules from the same publisher, built to work together.
NextERP Romania
Odoo implementation, customization, Romanian localization and long-term support since 2018.
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