[IMP] accounting: new tax return feature

task-4893553

closes odoo/documentation#14982

X-original-commit: 05e627fba6
Signed-off-by: Anne-Françoise Marcq (afma) <afma@odoo.com>
This commit is contained in:
afma-odoo
2025-09-04 12:35:06 +00:00
parent 2ab630aa60
commit c97a8e6bad
10 changed files with 311 additions and 106 deletions

View File

@@ -253,8 +253,8 @@ real-time:
Tax return
----------
In the :ref:`Tax return <tax-returns/report>`, Odoo computes all accounting transactions for the
specific tax period and uses these totals to calculate the tax obligation.
In the :ref:`Tax return <accounting/tax-returns/report>`, Odoo computes all accounting transactions
for the specific tax period and uses these totals to calculate the tax obligation.
.. note::
Depending on the country's localization, an XML version of the tax report can be generated to be
@@ -320,7 +320,7 @@ To grant access to the company's accountant, :ref:`add the accountant as a new u
<../general/users/access_rights>` in the :guilabel:`Accounting` section to enable access to the
company's financial data:
- :guilabel:`Accounting`: Select :guilabel:`Accountant`.
- :guilabel:`Accounting`: Select :guilabel:`Administrator`.
- :guilabel:`Bank`: Allow bank account validation.
.. Note::

View File

@@ -137,9 +137,9 @@ Discount` checkbox enabled, and select one of the three following options:
- €100 + (21% of €100)
.. note::
- :ref:`Tax grids <tax-returns/tax-grids>`, which are used for the tax report, are correctly
computed according to the :ref:`type of tax reduction <cash-discounts/tax-reductions>` you
configured.
- :ref:`Tax grids <accounting/tax-returns/tax-grids>`, which are used for the tax report, are
correctly computed according to the :ref:`type of tax reduction
<cash-discounts/tax-reductions>` you configured.
- The **type of cash discount tax reduction** may be correctly pre-configured, depending on your
:ref:`fiscal localization package <fiscal_localizations/packages>`.

View File

@@ -1,125 +1,319 @@
============================
Tax return (VAT declaration)
============================
=======================
Tax return (VAT report)
=======================
Companies with a registered :abbr:`VAT (Value Added Tax)` number must submit a **tax return** on
a monthly or quarterly basis, depending on their turnover and the registration regulation. A tax
return - or VAT return - gives the tax authorities information about the taxable transactions made
by the company. The **output tax** is charged on the number of goods and services sold by a
business, while the **input tax** is the tax added to the price when goods or services are
purchased. Based on these values, the company can calculate the tax amount they have to pay or be
refunded.
Companies with a registered :abbr:`VAT (Value Added Tax)` number are required to submit a tax return
monthly or quarterly, depending on their turnover and the applicable regulatory requirements. A tax
return - or VAT report - provides the tax authorities with information about the taxable
transactions made by the company. The **output tax** is charged on the sale of goods and services,
while the **input tax** refers to the tax included in the price of purchased goods or services.
Based on these values, the company can calculate the tax amount they must pay or be refunded.
.. note::
You can find additional information about VAT and its mechanism on this page from the European
Commission: `"What is VAT?" <https://ec.europa.eu/taxation_customs/business/vat/what-is-vat_en>`_.
.. seealso::
- `European Commission documentation on VAT
<https://ec.europa.eu/taxation_customs/business/vat/what-is-vat_en>`_.
- :doc:`../taxes`
- :doc:`../get_started`
- :doc:`../../fiscal_localizations`
.. _tax-returns/prerequisites:
.. _accounting/tax-returns/configuration:
Prerequisites
Configuration
=============
.. _tax-returns/periodicity:
.. _accounting/tax-returns/periodicity:
Tax Return Periodicity
Tax return periodicity
----------------------
The configuration of the **Tax Return Periodicity** allows Odoo to compute your tax return correctly
and also to send you a reminder to never miss a tax return deadline.
The configuration of the tax return periodicity allows Odoo to compute tax returns correctly and
automatically send reminders to make sure that deadlines are met.
To do so, go to :menuselection:`Accounting --> Configuration --> Settings`. Under the
:guilabel:`Tax Return Periodicity`, you can set:
- :guilabel:`Periodicity`: define here whether you submit your tax return on a monthly or quarterly
basis;
- :guilabel:`Reminder`: define when Odoo should remind you to submit your tax return;
- :guilabel:`Journal`: select the journal in which to record the tax return.
To do so, go to :menuselection:`Accounting --> Configuration --> Settings`, navigate to the
:guilabel:`Tax Return Periodicity` section, and update the following fields, if needed:
- :guilabel:`Periodicity`: Define whether the tax return is submitted monthly or quarterly.
- :guilabel:`Reminder`: Define when Odoo should send reminders to submit the tax return.
- :guilabel:`Journal`: Update the journal where the tax return is recorded, if needed.
.. note::
This is usually configured during the :doc:`app's initial set up <../get_started>`.
This information is usually configured during the :doc:`app's initial setup <../get_started>`.
.. _tax-returns/tax-grids:
.. _accounting/tax-returns/tax-grids:
Tax Grids
Tax grids
---------
Odoo generates tax reports based on the :guilabel:`Tax Grids` settings that are configured on your
taxes. Therefore, it is crucial to make sure that all recorded transactions use the right taxes.
You can see the :guilabel:`Tax Grids` by opening the :guilabel:`Journal Items` tab of any
invoice and bill.
Odoo generates tax reports based on the :guilabel:`Tax Grids` settings configured for each tax. All
recorded transactions must apply the correct tax rates to ensure accurate reporting.
.. image:: tax_returns/tax_return_grids.png
:alt: see which tax grids are used to record transactions in Odoo Accounting
:guilabel:`Tax Grids` are displayed in the :guilabel:`Journal Items` tab of any invoice or bill.
To configure your tax grids, go to :menuselection:`Accounting --> Configuration --> Taxes`,
and open the tax you want to modify. There, you can edit your tax settings, along with the tax
grids that are used to record invoices or refunds.
.. image:: tax_returns/tax-return-grids.png
:alt: example of tax grids used on an invoice
To configure tax grids for taxes, go to :menuselection:`Accounting --> Configuration --> Taxes`,
open the relevant tax, and edit the tax settings and the tax grids used to record invoices or
refunds.
.. note::
Taxes and reports are usually already pre-configured in Odoo: a :ref:`fiscal localization package
<fiscal_localizations/packages>` is installed according to the country you select at the creation
of your database.
Taxes and reports are usually pre-configured according to the country selected for the
:doc:`company <../../../general/companies>`.
.. _tax-returns/close:
.. _accounting/tax-returns/tax-return-journal:
Tax returns journal
-------------------
On the Accounting dashboard, complete the following actions displayed in the :guilabel:`Tax Returns`
journal before creating tax returns:
- :guilabel:`Set Company Data`: :ref:`Configure the company details <general/companies/company>`.
- :guilabel:`Set Periods`: In the :guilabel:`Accounting Periods` window, fill in the
:guilabel:`Opening date`, :guilabel:`Fiscal Year End`, and update the :guilabel:`Periodicity` if
needed.
- :guilabel:`Review Chart of Accounts`
.. _accounting/tax-returns/close:
Close a tax period
==================
.. _tax-returns/lock-date:
.. _accounting/tax-returns/lock-date:
Tax lock date
-------------
Tax return lock date
--------------------
Any new transaction whose accounting date prior to the :guilabel:`Lock Tax Return` date has its tax
values moved to the next open tax period. This is useful to make sure that no change can be made to
a report once its period is closed.
Setting a tax lock date prevents changes that could impact VAT-related journal entries. Locking the
period before processing the :guilabel:`Closing Journal Entry` helps ensure the accuracy of the
final report and reduces the risk of tax errors.
Therefore, we recommend locking your tax date before working on your
:guilabel:`Closing Journal Entry`.
This way, other users cannot modify or add transactions that would have an impact on the
:guilabel:`Closing Journal Entry`, which can help you avoid some tax declaration errors.
To view or edit the current :guilabel:`Lock Tax Return` date, go to :menuselection:`Accounting -->
Accounting --> Lock Dates`.
To check the current :guilabel:`Lock Tax Return` date, or to edit it, go to
:menuselection:`Accounting --> Accounting --> Lock Dates`.
.. note::
Any new transaction whose accounting date is before the :guilabel:`Lock Tax Return` date has its
tax values moved to the next open tax period, preventing any changes to a report after its period
is closed.
.. _tax-returns/report:
.. _accounting/tax-returns/report:
Tax return
----------
Once all the transactions involving taxes have been posted for the period you want to report, open
the :guilabel:`Tax Return` report by going to :menuselection:`Accounting --> Reporting --> Tax
Return`. Select the period you want to declare using the date filter to have an overview of the tax
return. Then, click :guilabel:`Closing Entry` to create a tax closing journal entry. Odoo
automatically proposes the details of the journal entry. Make any necessary changes and click
:guilabel:`Post`.
On the Accounting Dashboard, the :guilabel:`Tax Returns` journal displays automatic reminders to
avoid missing important tasks and deadlines.
From the report, click :guilabel:`PDF` to download a PDF of the tax return. Alternatively, click the
:icon:`fa-cog` (:guilabel:`gear`) icon, then click :guilabel:`Download Excel` to download an XLSX of
the tax return. To save the report to the Documents app, click the :icon:`fa-cog` (:guilabel:`gear`)
icon, then click :guilabel:`Copy to Documents`. Select the format to :guilabel:`Export to`, the
:guilabel:`Documents Name`, the :guilabel:`Folder` to store it in, and add any :guilabel:`Tags`.
After completing all :ref:`configurations <accounting/tax-returns/configuration>` and posting all
tax-related transactions for the reporting period, click :guilabel:`Tax Returns` on the
:guilabel:`Tax Returns` journal from the Accounting dashboard. Alternatively, go to
:menuselection:`Accounting --> Accounting --> Tax Returns`.
The report includes all the values to report to the tax authorities, along with the amount to be
paid or refunded.
The :guilabel:`Tax Return` view displays a chronological list of all pending :ref:`tax returns (VAT
report) <accounting/tax-returns/vat-report>` and :ref:`advance payments
<accounting/tax-returns/advance-payments>` (based on the :doc:`fiscal localization
<../../fiscal_localizations>`). Each item on the list includes:
- A period (month or quarter).
- A deadline date.
- The related company and :ref:`branch(es) <general/branches>`, if applicable.
- Action steps, such as :ref:`Review <accounting/tax-returns/vat-return-review>`, :ref:`Submit
<accounting/tax-returns/vat-return-submit>`, and :ref:`Pay
<accounting/tax-returns/vat-return-pay>`, which turn green when completed.
- Action buttons: These are displayed as primary (purple) and secondary (grey) buttons to indicate
their priority.
- A :icon:`fa-ellipsis-v` :guilabel:`(vertical ellipsis)` menu for additional options.
.. image:: tax_returns/tax-return-view.png
:alt: Tax return tool overview
.. note::
If you forgot to lock your tax date before clicking on :guilabel:`Closing Journal Entry`, then
Odoo automatically locks your fiscal period on the same date as the accounting date of your
entry. This safety mechanism can prevent some fiscal errors, but it is advised to lock your tax
date manually before, as described above.
- Before the tax return is reviewed, the number of :guilabel:`Pending` or :guilabel:`Passed` tax
validation checks is displayed in red or green, respectively.
- If the :guilabel:`Deadline` date has passed, it appears in red.
.. tip::
- To export all tax returns from the selected period, click the :icon:`fa-cog` (:guilabel:`gear`)
icon, then click :guilabel:`Export all` to download the tax returns XLSX.
- All status changes are logged in the chatter. Click on any tax return or advance payment line
to view the chatter.
.. _accounting/tax-returns/vat-report:
VAT report
~~~~~~~~~~
Each pending tax return (VAT report) follows these steps: :ref:`review
<accounting/tax-returns/vat-return-review>`, :ref:`submit
<accounting/tax-returns/vat-return-submit>`, and :ref:`pay <accounting/tax-returns/vat-return-pay>`.
To access a tax return, click the local VAT report button (e.g., :guilabel:`VAT Return (BE)` or
:guilabel:`Tax Report (US)`, depending on the :doc:`fiscal localization
<../../fiscal_localizations>`) or the :guilabel:`Generic Tax report` button on the tax return line
in the :guilabel:`Tax Return` view.
.. Tip::
- Click :guilabel:`PDF` or :guilabel:`XLSX` to generate a PDF or XLSX file, respectively.
- Click the :icon:`fa-cog` (:guilabel:`gear`) icon and :guilabel:`Copy to Documents` to save the
report to the :doc:`Documents <../../../productivity/documents>` app. Select the format to
:guilabel:`Export to`, the :guilabel:`Documents Name`, the :guilabel:`Folder` to store it in,
and add any :guilabel:`Tags`. Then click :guilabel:`Export`.
To create a new return, click :guilabel:`New`, select the relevant :guilabel:`Return Type`, and
fill in the required :guilabel:`Dates`. Then, click :guilabel:`Generate Return`. The following
returns can be generated:
- :guilabel:`Annual Closing: Corporate Tax`
- :guilabel:`VAT` (return)
- :guilabel:`VAT Listing` (Belgium-specific)
- :guilabel:`EC Sales List` (EU-specific)
- :guilabel:`Advance Payment` (Belgium-specific)
- :guilabel:`Intrastat` (EU-specific)
.. _accounting/tax-returns/vat-return-review:
Review
******
To start the review of a tax return, click :guilabel:`Review` on the relevant tax return line:
- If all automatic tax validation checks have passed, the tax return has completed the
:guilabel:`Review` step, and the tax return can be :ref:`submitted
<accounting/tax-returns/vat-return-submit>`. If needed, click :guilabel:`See Checks` to view all
checks.
- If any automatic tax validation checks are pending, the :guilabel:`Tax Checks` view displays the
following, depending on the :doc:`fiscal localization <../../fiscal_localizations>`:
- :guilabel:`Bank Matching`: This check is used to identify any missing bills; it is optional for
VAT reports.
- :guilabel:`Bill attachments`: Bills must have attached documents as proof in case of an audit.
- :guilabel:`Company data`: Missing information (e.g., VAT number or country) can lead to errors
in tax reports or exemptions.
- :guilabel:`Draft entries`: Any draft invoices and bills within the corresponding period must be
reviewed and posted, or assigned a different accounting date.
- :guilabel:`No negative amount in VAT report`: Some countries only allow positive values in tax
returns, as a negative amount could indicate misconfigurations.
- :guilabel:`Taxes and countries matching`: Taxes applied on invoices and bills must match the
customers country.
Each check card is either marked with a :icon:`fa-check` :guilabel:`(pass)` or :icon:`fa-times`
:guilabel:`(fail)`. Once a check is passed, the line turns green. If a check fails, there are two
options:
- Click on the failed check's card to fix the issue.
- Click :guilabel:`Validate` to pass the check without fixing the issue.
The following actions can be performed on each check card:
- Add a check approver: Hover over the relevant check card and click the :icon:`fa-user-plus`
:guilabel:`(user-plus)` icon to add the approver who confirms the review. The check approver's
name is then displayed on the check card.
- Add notes and a note approver: Click the :icon:`fa-pencil-square-o` :guilabel:`(pencil-square)`
icon to access the check form view, where notes and an approver's name can be added. The notes
approver's name is then displayed on the check card.
- Manage activities: Click the :icon:`fa-clock-o` :guilabel:`(clock)` icon to schedule a new
activity or the :icon:`fa-check` :guilabel:`(check)` icon to view planned activities.
Once all checks have passed, click :guilabel:`Review`.
.. tip::
- To view all the validation checks for a tax return, click the :icon:`fa-ellipsis-v`
:guilabel:`(vertical ellipsis)` icon on the corresponding tax return line in the
:guilabel:`Tax Return` view and select :guilabel:`View Checks`.
- Once a tax report has been reviewed but not yet submitted, additional invoices or bills from
that period can still be posted and included in the closing entry. To do so, click the
:icon:`fa-ellipsis-v` :guilabel:`(vertical ellipsis)` icon on the relevant tax return line in
the :guilabel:`Tax return` view and select :guilabel:`Reset` to review checks before submitting
the tax return.
.. _accounting/tax-returns/vat-return-submit:
Submit
******
Once a tax return has completed the :ref:`Review <accounting/tax-returns/vat-return-review>` step,
proceed as follows:
#. In the :guilabel:`Tax Return` view, click the local VAT report button (e.g., :guilabel:`VAT
Return (BE)` or :guilabel:`Tax Report (US)`, depending on the :doc:`fiscal localization
<../../fiscal_localizations>`) or the :guilabel:`Generic Tax report` button on the relevant tax
return line to preview the tax return report.
#. Once the tax return report has been verified, go back to the :guilabel:`Tax Return` view and
click :guilabel:`Submit`.
#. In the pop-up window, follow the local :guilabel:`Instructions`, and click :guilabel:`Mark as
Submitted` or :ref:`Mark Paid <accounting/tax-returns/vat-return-pay>`.
On submitting the tax return, the :ref:`Lock Tax Return <accounting/tax-returns/lock-date>` date is
automatically updated, and the closing journal entry is posted in the :guilabel:`Tax Returns`
journal.
The submitted tax return contains all the values tax authorities need, and the amount to be paid or
refunded.
.. tip::
- To display all posted closing journal entries, click the :guilabel:`Tax Returns` journal in
the Accounting dashboard.
- To display the tax return entry posted, click the :icon:`fa-ellipsis-v` :guilabel:`(vertical
ellipsis)` icon and select :guilabel:`View Entry`. The following options are available if
needed:
- :guilabel:`Reverse Entry`
- :guilabel:`Reset to Draft`: The :guilabel:`Lock Tax Return` date must be manually removed
using a :ref:`lock date exception <year-end/lock-date-exception>` to reset a tax return entry
to draft.
.. note::
If the :guilabel:`Lock Tax Return` date is not locked before submitting the tax return, the
fiscal period is automatically locked on the same date as the accounting date of the closing
journal entry. While this feature helps prevent certain fiscal errors, it is recommended to set
the :ref:`Lock Tax Return date <accounting/tax-returns/lock-date>` manually beforehand.
.. important::
- Once the tax report for a period has been generated but not yet posted, additional invoices or
bills from that same period can still be posted and included in the closing entry. To do so,
click :icon:`oi-arrow-right` :guilabel:`Refresh` in the :guilabel:`Proposition of tax closing
journal entry`, or click :guilabel:`Closing Entry` again from the tax report.
- After the tax report has been posted for a period, Odoo locks the period and prevents the
creation of new journal entries involving VAT. Any corrections to customer invoices or vendor
bills must then be recorded in the following period.
After the tax report for a period has been posted, that period is locked to prevent new
VAT-related journal entries from being created. Corrections to customer invoices or vendor bills
must be recorded
in the following period.
.. seealso::
* :doc:`../taxes`
* :doc:`../get_started`
* :doc:`../../fiscal_localizations`
.. _accounting/tax-returns/vat-return-pay:
Pay
***
Once a tax return is submitted, a :guilabel:`Payment` window appears if a tax payment is required.
It displays all necessary payment details to complete the transaction, including a QR code
for the banking app, if available for the country's :doc:`fiscal localization
<../../fiscal_localizations>` package. There are two options:
- Click :guilabel:`Mark Paid` after completing the payment: the corresponding tax return line
disappears from the :guilabel:`Tax Return` view.
- Click :guilabel:`Pay Later`: the corresponding tax return line remains visible in the
:guilabel:`Tax Return` view, indicating the amount due. Click the :icon:`fa-paperclip`
:guilabel:`(paperclip)` icon to access the PDF and XLSX files of the submitted tax return.
.. image:: tax_returns/tax-return-submitted.png
:alt: view when tax return is submitted
.. _accounting/tax-returns/advance-payments:
Advance tax payments
~~~~~~~~~~~~~~~~~~~~
.. note::
Advance tax payments are specific to local :doc:`fiscal localizations
<../../fiscal_localizations>` and the requirements of certain countries' tax systems.
In the :guilabel:`Tax Return` view, click :guilabel:`Pay` on the relevant advance tax payment line
that needs to be processed.
In the :guilabel:`Advance Payment` window, follow the local recommendations, fill in the required
local fields, and use the provided payment details to finalize the transaction. Two options are
available:
- Click :guilabel:`Mark Paid` once the payment is processed: The corresponding advance tax payment
line disappears from the :guilabel:`Tax Return` view.
- Click :guilabel:`Pay Later`: The corresponding advance tax payment line remains visible in the
:guilabel:`Tax Return` view.
.. tip::
To mark a tax payment that has already been completed, click the :icon:`fa-ellipsis-v`
:guilabel:`(vertical ellipsis)` icon and select :guilabel:`Mark as Completed`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -107,21 +107,31 @@ To set a :guilabel:`Lock Everything` date, go to :menuselection:`Accounting -->
Dates`. In the :guilabel:`Lock Journal Entries` window, set the :guilabel:`Lock Everything` date and
:guilabel:`Save`.
.. note::
Users with :guilabel:`Administrator` access rights to the Accounting app can create exceptions.
To do so:
After setting the :guilabel:`Lock Everything` date, an :ref:`exception
<year-end/lock-date-exception>` can be made if a modification is necessary.
#. After setting the :guilabel:`Lock Everything` date, reopen the :guilabel:`Lock Journal
Entries` window and remove the :guilabel:`Lock Everything` date.
.. _year-end/lock-date-exception:
Lock date exception
*******************
Users with :ref:`Administrator <accounting/accountant-access-rights>` access rights to the
Accounting app can create exceptions. To do so:
#. After setting and saving a lock date, go to :menuselection:`Accounting --> Accounting --> Lock
Dates`. In the :guilabel:`Lock Journal Entries` window, remove the :guilabel:`Lock Everything`
date.
#. In the :guilabel:`Exception` banner, choose if this exception should be set :guilabel:`for me`
(the current user) or :guilabel:`for everyone` and how long it should last.
(the current user) or :guilabel:`for everyone`, and how long it should last.
#. A :guilabel:`Reason` for this exception can be added.
#. All of this information is logged in the chatter of the :doc:`company record
</applications/general/companies>`.
.. tip::
To remove the :guilabel:`Lock Everything` date after it has been saved, configure the exception
to apply :guilabel:`for everyone` and set the duration to :guilabel:`forever`.
To remove a lock date after it has been saved, configure the exception to apply :guilabel:`for
everyone` and set the duration to :guilabel:`forever`. This does not apply to the
:guilabel:`Hard Lock` date, which is irreversible to ensure inalterability and to meet accounting
requirements in certain countries.
.. _year-end/current-year-earnings:

View File

@@ -140,9 +140,10 @@ position, these are automatically activated in the tax list.
Tax grids
---------
The Italian localization has a specific :ref:`tax grid <tax-returns/tax-grids>` section for
**reverse charge** taxes. These tax grids are identifiable by the :ref:`VJ <italy/grids>` tag, and
can be found by going to :menuselection:`Accounting --> Reporting --> Audit Reports: Tax Report`.
The Italian localization has a specific :ref:`tax grid <accounting/tax-returns/tax-grids>` section
for **reverse charge** taxes. These tax grids are identifiable by the :ref:`VJ <italy/grids>` tag,
and can be found by going to :menuselection:`Accounting --> Reporting --> Audit Reports: Tax
Report`.
.. image:: italy/grids.png
:alt: Reverse charge tax grid from the VJ section of the Tax Declaration

View File

@@ -137,8 +137,8 @@ business's financial activities.
Closing the GST report
**********************
The :ref:`tax return periodicity <tax-returns/periodicity>` must be set up before submitting the
:ref:`tax return <tax-returns/report>` (**GST report**) to the **IRD**.
The :ref:`tax return periodicity <accounting/tax-returns/periodicity>` must be set up before
submitting the :ref:`tax return <accounting/tax-returns/report>` (**GST report**) to the **IRD**.
.. seealso::
:doc:`Year-end closing documentation