diff --git a/content/applications/finance/accounting/payments.rst b/content/applications/finance/accounting/payments.rst index 927032e7c..23069c07b 100644 --- a/content/applications/finance/accounting/payments.rst +++ b/content/applications/finance/accounting/payments.rst @@ -20,39 +20,110 @@ for use at a later date: - `Odoo Tutorials: Bank Configuration `_ +.. _accounting/payments/payment-methods: + +Payment methods +=============== + +Several payment methods are available in Odoo to allow different configurations for different types +of payments. Examples of payment methods include manual payments (such as cash), :doc:`checks +`, and batch payment files (such as :ref:`NACHA +` and :doc:`SEPA `). Payment methods can be +configured in the :guilabel:`Incoming Payments` and :guilabel:`Outgoing Payments` tabs of a bank or +cash journal. + +.. seealso:: + :doc:`../../sales/point_of_sale/payment_methods` for Point of Sale + +.. _accounting/payments/preferred-payment-methods: + +Preferred payment method +------------------------ + +A contact's preferred payment method can be set so that when a payment is created for that contact, +the payment method is automatically selected by default. Invoices and bills can be filtered by +:guilabel:`Payment Method` to simplify :ref:`group ` payments. + +To set a preferred :guilabel:`Payment Method` for a customer or a vendor, go to +:menuselection:`Accounting --> Customers --> Customers` or :menuselection:`Accounting --> Vendors +--> Vendors` and select the customer or vendor. In the :guilabel:`Sales & Purchase` tab of the +contact form, select the preferred :guilabel:`Payment Method` in the :guilabel:`Sales` section for +invoice payments or for vendor bill payments in the :guilabel:`Purchase` section. + +.. tip:: + Access a full list of all contacts from the :guilabel:`Customers` or :guilabel:`Vendors` list + view by removing the :guilabel:`Customers` or :guilabel:`Vendors` filter. Alternatively, access + the full contact list through the Contacts app. + .. _accounting/payments/from-invoice-bill: Registering payment from an invoice or bill =========================================== -When clicking :guilabel:`Register payment` in a customer invoice or vendor bill, it generates a new -journal entry and changes the amount due according to the payment amount. The counterpart is -reflected in an :ref:`outstanding ` **receipts** or -**payments** account. At this point, the customer invoice or vendor bill is marked as :guilabel:`In -payment`. Then, when the outstanding account is reconciled with a bank transaction line, the invoice -or vendor bill changes to the :guilabel:`Paid` status. +To register a payment for an invoice or a bill, follow these steps: -The :icon:`fa-info-circle` information icon next to the payment line displays more -information about the payment. To access additional information, such as the related journal, click -:guilabel:`View`. +#. Click :guilabel:`Pay` on a customer invoice or vendor bill. In the :guilabel:`Pay` window, select + the :guilabel:`Journal` and the :guilabel:`Payment Date`. +#. If previously set, the contact's preferred :guilabel:`Payment Method` is automatically selected + by default but can be updated if necessary. +#. If using :doc:`payment terms `, the :guilabel:`Amount` is + automatically set based on the installment amounts defined by the payment term. To pay the full + amount instead, click :guilabel:`full amount`. +#. If necessary, edit the :guilabel:`Memo`. +#. Click :guilabel:`Create Payment`. -.. image:: payments/information-icon.png - :alt: See detailed information of a payment. +After the payment is registered, the customer invoice or vendor bill is marked as +:guilabel:`In payment`. -.. note:: - - The customer invoice or vendor bill must be in the :guilabel:`Posted` status to register the - payment. - - If a payment is unreconciled, it still appears in the books but is no longer linked to the - invoice. - - If a payment is (un)reconciled in a different currency, a journal entry is automatically - created to post the currency exchange gains/losses (reversal) amount. - - If a payment is (un)reconciled and an invoice with cash-basis taxes, a journal entry is - automatically created to post the cash-basis tax (reversal) amount. +.. tabs:: -.. tip:: - If the main bank account is set as an :ref:`outstanding account - `, and the payment is registered in Odoo (not through a - related bank transaction), invoices and bills are directly registered as :guilabel:`Paid`. + .. group-tab:: Without outstanding accounts + + If no :ref:`outstanding accounts ` are configured, no + journal entry is created. To display more information about the payment, click the + :guilabel:`Payments` smart button. + + When the invoice or vendor bill is :doc:`reconciled ` with a bank + transaction, its status is updated to :guilabel:`Paid`. + + .. note:: + - If a bank transaction is reconciled in a different currency, a journal entry is + automatically created to post the currency exchange gains/loss amount. + - When a bank transaction is reconciled with an invoice with cash-basis, a journal entry is + automatically created to post the cash-basis tax amount. + + .. group-tab:: Using outstanding accounts + + By default, payments in Odoo do not create journal entries, but they can easily be configured + to create journal entries using :ref:`outstanding accounts + `. + + Registering a payment on a customer invoice or vendor bill generates a new journal entry and + reduces the :guilabel:`Amount Due` based on the payment amount. The counterpart is + reflected in an :ref:`outstanding ` **receipts** or + **payments** account. At this point, the customer invoice or vendor bill is marked as + :guilabel:`In payment`. Then, when the payment is :doc:`reconciled ` with + a bank transaction, the invoice or vendor bill status changes to :guilabel:`Paid`. + + The :icon:`fa-info-circle` information icon next to the payment line displays more + information about the payment. To access additional information, such as the related journal, + click :guilabel:`View`. + + .. image:: payments/information-icon.png + :alt: See detailed information of a payment. + + .. note:: + - Unreconciling a payment unlinks it from the invoice or bill but does not delete the + payment. + - If a payment is (un)reconciled in a different currency, a journal entry is automatically + created to post the currency exchange gains/losses (reversal) amount. + - If a payment is (un)reconciled on an invoice with cash-basis taxes, a journal entry is + automatically created to post the cash-basis tax (reversal) amount. + + .. tip:: + If the main bank account is set as the outstanding account on the bank journal's payment + method, registering the full payment on an invoice or bill moves the invoice/bill directly + to the :guilabel:`Paid` status without requiring bank reconciliation. .. _accounting/payments/not-tied: @@ -60,71 +131,185 @@ Registering payments not tied to an invoice or bill =================================================== When a new payment is registered via :menuselection:`Customers / Vendors --> Payments`, it is not -directly linked to an invoice or bill. Instead, the account receivable or the account payable is -matched with the **outstanding account** until it is manually matched with its related invoice or -bill. +directly linked to an invoice or bill. + +.. tabs:: + + .. group-tab:: Without outstanding accounts + + Payments that are not linked to an invoice or bill should not be registered without using + :ref:`outstanding accounts `, as there is no way to + associate the payment with the invoice or bill since no journal entry is created for the + payment. The amount paid or received is not reflected in the accounting and the + :guilabel:`Amount Due` is not updated based on the payment amount. + + .. group-tab:: Using outstanding accounts + + Instead, the payment's journal entry matches the :guilabel:`outstanding account` with the + account receivable or the account payable until the payment is manually matched with its + related invoice or bill. Then, :doc:`reconciling ` the payment with the + bank transaction completes the payment workflow. + +.. _accounting/payments/payments-matching: + +Payments matching +----------------- + +.. note:: + During the :doc:`bank reconciliation ` process, a remaining balance is + identified if the total debits and credits do not match when records are compared with bank + transactions. This balance must either be reconciled later or written off immediately. .. _accounting/payments/matching-invoices-bills: -Matching invoices and bills with payments ------------------------------------------ +For a single invoice or bill +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -A blue banner appears when validating a new invoice/bill and an **outstanding payment** exists for -this specific customer or vendor. To match it with the invoice or bill, click :guilabel:`ADD` -under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`. +.. tabs:: -.. image:: payments/add-option.png - :alt: Shows the ADD option to reconcile an invoice or a bill with a payment. + .. group-tab:: Without outstanding accounts -The invoice or bill is now marked as :guilabel:`In payment` until it is reconciled with its -corresponding bank transaction. + By default, payments in Odoo do not create journal entries. As a result, there is no payment + to match. + + .. group-tab:: Using outstanding accounts + + A blue banner appears when validating a new invoice/bill and an **outstanding payment** exists + for this specific customer or vendor. To match it with the invoice or bill, click + :guilabel:`Add` under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`. + + .. image:: payments/add-option.png + :alt: Shows the Add option to reconcile an invoice or a bill with a payment. + + The invoice or bill is then marked as :guilabel:`In payment` until the payment is + :doc:`reconciled ` with its corresponding :doc:`bank transaction(s) + `. + +.. _accounting/payments/auto-reconcile-tool: + +For multiple invoices or bills +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. tabs:: + + .. group-tab:: Without outstanding accounts + + By default, payments in Odoo do not create journal entries. As a result, there is no payment + to match, but this feature can still be used to match miscellaneous journal items. + + .. group-tab:: Using outstanding accounts + + The :guilabel:`Payments matching` or :guilabel:`Auto-reconcile` tool allows reconciling + journal items with each other (i.e., payments with customer invoices or vendor bills) either + individually or in batches. Access the :guilabel:`Accounting Dashboard`, click the + :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) button from the :guilabel:`Customer + Invoices` or :guilabel:`Vendor Bills` journals, and select :guilabel:`Payments Matching`. + Alternatively, go to :menuselection:`Accounting --> Accounting --> Reconcile`. + + To manually :guilabel:`Reconcile` journal items, select the individual items from the list + view and click :guilabel:`Reconcile`. + +.. _accounting/payments/auto-reconcile-feature: + +Auto-Reconcile Feature +********************** + +.. tabs:: + + .. group-tab:: Without outstanding accounts + + To use the :guilabel:`Auto-Reconcile` feature, follow these steps: + + #. In the :guilabel:`Journal Items to reconcile` list view, click :guilabel:`Auto-Reconcile` + next to the receivable or payable account (or a specific contact's group of journal items + in that account). + #. In the :guilabel:`Reconcile automatically` window, click :guilabel:`Reconcile`. + + .. group-tab:: Using outstanding accounts + + To use the :guilabel:`Auto-Reconcile` feature, follow these steps: + + #. In the :guilabel:`Journal Items to reconcile` list view, click :guilabel:`Auto-Reconcile` + next to the receivable or payable account (or a specific contact's group of journal items + in that account). + #. In the :guilabel:`Reconcile Automatically` window, set the + :guilabel:`Reconcile` field depending on how you want to match journal items: + + - :guilabel:`Perfect Match`: Each debit journal item will be matched with + the corresponding credit journal item of the same value. + - :guilabel:`Clear Accounts`: All reconciled journal items will have the same + matching number, as they are selected from the same account. + + #. Click :guilabel:`Reconcile`. + + Invoices and bills are automatically matched to their corresponding payments and marked as + :guilabel:`In payment` until they are :doc:`reconciled ` with their + corresponding :doc:`bank transactions `. .. _accounting/payments/group-payments: -Group payments --------------- +Registering payments on multiple invoices/credit notes or bills/refunds (group payments) +======================================================================================== -Group payments allow combining outgoing and incoming payments from the same contact into a single -payment to simplify the process and improve payment usability. To register a group payment: +To register payments on multiple invoices/credit notes or bills/refunds, follow these steps: #. Go to :menuselection:`Accounting --> Customers --> Invoices/Credit Notes` or :menuselection:`Accounting --> Vendors --> Bills/Refunds`. -#. Select the relevant invoices/credit notes or bills/refunds linked to a specific contact. -#. Click the :icon:`fa-cog` (:guilabel:`Action menu`) icon and select :guilabel:`Register Payment`. -#. In the :guilabel:`Register Payment` window, select the :guilabel:`Journal`, the - :guilabel:`Payment Method`, and the :guilabel:`Payment Date`. -#. Enable the :guilabel:`Group Payments` option and click :guilabel:`Create payment`. +#. In the list view, click into the search bar, group by :guilabel:`Payment Method`, select the + relevant invoices/credit notes or bills/refunds and click :guilabel:`Pay`. +#. In the :guilabel:`Pay` window, select the :guilabel:`Journal` and the :guilabel:`Payment Date`. +#. If previously set, the contact's preferred :guilabel:`Payment Method` is automatically selected + by default but can be updated if necessary. +#. If using :doc:`payment terms `, the :guilabel:`Amount` is + automatically set based on the installment amounts defined by the payment term. To pay the full + amount instead, click :guilabel:`full amount`. +#. To combine all payments from the same contact into a single payment, enable the :guilabel:`Group + Payments` option, or leave it unchecked to create separate payments. +#. Click :guilabel:`Create payment`. -The invoices or bills are now marked as :guilabel:`In payment` until they are reconciled with the -corresponding bank transactions. The credit notes or refunds are marked as :guilabel:`Paid`. +.. tabs:: + + .. group-tab:: Without outstanding accounts + + The invoices or bills are then marked as :guilabel:`In payment` until they are + :doc:`reconciled ` with the bank transactions. + + .. group-tab:: Using outstanding accounts + + The invoices or bills are then marked as :guilabel:`In payment` until the bank transactions + are :doc:`reconciled ` with the payments. .. _accounting/payments/batch-payments: -Batch payments --------------- +Registering a single payment for multiple customers or vendors (batch payments) +=============================================================================== -Batch payments allow grouping payments from multiple contacts to ease -:doc:`reconciliation `. They are also useful when depositing :doc:`checks -` to the bank or for :doc:`SEPA payments `. To do so, go to -:menuselection:`Accounting --> Customers --> Batch Payments` or :menuselection:`Accounting --> -Vendors --> Batch Payments`. In the list view of payments, to group several payments in a -batch, select them and click :menuselection:`Action --> Create Batch Payment`. +Batch payments allow grouping payments from multiple contacts to ease :doc:`reconciliation +`. They are also useful when depositing :doc:`checks ` to the +bank or for generating bank payment files such as :doc:`SEPA ` or :ref:`NACHA +`. To do so, go to :menuselection:`Accounting --> Customers --> Payments` or +:menuselection:`Accounting --> Vendors --> Payments`. In the payments list view, select the payments +to be grouped in a batch, click :icon:`fa-cog` :guilabel:`Actions`, and select :guilabel:`Create +Batch Payment`. + +.. note:: + All payments in a batch must have the same :ref:`payment method + `. .. seealso:: - - :doc:`payments/batch` - - :doc:`payments/batch_sdd` + - :doc:`payments/batch` + - :doc:`payments/batch_sdd` .. _accounting/payments/matching: Payments matching ----------------- -The :guilabel:`Payments matching` tool opens all unreconciled customer invoices or vendor bills and -allows them to be processed individually, matching all payments and invoices in one place. Go to the -:guilabel:`Accounting Dashboard`, click the :icon:`fa-ellipsis-v` (:guilabel:`dropdown menu`) -button from the :guilabel:`Customer Invoices` or :guilabel:`Vendor Bills` journals, and select -:guilabel:`Payments Matching`, or go to :menuselection:`Accounting --> Accounting --> -Reconciliation`. +The :guilabel:`Payments matching` tool opens all unreconciled journal items and allows them to be +processed individually, matching all payments and journal items. Go to the +:guilabel:`Accounting Dashboard`, go to :menuselection:`Accounting --> Accounting --> Reconcile` or +click the :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) button from the :guilabel:`Customer +Invoices` or :guilabel:`Vendor Bills` journals, and select :guilabel:`Payments Matching`. .. image:: payments/payments-journal.png :alt: Payments matching menu in the drop-down menu. @@ -134,47 +319,56 @@ Reconciliation`. not match, there is a remaining balance. This either needs to be reconciled at a later date or written off directly. -.. _accounting/payments/batch-payments-matching: - -Batch payments matching ------------------------ - -Use the batch reconciliation feature to reconcile several outstanding payments or invoices -simultaneously for a specific customer or vendor. Go to :menuselection:`Accounting --> Reporting --> -Aged Receivable / Aged Payable`. All transactions that have not yet been reconciled for that -contact are visible, and when a customer or vendor is selected, the :guilabel:`Reconcile` option is -displayed. - -.. image:: payments/reconcile-option.png - :alt: The batch payment reconcile option. - .. _accounting/payments/partial-payment: Registering a partial payment ============================= -To register a partial payment, click on :guilabel:`Register Payment` from the related invoice or -bill. In the case of a partial payment (when the :guilabel:`Amount` paid is less than the total -remaining amount on the invoice or the bill), the :guilabel:`Payment Difference` field displays the -outstanding balance. There are two options: +To register a partial payment, click on :guilabel:`Pay` from the related invoice or bill. -- :guilabel:`Keep open`: Keep the invoice or the bill open and mark it with a :guilabel:`Partial` - banner; -- :guilabel:`Mark as fully paid`: Select an account in the :guilabel:`Post Difference In` field and - change the :guilabel:`Label` if needed. A journal entry will be created to balance the accounts - payable or receivable with the selected account. +.. tabs:: -.. image:: payments/partial-payment.png - :alt: register a partial payment + .. group-tab:: Without outstanding accounts + + In the case of a partial payment (when the :guilabel:`Amount` paid is less than the total + remaining amount on the invoice or the bill), fill in the :guilabel:`Amount` in the + :guilabel:`Pay` window. + + .. group-tab:: Using outstanding accounts + + In the case of a partial payment (when the :guilabel:`Amount` paid is less than the total + remaining amount on the invoice or the bill), the :guilabel:`Payment Difference` field + displays the outstanding balance. There are two options: + + - :guilabel:`Keep open`: Keep the invoice or the bill open and mark it with a + :guilabel:`Partial` banner; + - :guilabel:`Mark as fully paid`: Select an account in the :guilabel:`Post Difference In` + field and change the :guilabel:`Label` if needed. A journal entry will be created to balance + the accounts payable or receivable with the selected account. + + .. image:: payments/partial-payment.png + :alt: register a partial payment .. _accounting/payments/reconciling-payments: Reconciling payments with bank transactions =========================================== -Once a payment has been registered, the status of the invoice or bill is :guilabel:`In payment`. The -next step is :doc:`reconciling ` it with the related bank transaction line to -finalize the payment workflow and mark the invoice or bill as :guilabel:`Paid`. +.. tabs:: + + .. group-tab:: Without outstanding accounts + + Once a payment has been registered, the status of the invoice or bill is :guilabel:`In + payment`. The next step is :doc:`reconciling ` the related :doc:`bank + transaction ` line with the invoice or bill to finalize the payment + workflow and mark the invoice or bill as :guilabel:`Paid`. + + .. group-tab:: Using outstanding accounts + + Once a payment has been registered, the status of the invoice or bill is :guilabel:`In + payment`. The next step is :doc:`reconciling ` the payment with the + related :doc:`bank transaction ` line to finalize the payment workflow and + mark the invoice or bill as :guilabel:`Paid`. .. toctree:: :titlesonly: diff --git a/content/applications/finance/accounting/payments/add-option.png b/content/applications/finance/accounting/payments/add-option.png index 90a76ce89..b345eed6c 100644 Binary files a/content/applications/finance/accounting/payments/add-option.png and b/content/applications/finance/accounting/payments/add-option.png differ diff --git a/content/applications/finance/accounting/payments/information-icon.png b/content/applications/finance/accounting/payments/information-icon.png index 7f3158fde..03528e90b 100644 Binary files a/content/applications/finance/accounting/payments/information-icon.png and b/content/applications/finance/accounting/payments/information-icon.png differ diff --git a/content/applications/finance/accounting/payments/payments-journal.png b/content/applications/finance/accounting/payments/payments-journal.png index 3d4e2d8f8..18f9dc5ca 100644 Binary files a/content/applications/finance/accounting/payments/payments-journal.png and b/content/applications/finance/accounting/payments/payments-journal.png differ diff --git a/content/applications/finance/accounting/payments/reconcile-option.png b/content/applications/finance/accounting/payments/reconcile-option.png deleted file mode 100644 index ad33e8e41..000000000 Binary files a/content/applications/finance/accounting/payments/reconcile-option.png and /dev/null differ diff --git a/content/applications/finance/accounting/reporting/year_end.rst b/content/applications/finance/accounting/reporting/year_end.rst index 68058a86d..c449bdf50 100644 --- a/content/applications/finance/accounting/reporting/year_end.rst +++ b/content/applications/finance/accounting/reporting/year_end.rst @@ -62,7 +62,7 @@ Then, to close the fiscal year: ` reports. - Audit all accounts, being sure to fully understand all transactions and their nature, making sure to include loans and fixed assets. - - Optionally, run :ref:`payments matching ` to validate any open + - Optionally, :ref:`match payments ` to validate any open vendor bills and customer invoices with their payments. While this step is optional, it could assist the year-end closing process if all outstanding payments and invoices are reconciled, potentially finding errors or mistakes in the system. diff --git a/content/applications/finance/accounting/vendor_bills.rst b/content/applications/finance/accounting/vendor_bills.rst index 33aab50ea..d1fe24d67 100644 --- a/content/applications/finance/accounting/vendor_bills.rst +++ b/content/applications/finance/accounting/vendor_bills.rst @@ -37,7 +37,7 @@ appropriately completed: - :guilabel:`Vendor`: Odoo automatically fills some information based on the vendor's registered information, previous purchase orders, or bills. - :guilabel:`Bill Reference`: add the sales order reference provided by the vendor and is used to do - the :ref:`matching ` when you receive the products. + the :ref:`matching ` when you receive the products. - :guilabel:`Auto-Complete`: select a past bill/purchase order to automatically complete the document. The :guilabel:`Vendor` field should be completed prior to completing this field. - :guilabel:`Bill Date`: is the issuance date of the document.