diff --git a/content/applications/finance/accounting/bank.rst b/content/applications/finance/accounting/bank.rst index 1513d09c6..8bb8c218c 100644 --- a/content/applications/finance/accounting/bank.rst +++ b/content/applications/finance/accounting/bank.rst @@ -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. diff --git a/content/applications/finance/accounting/bank/internal_transfers.rst b/content/applications/finance/accounting/bank/internal_transfers.rst index 533259f9f..17cf584e4 100644 --- a/content/applications/finance/accounting/bank/internal_transfers.rst +++ b/content/applications/finance/accounting/bank/internal_transfers.rst @@ -26,7 +26,7 @@ select the :guilabel:`Internal Transfers` :doc:`reconciliation model ` 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 `. 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 ` or with +:ref:`reconciliation models `. 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 `, Odoo pre-selects the -matching entries automatically. +Thanks to the :ref:`default matching rules ` and customizable +bank :doc:`reconciliation models `, Odoo selects the matching items +automatically when possible. .. seealso:: - `Odoo Tutorials: Bank reconciliation - `_ + `_ - :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 `, 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 ` 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 ` is linked to a journal entry that debits/credits the +journal's main account and its :ref:`suspense account ` 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 `, 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 ` 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 + ` 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 -`, or they can be matched with :ref:`existing entries -`, :ref:`batch payments `, -:ref:`manual operations `, and :ref:`reconciliation model buttons -`. +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 `. 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 `, :ref:`manual operations - `, :ref:`batch payments `, and - :ref:`reconciliation model buttons `. -#. 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 `. -#. Click the :guilabel:`Validate` button to confirm the reconciliation and move to the next - transaction. + :ref:`matching existing items `, :ref:`manually setting + the account `, matching with :doc:`batch payments + <../payments/batch>`, and using :ref:`reconciliation model buttons + `. +#. If the resulting entry is not fully balanced, add another existing counterpart item or write it + off by :ref:`setting the 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 `, 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 ` the line, click +:guilabel:`fully paid`, and :guilabel:`Save`. To reverse this, :ref:`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 ` 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 ` 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/model: + +Reconciliation models +--------------------- + +Use :doc:`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 ` (either fully or + partially) the incoming and outgoing debts. +- :ref:`No bank transaction balances ` 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 `: + +#. 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 ` with other bank transactions. + - The bank transaction itself is not fully reconciled, and the remaining balance can be + :ref:`reconciled ` 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 ` 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. diff --git a/content/applications/finance/accounting/bank/reconciliation/bank-card.png b/content/applications/finance/accounting/bank/reconciliation/bank-card.png index 4121744ae..906505249 100644 Binary files a/content/applications/finance/accounting/bank/reconciliation/bank-card.png and b/content/applications/finance/accounting/bank/reconciliation/bank-card.png differ diff --git a/content/applications/finance/accounting/bank/reconciliation/fully-paid.png b/content/applications/finance/accounting/bank/reconciliation/fully-paid.png deleted file mode 100644 index bcb2ed327..000000000 Binary files a/content/applications/finance/accounting/bank/reconciliation/fully-paid.png and /dev/null differ diff --git a/content/applications/finance/accounting/bank/reconciliation/user-interface.png b/content/applications/finance/accounting/bank/reconciliation/user-interface.png index b0ac51996..5058e8af7 100644 Binary files a/content/applications/finance/accounting/bank/reconciliation/user-interface.png and b/content/applications/finance/accounting/bank/reconciliation/user-interface.png differ diff --git a/content/applications/finance/accounting/bank/reconciliation_models.rst b/content/applications/finance/accounting/bank/reconciliation_models.rst index 8fd765614..558c396fa 100644 --- a/content/applications/finance/accounting/bank/reconciliation_models.rst +++ b/content/applications/finance/accounting/bank/reconciliation_models.rst @@ -2,111 +2,158 @@ Reconciliation models ===================== -Reconciliation models are used to automate the :doc:`bank 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 ` and :guilabel:`bank transaction -conditions`. +Reconciliation models are custom rules that complement the :ref:`default set of matching rules +` and enable more advanced automation of the :doc:`bank +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 `_ + `Odoo Tutorials: Reconciliation models `_ -.. _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 +` when :doc:`reconciling `. Automatic +reconciliation models apply automatically to transactions that meet the reconciliation model's +:ref:`matching 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 +` to identify the relevant bank transactions and :ref:`Counterpart +Items ` 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 `_, 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 ` + 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 +` 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 `. + +.. 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 `_, 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 +`, such as a specific transaction label, and then configure the +:guilabel:`Partner` and any other relevant fields in the :ref:`Counterpart Items +` tab. Setting an :guilabel:`Account` is not mandatory for +partner mapping. diff --git a/content/applications/finance/accounting/bank/reconciliation_models/bank-fees.png b/content/applications/finance/accounting/bank/reconciliation_models/bank-fees.png deleted file mode 100644 index d373879bb..000000000 Binary files a/content/applications/finance/accounting/bank/reconciliation_models/bank-fees.png and /dev/null differ diff --git a/content/applications/finance/accounting/bank/reconciliation_models/invoices-bills-perfect-match.png b/content/applications/finance/accounting/bank/reconciliation_models/invoices-bills-perfect-match.png deleted file mode 100644 index 865d14bb5..000000000 Binary files a/content/applications/finance/accounting/bank/reconciliation_models/invoices-bills-perfect-match.png and /dev/null differ diff --git a/content/applications/finance/accounting/bank/reconciliation_models/list-view.png b/content/applications/finance/accounting/bank/reconciliation_models/list-view.png index a06772b81..f4d44acf0 100644 Binary files a/content/applications/finance/accounting/bank/reconciliation_models/list-view.png and b/content/applications/finance/accounting/bank/reconciliation_models/list-view.png differ diff --git a/content/applications/finance/accounting/bank/reconciliation_models/partial-match.png b/content/applications/finance/accounting/bank/reconciliation_models/partial-match.png deleted file mode 100644 index a9a5ed71e..000000000 Binary files a/content/applications/finance/accounting/bank/reconciliation_models/partial-match.png and /dev/null differ diff --git a/content/applications/finance/accounting/bank/reconciliation_models/partner-mapping.png b/content/applications/finance/accounting/bank/reconciliation_models/partner-mapping.png deleted file mode 100644 index 0c01df0c0..000000000 Binary files a/content/applications/finance/accounting/bank/reconciliation_models/partner-mapping.png and /dev/null differ diff --git a/content/applications/finance/accounting/bank/reconciliation_models/regex.png b/content/applications/finance/accounting/bank/reconciliation_models/regex.png deleted file mode 100644 index 1237b6b58..000000000 Binary files a/content/applications/finance/accounting/bank/reconciliation_models/regex.png and /dev/null differ diff --git a/content/applications/finance/accounting/bank/transactions.rst b/content/applications/finance/accounting/bank/transactions.rst index e6263b04e..717cdeb27 100644 --- a/content/applications/finance/accounting/bank/transactions.rst +++ b/content/applications/finance/accounting/bank/transactions.rst @@ -8,13 +8,76 @@ and reconciling them with the ones recorded in your accounting. :doc:`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 ` delivered by your bank; -- :ref:`Register bank transactions ` manually. +- :ref:`Import bank transactions ` delivered by your bank; +- :ref:`Register bank transactions ` manually. .. note:: - :ref:`Grouping transactions by statement ` is optional. + :ref:`Grouping transactions by statement ` 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 `, 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 `, 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 ` +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 `) 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 ` 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. diff --git a/content/applications/finance/accounting/bank/transactions/statements-kanban.png b/content/applications/finance/accounting/bank/transactions/statements-kanban.png index 050a4f40f..94ffdf468 100644 Binary files a/content/applications/finance/accounting/bank/transactions/statements-kanban.png and b/content/applications/finance/accounting/bank/transactions/statements-kanban.png differ diff --git a/content/applications/finance/accounting/payments/batch.rst b/content/applications/finance/accounting/payments/batch.rst index a3ddceedc..71792fa9c 100644 --- a/content/applications/finance/accounting/payments/batch.rst +++ b/content/applications/finance/accounting/payments/batch.rst @@ -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 `. +:ref:`reconcile ` them with the batch payment. .. seealso:: - :doc:`../payments` diff --git a/content/applications/finance/fiscal_localizations/belgium.rst b/content/applications/finance/fiscal_localizations/belgium.rst index 56064c5e6..c21d970b6 100644 --- a/content/applications/finance/fiscal_localizations/belgium.rst +++ b/content/applications/finance/fiscal_localizations/belgium.rst @@ -224,7 +224,7 @@ your :guilabel:`Bank` journal on your dashboard. :alt: Import CODA files .. seealso:: - :ref:`Import bank files ` + :ref:`Import bank files ` .. _belgium/soda: