Netherlands BTW Statement
This module provides you with the Tax Statement in the Dutch format.
The Tax Statement can be generated in two ways, according to the chosen Dutch accounting system:
Kasstelsel
Factuurstelsel
By default the Tax Statement is generated according to the Factuurstelsel system. It means that, when validating an invoice, the system uses the invoice date instead of accounting date to determine the date of the move line for tax lines. See https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/zakelijk/btw/btw_aangifte_doen_en_betalen/bereken_het_bedrag/hoe_berekent_u_het_btw_bedrag/factuurstelsel
About the Kasstelsel system instead, more information can be found in: https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/zakelijk/btw/btw_aangifte_doen_en_betalen/bereken_het_bedrag/hoe_berekent_u_het_btw_bedrag/kasstelsel/kasstelsel
Table of contents
Configuration
This module makes use of the tax tags (eg.: 1a, 1b, 1c, 1d, 2a…) as prescribed by the Dutch tax laws.
If the default Odoo Dutch chart of accounts is installed (module l10n_nl) then these tags are automatically present in the database.
If a non-standard chart of accounts is installed, you have to manually create the tax tags and properly set them into the tax definition. The name of the tags must be formatted this way: “+1a (omzet)”, “+1a (btw)”, “-1a (omzet)”, “-1a (btw)”, “+2a (omzet)”, “+2a (btw)”, etc…
This module provides an accounting setting Invoice basis (Factuurstelsel) that is enabled by default. This option makes the invoice date leading for the tax declaration of a period, rather than the accounting date, and allows you to change the accounting date of incoming invoices to the period to which the costs apply and still create a legally valid Dutch tax declaration. Without this option, the entries on the tax statement are collected using only their accounting dates (what Odoo calls standard taxes).
This setting is not compatible with the Odoo Cash basis (Kasstelsel) setting which leads to the creation of tax journal lines at the moment that a payment is received, so when using Cash basis you need to disable the Invoice basis setting to create a valid Dutch tax declaration using this module. To disable the Invoice basis for a company, you need to:
Open your Company form and verify that Country is set to Netherlands.
Go to Invoicing -> Configuration -> Settings, enable/disable NL Tax Invoice Basis (Factuurstelsel) and Apply.
Optionally, you can let Odoo make a matching journal entry when posting the VAT statement. When posting an invoice or a vendor bill, the VAT is posted on an account “BTW te vorderen” or “BTW af te dragen”. When submitting the periodic VAT declaration, this declaration should be reflected in administration as a journal entry to counter these entries with an entry reflecting the balance to be paid to or received from the tax authority on a payable account from where it can be included in a payment order or reconciled when the payment comes in from the bank statement.
To allow this, configure a journal and a ledger account for the rounding differences under heading “NL Tax Statement Posting” in the Accounting settings. You can also configure a tax authority partner that will be linked to the payable/receivable line of the entry.
Usage
To create a statement you need to:
Verify that you have enough permits. You need to belong at least to the Billing Manager or the Accountant group.
Go to the menu: Invoicing -> Reporting > NL BTW Statement
Create a statement, providing a name and specifying start date and end date
Press the Update button to calculate the report: the report lines will be displayed in the tab Statement. If the company is configured to post a journal entry for each statement, a draft entry will be created.
Manually enter the BTW amounts of lines ‘5d’, ‘5e’, ‘5f’ (in Edit mode, click on the amount of the line to be able to change it)
Press the Post button to set the status of the statement to Posted; the statements set to this state can still be reset. If the statement contains a journal entry, this entry will be posted.
Press the Finalize button to prevent the statement from being reset.
To add past undeclared invoices/moves:
Open the tab Past Undeclared Moves, available when the statement is in status Draft.
Set an initial date (field From Date) from which the past undeclared moves will be displayed.
One by one, add the displayed undeclared moves, by clicking on the Add Move button present in each line.
Press the Update button in order to recompute the statement lines.
Extra info about the workflow:
If you need to recalculate or modify or delete a statement already set to Posted status you need first to set it back to Draft status: press the button Reset to Draft
Instead, if you send the statement to the Tax Authority, you may want to avoid that the statement is set back to Draft: to avoid this, press the button Final. If you then confirm, it will be not possible to modify this Statement or reset it back to draft anymore.
Printing a PDF report:
If you need to print the report in PDF, open a statement form and click: Print -> NL Tax Statement
Exporting a XLS report:
If you need to export the report in XLSX, open a statement form and click: Print -> NL Tax Statement XLS export
Multicompany fiscal unit:
According the Dutch Tax Authority, for all the companies belonging to a fiscal unit, it’s possible to declare one single tax statement.
To create one tax statement for a fiscal unit, log in into the parent company and select the child companies in the statement (be sure the user belongs to the multicompany group).
The child companies must have the same Tax codes labels (Tax Tags) as the parent company, the same currency as the parent company and must be located in The Netherlands.
Known issues / Roadmap
Exporting in SBR/XBLR format not yet available
Limit invoices to last 5 year based on fiscal year end date (legal requirement)
The unreported from date is calculate as 1 quarter, it should take 1 fiscal year based on fiscal year end date
Posting a matching journal entry for the statement is not supported yet for fiscal units.
Bug Tracker
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.
Do not contact contributors directly about support or help with technical issues.
Credits
Contributors
Andrea Stirpe <a.stirpe@onestein.nl>
Antonio Esposito <a.esposito@onestein.nl>
Maintainers
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
This module is part of the OCA/l10n-netherlands project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Metadata
Release files for odoo-addon-l10n-nl-tax-statement 16.0.1.0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| odoo_addon_l10n_nl_tax_statement-16.0.1.0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / odoo_addon_l10n_nl_tax_statement-16.0.1.0.3.1-py3-none-any.whl
| Download URL | odoo_addon_l10n_nl_tax_statement-16.0.1.0.3.1-py3-none-any.whl |
|---|---|
| Size | 65.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3d9e86420e5475dc06bcad3ac7c6e2a25fa03426bb7c3b6fddc30b6dc2370907
|
|
BLAKE2b-256 checksum How to use checksums |
7399f38e07e263492376c93960f280c8bcacfe47c0899a64b1339ec9a8c00a17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|