[IMP] bank rec: massive update for 18.3 UI

This PR includes updates for multiple pages:
- Reconciliation
- Reconciliation Models
- Transactions
- Internal Transfers

task-4771607

This commit updates the bank reconciliation page and other related
pages to align with the 18.3 changes.

closes odoo/documentation#14250

X-original-commit: 86048fb99d
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Dallas Dean (dade) <dade@odoo.com>
This commit is contained in:
“Dallas”
2025-06-03 09:10:54 +00:00
parent 9ada4fbcd7
commit ae3a1157bf
17 changed files with 520 additions and 260 deletions

View File

@@ -30,7 +30,7 @@ Connect a bank for automatic synchronization
--------------------------------------------
To connect your bank account to your database, go to :menuselection:`Accounting --> Configuration
--> Add a Bank Account`, select your bank in the list, click on :guilabel:`Connect`, and follow the
--> Add a Bank Account`, select your bank in the list, click :guilabel:`Connect`, and follow the
instructions.
.. seealso::
@@ -45,7 +45,7 @@ If your banking institution is not available in Odoo, or if you don't want to co
account to your database, you can configure your bank account manually.
To manually add a bank account, go to :menuselection:`Accounting --> Configuration --> Add a Bank
Account`, click on :guilabel:`Record transactions manually` (at the bottom right), fill out the bank
Account`, click :guilabel:`Record transactions manually` (at the bottom right), fill out the bank
information, and click :guilabel:`Create`.
.. note::
@@ -59,7 +59,7 @@ Create a cash journal
---------------------
To create a new cash journal, go to :menuselection:`Accounting --> Configuration --> Accounting:
Journals`, click on :guilabel:`Create` and select :guilabel:`Cash` in the :guilabel:`Type` field.
Journals`, click :guilabel:`Create` and select :guilabel:`Cash` in the :guilabel:`Type` field.
For more information on the accounting information fields, read the
:ref:`accounting/bank/configuration` section of this page.
@@ -125,8 +125,8 @@ You can edit the currency used to enter the transactions.
Account number
--------------
If you need to **edit your bank account details**, click on the external link arrow next to your
:guilabel:`Account Number`. On the account page, click on the external link arrow next to your
If you need to **edit your bank account details**, click the external link arrow next to your
:guilabel:`Account Number`. On the account page, click the external link arrow next to your
:guilabel:`Bank` and update your bank information accordingly. These details are used when
registering payments.

View File

@@ -26,7 +26,7 @@ select the :guilabel:`Internal Transfers` :doc:`reconciliation model <reconcilia
button. This reconciliation model button writes the transaction off to the :guilabel:`Internal
Transfer` account.
.. tip::
.. important::
Remember to reconcile the transaction for both the outgoing transaction on the journal that sends
the payment and the incoming transaction on the journal that receives the payment.

View File

