Repository
odoo/odoo · module folder
Module version
0.1.0
Category
Accounting/Localizations
Folder size
0.09 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-08-07 05:19:53
Authors
Maintainers
None
Committers
Martin Trigaux, Ravi Gohil, Yannick Tivisse, Xavier-Do, oco-odoo, fw-bot, Brice bib Bartoletti, Habib (ayh), Dylan Kiss (dyki), Antoine Dupuis (andu), HuylenbroeckFlorent
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
None
Description
EU One Stop Shop (OSS) VAT
==========================

From July 1st 2021, EU businesses that are selling goods within the EU above EUR 10 000 to buyers located in another EU Member State need to register and pay VAT in the buyers’ Member State.
Below this new EU-wide threshold you can continue to apply the domestic rules for VAT on your cross-border sales. In order to simplify the application of this EU directive, the One Stop Shop (OSS) registration scheme allows businesses to make a unique tax declaration.

This module makes it possible by helping with the creation of the required EU fiscal positions and taxes in order to automatically apply and record the required taxes.

All you have to do is check that the proposed mapping is suitable for the products and services you sell.

References
++++++++++
Council Directive (EU) 2017/2455 Council Directive (EU) 2019/1995
Council Implementing Regulation (EU) 2019/2026

    

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
eu_service_view l10n_eu_service.wizard.form l10n_eu_service.wizard form New
res_config_settings_view_form res.config.settings.view.form.inherit.l10n.eu.service res.config.settings form Inherits account.res_config_settings_view_form
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • country_id Many2one → res.country
    string='Country' args: 'res.country'
  • rate Float
    string='VAT Rate'
Public methods (0)

No public methods.

New fields (6)
  • account_collected_id Many2one → account.account
    help='Optional account to use for collecting tax amounts when selling services in each EU country selected below. If not set, the current collecting account of your Service VAT will be used.' string='Tax Collection Account' args: 'account.account'
  • company_id Many2one → res.company
    default=_get_default_company_id required=True string='Company' args: 'res.company'
  • done_country_ids Many2many → res.country
    default=_default_done_country_ids string='Already Supported' args: 'res.country', 'l10n_eu_service_country_rel_done'
  • fiscal_position_id Many2one → account.fiscal.position
    default=_default_fiscal_position_id help='Optional fiscal position to use as template for general account mapping. Should usually be your current Intra-EU B2B fiscal position. If not set, no general account mapping will be configured for EU fiscal positions.' string='Fiscal Position' args: 'account.fiscal.position'
  • tax_id Many2one → account.tax
    default=_default_tax_id help='Select your current VAT tax for services. This is the tax that will be mapped to the corresponding VAT tax in each EU country selected below.' required=True string='Service VAT' args: 'account.tax'
  • todo_country_ids Many2many → res.country
    default=_default_todo_country_ids required=True string='EU Customers From' args: 'res.country', 'l10n_eu_service_country_rel_todo'
Public methods (2)
  • generate_eu_service(self)
  • load_views(self, views, options=None)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • l10n_eu_services_eu_country Boolean
    compute='_compute_l10n_eu_services_european_country' args: 'Is European country?'
Public methods (1)
  • refresh_eu_tax_mapping(self)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…