@@ -2,18 +2,22 @@
Bank reconciliation
===================
**Bank reconciliation** is the process of matching your :doc:`bank transactions <transactions>` with
your business records, such as :doc:`customer invoices <../customer_invoices>`, :doc:`vendor bills
<../vendor_bills>`, and :doc:`payments <../payments>`. Not only is this compulsory for most
businesses, but it also offers several benefits, such as reduced risk of errors in financial
reports, detection of fraudulent activities, and improved cash flow management.
**Bank reconciliation** is the process of validating :doc:`bank transactions <transactions>`. Many
of these transactions are matched with counterpart items related to business records such as
:doc:`customer invoices <../customer_invoices>`, :doc:`vendor bills <../vendor_bills>`, and
:doc:`payments <../payments>`, while others that may not have a matching counterpart item (such as
bank fees) can be written off :ref:`manually <accounting/reconciliation/set-account>` or with
:ref:`reconciliation models <accounting/reconciliation/model>`. Not only is bank reconciliation
compulsory for most businesses, but it also offers several benefits, such as reduced risk of errors
in financial reports, detection of fraudulent activities, and improved cash flow management.
Thanks to the bank :doc:`reconciliation models <reconciliation_models>`, Odoo pre-selects the
matching entries automatically.
Thanks to the :ref:`default matching rules <accounting/reconciliation/reconcile>` and customizable
bank :doc:`reconciliation models <reconciliation_models>`, Odoo selects the matching items
automatically when possible.
.. seealso::
- `Odoo Tutorials: Bank reconciliation
<https://www.odoo.com/slides/slide/bank-reconciliation-2724>`_
<https://www.odoo.com/slides/slide/bank-reconciliation-6562>`_
- :doc:`bank_synchronization`
- :doc:`transactions`
@@ -22,123 +26,273 @@ matching entries automatically.
Bank reconciliation view
========================
To access a bank journal's **reconciliation view**, go to your :guilabel:`Accounting Dashboard` and
To access a journal's :guilabel:`Bank Matching` view, go to the :guilabel:`Accounting Dashboard` and
either:
- click the journal name (e.g., :guilabel:`Bank`) to display all transactions, including those
previously reconciled or
- click the :guilabel:`Reconcile items` button to display all transactions Odoo pre-selected for
reconciliation. You can remove the :guilabel:`Not Matched` filter from the search bar to include
previously reconciled transactions.
- click the journal name (e.g., :guilabel:`Bank`) or its :guilabel:`Transactions` button to display
all transactions, including those previously reconciled, or
- click the :guilabel:`x to reconcile` button to display only unreconciled transactions. To include
previously reconciled transactions, remove the :guilabel:`Not Matched` filter from the search bar.
.. image:: reconciliation/bank-card.png
:alt: Reaching the bank reconciliation tool from your accounting dashboard
:alt: Reaching the bank reconciliation tool from the accounting dashboard
The bank reconciliation view is structured into three distinct sections: transactions, counterpart
entries, and resulting entry.
The :guilabel:`Bank Matching` view is composed of lines for each transaction of the journal with the
newest displayed first. Each transaction has a date, a label, a partner (if set), :ref:`action
buttons <accounting/reconciliation/action-buttons>`, and the transaction amount. Each line can be
expanded to show additional information and buttons.
.. image:: reconciliation/user-interface.png
:alt: The user interface of the reconciliation view of a bank journal.
:alt: The user interface of the bank matching view of a bank journal.
.. note::
Once a :doc:`transaction <transactions>` is reconciled, the suggested action button(s) is
replaced with the counterpart entry/entries it was matched with or the account(s) it was written
off to.
.. _accounting/reconciliation/transactions:
Transactions
The transactions section on the left shows all bank transactions, with the newest displayed
first. Click a transaction to select it.
------------
Counterpart entries
The counterpart entries section on the bottom right displays the options to match the selected
bank transaction. Multiple tabs are available, including
:ref:`reconciliation/existing-entries`, :ref:`reconciliation/batch-payments`,
:ref:`reconciliation/manual-operations`, and :guilabel:`Discuss`, which contains the chatter for
the selected bank transaction.
Every :doc:`transaction <transactions>` is linked to a journal entry that debits/credits the
journal's main account and its :ref:`suspense account <accounting/bank/suspense>` until it is fully
reconciled. At that point, the suspense account is replaced with the account of the counterpart item
or, in the case of :ref:`manual matching <accounting/reconciliation/set-account>`, the selected
account.
Resulting entry
The resulting entry section on the top right displays the selected bank transaction matched with
the counterpart entries and includes any remaining debits or credits. In this section, you can
validate the reconciliation or mark it as :guilabel:`To Check`. Any :ref:`reconciliation model
buttons <reconciliation/button>` are also available in the resulting entry section.
.. _accounting/reconciliation/action-buttons:
Possible action buttons
~~~~~~~~~~~~~~~~~~~~~~~
Up to two suggested action buttons are available as primary buttons, but all available action
buttons are displayed when the transaction is expanded. The following action buttons are available
depending on the details of the transaction:
- :guilabel:`Set Partner`: Open a search view to add a partner to the transaction.
- :guilabel:`Set Account`: Open a search view to manually select an account to write off the full
amount of the transaction with this account. If necessary, :ref:`edit the line
<accounting/reconciliation/edit>` to change the amount.
- :guilabel:`Receivable`: Write off the transaction to the receivable account of the partner.
- :guilabel:`Sales`: Open a list view of sales orders belonging to the transaction's
:guilabel:`Partner` (or proceed directly to the form view if only one relevant sales order
exists). Select the relevant sales order(s) and click :guilabel:`Create Invoices`, then return to
the :guilabel:`Bank Matching` view and match the invoice(s) using the :guilabel:`Reconcile` action
button.
- :guilabel:`Payable`: Write off the transaction to the payable account of the partner.
- :guilabel:`Reconcile`: Open a search view of existing items from records such as customer
invoices, vendor bills, and payments. Select one or multiple items to add counterpart items with
the corresponding accounts of those items.
- :guilabel:`Batches`: Open a short list of :doc:`batch payments <../payments/batch>`. To view all
batch payments, click :guilabel:`Search More ...`. Select a batch payment to add a counterpart
item for each payment of the batch with the corresponding account of each payment.
- :doc:`reconciliation_models`: Each manual reconciliation model that could apply to the transaction
is displayed. Click the reconciliation model's action button to generate the counterpart items
defined on the reconciliation model.
.. note::
To remove the partner from a transaction, click the :icon:`fa-times` :guilabel:`(close)` icon
next to the partner's name.
Click the :icon:`fa-chevron-down` :guilabel:`(chevron down)` button next to the possible action
buttons of an expanded line to display any of the above action buttons that are hidden due to space
limitations, as well as the following:
- :guilabel:`Upload bills`: Upload one or more bills to be :doc:`digitized
<../vendor_bills/invoice_digitization>`. After digitization, the bills are available for matching
via the :guilabel:`Reconcile` action button.
- :guilabel:`Manage Models`: Open the list view of :doc:`reconciliation_models`.
- :guilabel:`Open Journal Entry`: Open the journal entry of this transaction.
- :guilabel:`Delete Transaction`: Delete this transaction.
.. note::
Uploading bills from the :guilabel:`Bank Matching` view does not automatically reconcile them
with the active transaction.
.. seealso::
:doc:`../../../essentials/in_app_purchase`
.. _accounting/reconciliation/reconcile:
Reconcile transactions
======================
Transactions can be matched automatically with the use of :doc:`reconciliation models
<reconciliation_models>`, or they can be matched with :ref:`existing entries
<reconciliation/existing-entries>`, :ref:`batch payments <reconciliation/batch-payments>`,
:ref:`manual operations <reconciliation/manual-operations>`, and :ref:`reconciliation model buttons
<reconciliation/button>`.
When possible, Odoo automatically reconciles transactions based on their fields.
#. Select a transaction among unmatched bank transactions.
If no partner is set on the transaction, the transaction's :guilabel:`Label` is compared with the
:guilabel:`Number`, :guilabel:`Customer Reference`, :guilabel:`Bill Reference`, and
:guilabel:`Payment Reference` of existing invoices, bills, and payments.
If a partner is set on the transaction, the transaction is instead matched with invoices, bills, and
payments of the partner based on the :guilabel:`Amount`. The following rules are used in a
sequential order to identify and apply a match:
- Exact match
- Discounted match: for payment terms with discounts for early payments
- Tolerance match: within 3% to account for merchant fees, rounding differences, and user errors
- Currency match: when the transaction is in a different currency than the invoice, bill, or
payment (with a 3% tolerance for exchange rate differences)
- Amount in label: if the invoice :guilabel:`Amount` is found in the transaction's
:guilabel:`Label`
In addition to using these fixed matching rules, transactions can be matched automatically with the
use of :doc:`reconciliation models <reconciliation_models>`. Otherwise, reconcile transactions
manually by following these steps:
#. Expand the desired line among unmatched bank transactions to display all available action
buttons.
#. Define the counterpart. There are several options for defining a counterpart, including
:ref:`matching existing entries <reconciliation/existing-entries>`, :ref:`manual operations
<reconciliation/manual-operations>`, :ref:`batch payments <reconciliation/batch-payments>`, and
:ref:`reconciliation model buttons <reconciliation/button>`.
#. If the resulting entry is not fully balanced, balance it by adding another existing counterpart
entry or writing it off with a :ref:`manual operation <reconciliation/manual-operations>`.
#. Click the :guilabel:`Validate` button to confirm the reconciliation and move to the next
transaction.
:ref:`matching existing items <accounting/reconciliation/existing-items>`, :ref:`manually setting
the account <accounting/reconciliation/set-account>`, matching with :doc:`batch payments
<../payments/batch>`, and using :ref:`reconciliation model buttons
<accounting/reconciliation/model>`.
#. If the resulting entry is not fully balanced, add another existing counterpart item or write it
off by :ref:`setting the account <accounting/reconciliation/set-account>` of the remaining
amount.
.. tip::
If you are not sure how to reconcile a particular transaction and would like to deal with it
later, use the :guilabel:`To Check` button instead. All transactions marked as :guilabel:`To
Check` can be displayed using the :guilabel:`To Check` filter.
.. _accounting/reconciliation/existing-items:
.. note::
Bank transactions are posted on the **journal's suspense account** until reconciliation. At this
point, reconciliation modifies the transaction journal entry by replacing the bank suspense
account with the corresponding receivable, payable, or outstanding account.
.. _reconciliation/existing-entries:
Match existing entries
----------------------
This tab contains matching entries Odoo automatically pre-selects according to the reconciliation
models. The entry order is based on :doc:`reconciliation models <reconciliation_models>`, with
suggested entries appearing first.
.. tip::
The search bar within the :guilabel:`Match Existing Entries` tab allows you to search for
specific journal items.
.. _reconciliation/batch-payments:
Batch payments
Existing items
--------------
:doc:`Batch payments <../payments/batch>` allow you to group different payments to ease
reconciliation. Use the :guilabel:`Batch Payments` tab to find batch payments for customers and
vendors. Similarly to the :guilabel:`Match Existing Entries` tab, the :guilabel:`Batch Payments` tab
has a search bar that allows you to search for specific batch payments.
.. _reconciliation/manual-operations:
Manual operations
-----------------
If there is not an existing entry to match the selected transaction, you may instead wish to
reconcile the transaction manually by choosing the correct account and amount. Then, complete any
of the relevant optional fields.
.. tip::
You can use the :guilabel:`fully paid` option to reconcile a payment, even in cases where only a
partial payment is received. A new line appears in the resulting entry section to reflect the
open balance registered on the Account Receivable by default. You can choose another
account by clicking on the new line in the resulting entry section and selecting the
:guilabel:`Account` to record the open balance.
To reconcile transactions with existing items related to records such as customer invoices, vendor
bills, and payments, click the :guilabel:`Reconcile` action button, select the matching journal
item(s) in the list, and click :guilabel:`Select`.
.. note::
Lines are silently reconciled unless a write-off entry is required, which launches a
reconciliation wizard.
If the :guilabel:`Partner` is set, this list is automatically filtered to only include items
related to that partner.
.. image:: reconciliation/fully-paid.png
:alt: Click on fully paid to manually set an invoice as entirely paid.
.. tip::
Use the search bar within the :guilabel:`Search: Journal Items to Match` window to search for
specific journal items.
.. _reconciliation/button:
If a transaction amount is lower than the invoice or bill it is reconciled with, the transaction is
fully reconciled, but the difference remains open on the counterpart item. The remaining amount can
be left open to be reconciled later or the invoice or bill can be marked as fully paid. To mark the
invoice or bill as fully paid, :ref:`edit <accounting/reconciliation/edit>` the line, click
:guilabel:`fully paid`, and :guilabel:`Save`. To reverse this, :ref:`edit
<accounting/reconciliation/edit>` the line again, click :guilabel:`partial payment`, and
:guilabel:`Save`.
Reconciliation model buttons
----------------------------
If a transaction amount is greater than the invoice or bill it is reconciled with, the transaction
is only partially reconciled. The remaining balance can be reconciled as any other transaction
amount.
Use a :doc:`reconciliation model <reconciliation_models>` button for manual operations that are
frequently used. These custom buttons allow you to quickly reconcile bank transactions manually and
can also be used in combination with existing entries.
.. note::
Existing items of draft entries can be matched. Eventual automatic moves (like currency exchange
or cash basis moves) are created in draft simultaneously with the reconciliation. Posting the
original entry also posts the automatic move.
.. _accounting/reconciliation/set-account:
Set account
-----------
If no existing item matches the selected transaction, you can still write off the transaction
manually: Click :guilabel:`Set Account`, then choose the appropriate account. To write off only part
of the transaction, :ref:`edit the line <accounting/reconciliation/edit>` to reflect the correct
value and reconcile the remaining amount as desired.
.. tip::
If the partner is set, write the amount off to their receivable or payable account directly by
clicking the :guilabel:`Receivable` or :guilabel:`Payable` :ref:`action button
<accounting/reconciliation/action-buttons>`.
.. _accounting/reconciliation/model:
Reconciliation models
---------------------
Use :doc:`reconciliation models <reconciliation_models>` to create custom rules that can be applied
automatically or manually via custom buttons for operations that are frequently repeated. These
custom buttons allow you to quickly reconcile bank transactions manually and can also be combined
with other reconciliation models and with counterpart items when reconciling transactions.
.. example::
An outgoing bank transaction for $103 is partially matched with a vendor bill for $100, leaving
$3 of the transaction still unreconciled. Use the :guilabel:`Bank Fees` reconciliation model to
create a new counterpart item for $3 and reconcile it with the remaining $3 of the bank
transaction.
.. _accounting/reconciliation/edit:
Edit lines and unreconcile transactions
=======================================
To edit a counterpart item, expand the line, click the :icon:`fa-pencil` :guilabel:`(pencil)` icon,
and edit the necessary fields in :guilabel:`Edit Line` window.
.. note::
When the counterpart item is an existing journal item, some fields are read-only.
If a transaction is partially matched with a counterpart item, use the link to mark the invoice as
:guilabel:`fully paid` or to switch back to a :guilabel:`partial payment`.
To unreconcile a transaction, delete all counterpart items associated with the transaction by
clicking on the :icon:`fa-trash` :guilabel:`(trash)` icon.
.. _accounting/reconciliation/netting:
Netting
=======
Netting (also known as AP/AR offsetting) is the process of balancing incoming debts from and
outgoing debts to the same partner. Reconciling the incoming and outgoing debts creates a new
journal entry that balances the debts. Two main scenarios exist:
- :ref:`A bank transaction balances <accounting/reconciliation/net-transaction>` (either fully or
partially) the incoming and outgoing debts.
- :ref:`No bank transaction balances <accounting/reconciliation/net-no-transaction>` the incoming
and outgoing debts. This situation can occur either when the debts balance each other completely
or when the debts remain unbalanced.
.. _accounting/reconciliation/net-transaction:
Netting with bank transactions
------------------------------
When a bank transaction balances (either fully or partially) the incoming and outgoing debts,
reconcile the bank transaction from the :guilabel:`Bank Matching` view like any other :ref:`existing
items <accounting/reconciliation/existing-items>`:
#. Click :guilabel:`Reconcile` on the transaction.
#. Select all the relevant counterpart items on both the payable and receivable side.
#. Click :guilabel:`Select`.
#. If a balance remains, depending on the details, the following situations are possible:
- An invoice, bill, or other item is not fully reconciled, and the remaining balance can be
:ref:`reconciled <accounting/reconciliation/reconcile>` with other bank transactions.
- The bank transaction itself is not fully reconciled, and the remaining balance can be
:ref:`reconciled <accounting/reconciliation/reconcile>` as in any other situation.
.. _accounting/reconciliation/net-no-transaction:
Netting without bank transactions
---------------------------------
When no bank transaction balances the incoming and outgoing debts, there is nothing to reconcile
from the :guilabel:`Bank Matching` view. However, the debt amount is visible in both the account
receivable and the account payable. To balance these debts so that they no longer appear on the
partner ledger, follow these steps:
#. Go to :menuselection:`Accounting --> Accounting --> Reconcile`.
#. Select the journal items that debit or credit the account receivable and account payable and
represent the debts to be netted.
#. Click :guilabel:`Reconcile`.
#. If the debts don't balance each other perfectly, a :guilabel:`Write-Off Entry` popup window
appears, allowing you to decide how to resolve the remaining balance:
- Select :guilabel:`Allow partials` to only partially reconcile the account receivable and
account payable and leave the remaining balance open.
- Use a :doc:`reconciliation model button <reconciliation_models>` to write off the balance.
- Manually choose an :guilabel:`Account`, and optionally adjust the :guilabel:`Tax`,
:guilabel:`Journal`, :guilabel:`Label`, :guilabel:`Date`, and :guilabel:`To Check` fields.
The items are then matched, and their balance is removed from the partner ledger, representing that
no payment is due for these debts.
.. note::
The workflow is the same whether there are only two equal debts in the receivable and payable
accounts or multiple debts in each account.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -2,111 +2,158 @@
Reconciliation models
=====================
Reconciliation models are used to automate the :doc:`bank reconciliation <reconciliation>` process,
which is especially handy when dealing with recurring entries like bank fees. Reconciliation models
can also be helpful in handling :doc:`cash discounts <../customer_invoices/cash_discounts>`.
Each model is created based on a :ref:`model type <models/type>` and :guilabel:`bank transaction
conditions`.
Reconciliation models are custom rules that complement the :ref:`default set of matching rules
<accounting/reconciliation/reconcile>` and enable more advanced automation of the :doc:`bank
reconciliation <reconciliation>` process. These models are especially useful when dealing with
recurring flows like writing off bank fees or :doc:`cash discounts
<../customer_invoices/cash_discounts>`.
.. seealso::
- :doc:`bank_synchronization`
- `Odoo Tutorials: Reconciliation models <https://www.odoo.com/slides/slide/reconciliation-models-6858>`_
`Odoo Tutorials: Reconciliation models <https://www.odoo.com/slides/slide/reconciliation-models-6858>`_
.. _models/type:
.. _accounting/rec-models/config:
Reconciliation model types
==========================
Configuration
=============
To access reconciliation models, go to the :guilabel:`Accounting Dashboard`, click on the
:icon:`fa-ellipsis-v` :guilabel:`(vertical ellipsis)` menu on the bank journal and select
:guilabel:`Models` under the :guilabel:`Reconciliation` section. For each reconciliation model, a
:guilabel:`Type` must be set. Three types of models exist:
To access reconciliation models, go to the :guilabel:`Accounting Dashboard`, click the
:icon:`fa-ellipsis-v` :guilabel:`(dropdown menu)` menu on the bank journal, and select
:guilabel:`Models` under the :guilabel:`Reconciliation` section.
- :guilabel:`Button to generate counterpart entry`: a button is created in the resulting entry
section of the bank reconciliation view. If clicked, this button generates a counterpart entry to
reconcile with the active transaction based on the rules set in the model. The rules specified in
the model determine the counterpart entry's account(s), amount(s), label(s), and analytic
distribution;
- :guilabel:`Rule to suggest counterpart entry`: used for recurring transactions to match the
transaction to a new entry based on conditions that must match the information on the transaction;
- :guilabel:`Rule to match invoices/bills`: used for recurring transactions to match the transaction
to existing invoices, bills, or payments based on conditions that must match the information on
the transaction.
To create a new reconciliation model, click :guilabel:`New`.
Default reconciliation models
=============================
Reconciliation models can be either :guilabel:`Manual` or :guilabel:`Automated`. Manual
reconciliation models appear as :ref:`possible action buttons
<accounting/reconciliation/action-buttons>` when :doc:`reconciling <reconciliation>`. Automatic
reconciliation models apply automatically to transactions that meet the reconciliation model's
:ref:`matching conditions <accounting/rec-models/conditions>`.
In Odoo, different models are available by default depending on the company's fiscal localization.
These can be updated if needed. Users can also create their own reconciliation models by clicking
:guilabel:`New`.
Each reconciliation model is configured with :ref:`matching conditions
<accounting/rec-models/conditions>` to identify the relevant bank transactions and :ref:`Counterpart
Items <accounting/rec-models/counterpart>` to be generated during reconciliation.
.. tip::
To create an activity on the transaction, select which type of activity to create in the
:guilabel:`Next Activity` field.
.. important::
If a record matches with several reconciliation models, the first one in the *sequence* of models
is applied. You can rearrange the order by dragging and dropping the handle next to the name.
is applied. Rearrange the order by dragging and dropping the handle next to the name.
.. image:: reconciliation_models/list-view.png
:alt: Rearrange the sequence of models in the list view.
Invoices/Bills perfect match
----------------------------
.. _accounting/rec-models/conditions:
This model should be at the top of the *sequence* of models, as it enables Odoo to suggest matching
existing invoices or bills with a bank transaction based on set conditions.
Matching conditions
-------------------
.. image:: reconciliation_models/invoices-bills-perfect-match.png
:alt: Set rules to trigger the reconciliation.
A reconciliation model's matching conditions determine to which transactions it applies.
Odoo automatically reconciles the payment when the :guilabel:`Auto-validate` option is selected, and
the model conditions are perfectly met. In this case, it expects to find on the bank statement's
line the invoice/payment's reference (as :guilabel:`Label` is selected) and the partner's name
(as :guilabel:`Partner is set` is selected) to suggest the correct counterpart entry and reconcile
the payment automatically.
The following fields can be used to restrict the reconciliation model's availability to transactions
that meet the conditions:
Invoices/Bills partial match if underpaid
-----------------------------------------
- :guilabel:`Journals`
- :guilabel:`Partners`
- :guilabel:`Amount`: Select :guilabel:`Is lower than or equal to`, :guilabel:`Is greater than or
equal to`, or :guilabel:`Is between` and enter the amount(s).
- :guilabel:`Label`: Select :guilabel:`Contains`, :guilabel:`Not Contains`, or :guilabel:`Match
Regex` and enter the transaction label's matching condition.
This model suggests a customer invoice or vendor bill that partially matches the payment when the
amount received is slightly lower than the invoice amount, for example in the case of
**cash discounts**. The difference is reconciled with the account indicated in the
:guilabel:`counterpart entries` tab.
.. tip::
`Regular expressions <https://regexone.com/>`_, often abbreviated as **regex**, can be used in
Odoo in various ways to search, validate, and manipulate data. Regex can be powerful but also
complex, so it's essential to use it judiciously.
The reconciliation model :guilabel:`Type` is :guilabel:`Rule to match invoices/bills`, and the
:guilabel:`Payment tolerance` should be set.
.. image:: reconciliation_models/partial-match.png
:alt: Set rules to trigger the reconciliation.
To use regular expressions in a reconciliation model, set the :guilabel:`Label` to
:guilabel:`Match Regex` and add an expression. Odoo automatically retrieves the transactions
that match the regex expression and the conditions specified in the reconciliation model.
.. note::
The :guilabel:`Payment tolerance` is only applicable to lower payments. It is disregarded when an
overpayment is received.
A transaction must meet all conditions for the reconciliation model to be available for it. If no
condition is defined (i.e., if all fields are left blank), the reconciliation model will be
available for all transactions.
.. _accounting/rec-models/counterpart:
Counterpart items
-----------------
Each line in the :guilabel:`Counterpart items` tab creates a journal item with the specified
details:
- :guilabel:`Partner`: Select the partner, if any, to set on the journal item.
- :guilabel:`Account`: Select the account, if any, to set on the journal item.
- :guilabel:`Amount Type`: Select how the amount of the journal item should be calculated:
- :guilabel:`Fixed`: Use a fixed amount.
- :guilabel:`Percentage of balance`: Use a percentage of the remaining balance of the
transaction, regardless of the transaction total.
- :guilabel:`Percentage of statement line`: Use a percentage of the transaction total, regardless
of the remaining balance of the transaction.
- :guilabel:`From label`: Use a percentage from the transaction's label using regex.
- :guilabel:`Amount`: Enter the amount to be used on the journal item. This field will be either a
fixed amount, percentage amount, or regex depending on the :guilabel:`Account Type`.
- :guilabel:`Taxes`: Select a tax, if any, to set on the journal item. This field is hidden behind
the :icon:`oi-settings-adjust` :guilabel:`(settings adjust)` icon by default.
- :guilabel:`Analytic`: Select an analytic distribution, if any, to set on the journal item.
- :guilabel:`Label`: Enter a label, if any, to set on the journal item.
.. note::
- While neither the :guilabel:`Partner` nor :guilabel:`Account` fields are mandatory, at least
one of the two must be set for the reconciliation model to work correctly.
- The reconciliation model can be used for :ref:`partner mapping <accounting/rec-models/partner>`
if the :guilabel:`Counterpart Items` include a :guilabel:`Partner` but no :guilabel:`Account`.
.. _accounting/rec-models/defaults:
Default reconciliation models
=============================
In Odoo, different models are available by default depending on the company's :doc:`fiscal
localization <../../fiscal_localizations>`. These can be updated if needed. The following
reconciliation models exist across most fiscal localizations.
Internal Transfers
------------------
The :guilabel:`Internal Transfers` reconciliation model is used for making :doc:`internal transfers
<internal_transfers>` from one bank or cash account to another by moving the entire transaction's
balance to a liquidity or internal transfer account. To fully transfer the amount from one account
to another, this reconciliation model must be used on both the incoming journal's transaction and
the outgoing journal's transaction.
.. seealso::
:doc:`internal_transfers`
Bank Fees
---------
The :guilabel:`Bank Fees` reconciliation model generates a counterpart item that moves the remaining
balance of a transaction to a bank fees account (that varies by :doc:`fiscal localization
<../../fiscal_localizations>`) and includes "Bank Fees" in the :guilabel:`Label` of the new item
that it creates. This reconciliation model is only applicable to transactions whose label contains
"Bank Fees" due to its :ref:`matching conditions <accounting/rec-models/conditions>`.
.. example::
An outgoing bank transaction for $103 is partially matched with a vendor bill for $100, leaving
$3 of the transaction still unreconciled. Use the :guilabel:`Bank Fees` reconciliation model to
create a new counterpart item for $3 and reconcile it with the remaining $3 of the bank
transaction.
Cash Discount
-------------
The :guilabel:`Cash Discount` reconciliation model generates a counterpart item that moves the
remaining balance of a transaction to a cash discount account (that varies by :doc:`fiscal
localization <../../fiscal_localizations>`) and includes "Cash Discount" in the :guilabel:`Label` of
the new item that it creates.
.. seealso::
:doc:`../customer_invoices/cash_discounts`
Line with bank fees
-------------------
This model suggests a counterpart entry according to the rules set in the model. In this case, the
reconciliation model :guilabel:`Type` is :guilabel:`Rule to suggest counterpart entry`, and the
:guilabel:`Label` can be used for example, to identify the information referring to the
:guilabel:`Bank fees` in the label of the transaction.
.. image:: reconciliation_models/bank-fees.png
:alt: Set rules to trigger the reconciliation.
.. note::
`Regular expressions <https://regexone.com/>`_, often abbreviated as **Regex**, can be used in
Odoo in various ways to search, validate, and manipulate data within the system. Regex can be
powerful but also complex, so it's essential to use it judiciously and with a good understanding
of the patterns you're working with.
To use regular expressions in your reconciliation models, set the :guilabel:`Transaction Type`
to :guilabel:`Match Regex` and add your expression. Odoo automatically retrieves the
transactions that match your Regex expression and the conditions specified in your model.
.. image:: reconciliation_models/regex.png
:alt: Using Regex in Odoo
.. _accounting/rec-models/partner:
Partner mapping
===============
@@ -117,8 +164,8 @@ reconciliation. For example, you can create a partner mapping rule for incoming
specific reference numbers or keywords in the transaction description. When an incoming payment
meets these criteria, Odoo automatically maps it to the corresponding customer's account.
To create a partner mapping rule, go to the :guilabel:`Partner Mapping` tab and enter the
:guilabel:`Find Text in Label`, :guilabel:`Find Text in Notes`, and :guilabel:`Partner`.
.. image:: reconciliation_models/partner-mapping.png
:alt: defining partner mapping
To create a partner mapping rule, configure any :ref:`matching conditions
<accounting/rec-models/conditions>`, such as a specific transaction label, and then configure the
:guilabel:`Partner` and any other relevant fields in the :ref:`Counterpart Items
<accounting/rec-models/counterpart>` tab. Setting an :guilabel:`Account` is not mandatory for
partner mapping.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -8,13 +8,76 @@ and reconciling them with the ones recorded in your accounting.
:doc:`Bank synchronization <bank_synchronization>` automates the process. However, if you do not
want to use it or if your bank is not yet supported, other options exist:
- :ref:`Import bank transactions <transactions/import>` delivered by your bank;
- :ref:`Register bank transactions <transactions/register>` manually.
- :ref:`Import bank transactions <accounting/transactions/import>` delivered by your bank;
- :ref:`Register bank transactions <accounting/transactions/register>` manually.
.. note::
:ref:`Grouping transactions by statement <transactions/statements>` is optional.
:ref:`Grouping transactions by statement <accounting/transactions/statements>` is optional.
.. _transactions/import:
.. _accounting/transactions/view:
Transaction view
================
The list of transactions for the bank journal is displayed in the :guilabel:`Bank Matching` view. To
access it, go to the :guilabel:`Accounting Dashboard`, then either:
- click the journal name (e.g., :guilabel:`Bank`) or its :guilabel:`Transactions` button to display
all transactions, including those previously reconciled, or
- click the :guilabel:`x to reconcile` button to display only unreconciled transactions. To include
previously reconciled transactions, remove the :guilabel:`Not Matched` filter from the search bar.
Unreconciled transactions display the following information while collapsed:
- The date of the transaction
- A button linked to the chatter. The icon of this button can vary:
- The :icon:`fa-comments-o` :guilabel:`(comments)` icon displays only on hover and indicates that
there are no attachments or activities for the transaction.
- The :icon:`fa-paperclip` :guilabel:`(attachments)` icon indicates that there is an attachment on
the journal entry.
- The :icon:`fa-clock-o` :guilabel:`(activities)` icon indicates that there is an activity
scheduled on the journal entry.
- The label of the transaction
- The partner of the transaction (if one is set)
- Up to two :ref:`action buttons <accounting/reconciliation/action-buttons>`, depending on the
details of the transaction
- The balance of the transaction
.. note::
- When the chatter of a transaction is open, a blue tag highlights the related transaction.
- The chatter can be opened and closed by clicking the :icon:`fa-comments-o`
:guilabel:`(comments)` icon and the :icon:`fa-times` :guilabel:`(close)` icon in the top right
of the view.
- Once a transaction is :doc:`reconciled <reconciliation>`, its action buttons are replaced with
the labels of the item(s) it was reconciled with or the account if it was reconciled with the
:guilabel:`Set Account` action button.
.. _accounting/transactions/duplicate:
Duplicate transactions
======================
Duplicate transactions occur when either by human error or :doc:`bank sync <bank_synchronization>`
error, the same transaction is created multiple times. The duplicate transaction view identifies
potential duplicate transactions so they can be selected and deleted. To access the duplicate
transaction view, first access the :guilabel:`Bank Matching` view by going to the
:guilabel:`Accounting Dashboard` and clicking the bank journal's name, then open the :icon:`fa-cog`
:guilabel:`Actions` menu and click :guilabel:`Find Duplicate Transactions`.
Potential duplicate transactions are identified based on their amount, date, and account number, or
(if the transaction is created via :doc:`bank sync <bank_synchronization>`) the transaction ID.
Select a :guilabel:`Starting Date` to view the corresponding potential duplicate transactions, then
select the transactions to delete and click :icon:`fa-trash` :guilabel:`Delete Selected`.
.. note::
Any transactions created by :doc:`bank sync <bank_synchronization>` that the bank sync provider
determines to be potential duplicates are displayed in the :guilabel:`Provider Duplicates` tab.
This tab is only visible if there are any potential duplicates according to the provider.
.. _accounting/transactions/import:
Import transactions
===================
@@ -23,40 +86,39 @@ Odoo supports multiple file formats to import transactions:
- SEPA recommended Cash Management format (CAMT.053)
- Comma-separated values (CSV)
- Excel (XLSX)
- Open Financial Exchange (OFX)
- Quicken Interchange Format (QIF)
- Belgium: Coded Statement of Account (CODA)
To import a file, go to the :guilabel:`Accounting Dashboard`, and in the :guilabel:`Bank` journal,
click on :guilabel:`Import File`.
.. tip::
Alternatively, you can also:
- click the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon on the :guilabel:`Bank`
journal and select :guilabel:`Import file`;
- or access the transaction list by clicking the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)`
icon on the :guilabel:`Bank` journal and selecting :guilabel:`Transactions`, then click
the :icon:`fa-cog` :guilabel:`(gear)` icon and select :guilabel:`Import records`.
To import a file, go to the :guilabel:`Accounting Dashboard`, click the :icon:`fa-ellipsis-v`
:guilabel:`(ellipsis)` icon on the :guilabel:`Bank` journal, and select :guilabel:`Import file`.
Next, select the file and upload it.
After setting the necessary formatting options and mapping the file columns with their related Odoo
fields, you can run a :guilabel:`Test` and :guilabel:`Import` your bank transactions.
.. tip::
Alternatively, access the transaction list by:
- clicking on the :guilabel:`Bank` journal's name, then clicking :guilabel:`Upload`
- dragging and dropping a file on the bank journal on the :guilabel:`Accounting Dashboard`
- dragging and dropping a file on the :guilabel:`Bank Matching` view
Certain file types such as CSV and XLSX, then require setting the necessary formatting options and
mapping the file columns with their related Odoo fields, after which you can run a :guilabel:`Test`
and :guilabel:`Import` your bank transactions. Other file types are mapped automatically.
.. seealso::
:doc:`/applications/essentials/export_import_data`
.. _transactions/register:
.. _accounting/transactions/register:
Register bank transactions manually
===================================
You can also record your bank transactions manually. To do so, go to :guilabel:`Accounting
Dashboard`, click on the :guilabel:`Bank` journal, and then on :guilabel:`New`. Make sure to fill
out the :guilabel:`Partner` and :guilabel:`Label` fields to ease the reconciliation process.
You can also record your bank transactions manually. To do so, go to the :guilabel:`Accounting
Dashboard`, click the :guilabel:`Bank` journal's name, and then on :guilabel:`New`. The
:guilabel:`Partner` field is optional to ease the reconciliation process, but the :guilabel:`Label`
and :guilabel:`Date` fields are mandatory.
.. _transactions/statements:
.. _accounting/transactions/statements:
Statements
==========
@@ -65,74 +127,71 @@ A **bank statement** is a document provided by a bank or financial institution t
transactions that have occurred in a particular bank account over a specified period of time.
In Odoo Accounting, it is optional to group transactions by their related statement, but depending
on your business flow, you may want to record them for control purposes.
on your business flow, you may want to record them for record-keeping and organizational purposes.
To access a list of existing statements, go to the :guilabel:`Accounting Dashboard`, click the
:icon:`fa-ellipsis-v` :guilabel:`(dropdown menu)` icon next to the bank or cash journal you want to
check, then click :guilabel:`Statements`.
.. important::
If you want to compare the ending balances of your bank statements with the ending balances of
your financial records, *don't forget to create an opening transaction* to record the bank
To ensure the ending balances of your bank statements in Odoo align with the ending balances of
the statements that are provided by your bank, create an opening transaction to record the bank
account balance as of the date you begin synchronizing or importing transactions. This is
necessary to ensure the accuracy of your accounting.
To access a list of existing statements, go to the :guilabel:`Accounting Dashboard`, click the
:icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon next to the bank or cash journal you want to
check, then click :guilabel:`Statements`.
.. tip::
To access a statement's transactions, click :guilabel:`Transactions` directly from the
:guilabel:`Bank Statements` list view or open a statement and click the :guilabel:`Statement
lines` smart button.
.. _transactions/statement-kanban:
.. _accounting/transactions/statement-kanban:
Statement creation from the kanban view
---------------------------------------
Statement creation
------------------
Open the bank reconciliation (kanban) view from the :guilabel:`Accounting Dashboard` by clicking on
the name of the bank journal and identify the transaction corresponding to the last (most recent)
transaction of your bank statement. Click on the :guilabel:`Statement` button when hovering on the
upper separator line to create a statement from that transaction down to the oldest transaction that
is not yet part of a statement.
The :guilabel:`Bank Matching` view displays transactions from most recent to oldest and groups them
by statement, with any recent transactions that do not belong to a statement at the top. To add
transactions to a statement, hover on the most recent transaction that should be included in the
statement, and click the :guilabel:`Statement` button that appears on the upper separator line.
Doing so creates a statement from that transaction down to the oldest transaction that is not yet
part of a statement.
.. image:: transactions/statements-kanban.png
:alt: A "Statement" button is visible when hovering on the line separating two transactions.
:alt: A "Statement" button is visible when hovering on a transaction.
In the :guilabel:`Create Statement` window, fill out the statement's :guilabel:`Reference`, verify
its :guilabel:`Starting Balance` and :guilabel:`Ending Balance`, and click :guilabel:`Save`.
its :guilabel:`Starting Balance` and :guilabel:`Ending Balance`, add an attachment such as a PDF
of the statement if desired, and click :guilabel:`Save`.
.. _transactions/statement-list:
.. tip::
Transactions can also be added to statements from the list view. Select all the transactions
corresponding to the bank statement, and, in the :guilabel:`Statement` column, select an existing
statement or create a new one by typing its reference, clicking on :guilabel:`Create and
edit...`, filling out the statement's details, and saving.
Statement creation from the list view
-------------------------------------
Open the list of transactions by clicking on the name of the bank journal and switching to the list
view. Select all the transactions corresponding to the bank statement, and, in the
:guilabel:`Statement` column, select an existing statement or create a new one by typing its
reference, clicking on :guilabel:`Create and edit...`, filling out the statement's details, and
saving.
.. _transactions/view-edit-print:
.. _accounting/transactions/view-edit-print:
Statement viewing, editing, and printing
----------------------------------------
To view an existing statement, click on the statement amount in the reconciliation (kanban) view or
click on the statement name in the bank transaction list view. From here, you can edit the
:guilabel:`Reference`, :guilabel:`Starting Balance`, or :guilabel:`Ending Balance`.
To view an existing statement, click the statement amount in the :guilabel:`Bank Matching` view
or click the statement name and then the :icon:`fa-arrow-right` :guilabel:`(Internal link)` icon in
the :guilabel:`Bank Matching` list view. From here, you can edit the :guilabel:`Reference`,
:guilabel:`Starting Balance`, :guilabel:`Ending Balance`, and :guilabel:`Attachments`.
.. note::
Manually updating the :guilabel:`Starting Balance` automatically updates the :guilabel:`Ending
Balance` based on the new value of the :guilabel:`Starting Balance` and the value of the
statement's transactions.
- Manually updating the :guilabel:`Starting Balance` automatically updates the :guilabel:`Ending
Balance` based on the new value of the :guilabel:`Starting Balance` and the value of the
statement's transactions.
- If the :guilabel:`Starting Balance` doesn't equal the previous statement's :guilabel:`Ending
Balance`, or if the :guilabel:`Ending Balance` doesn't equal the running balance
(:guilabel:`Starting Balance` plus the statement's transactions), a warning appears explaining
the issue. To maintain flexibility, it is still possible to save without first resolving the
issue.
.. warning::
If the :guilabel:`Starting Balance` doesn't equal the previous statement's :guilabel:`Ending
Balance`, or if the :guilabel:`Ending Balance` doesn't equal the running balance
(:guilabel:`Starting Balance` plus the statement's transactions), a warning appears explaining
the issue. To maintain flexibility, it is still possible to save without first resolving the
issue.
To attach a digital copy (i.e., JPEG, PNG, or PDF) of the bank statement for enhanced recordkeeping,
click the :icon:`fa-paperclip` :guilabel:`Attachments` button and select the file to attach.
To generate and print a PDF of the bank statement, click the :guilabel:`Print` button (if accessed
via the reconciliation view) or click on the :icon:`fa-cog`:guilabel:`(gear)` icon and click
:icon:`fa-print`:guilabel:`Statement` (if accessed via the list view).
To generate and print a PDF of the bank statement, click the :icon:`fa-cog` :guilabel:`(gear)` icon
and click :icon:`fa-print` :guilabel:`Statement`.
.. note::
When a bank statement is generated to be printed, it is automatically added to the
:guilabel:`Attachments`.
:guilabel:`Attachments` if no file was attached when creating the statement.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -49,7 +49,7 @@ Bank reconciliation
-------------------
Once the bank transactions :doc:`have been created <../bank/transactions>` in your database, you can
:ref:`reconcile them with the batch payment <reconciliation/batch-payments>`.
:ref:`reconcile <accounting/reconciliation/reconcile>` them with the batch payment.
.. seealso::
- :doc:`../payments`

View File

@@ -224,7 +224,7 @@ your :guilabel:`Bank` journal on your dashboard.
:alt: Import CODA files
.. seealso::
:ref:`Import bank files <transactions/import>`
:ref:`Import bank files <accounting/transactions/import>`
.. _belgium/soda: