diff --git a/content/applications/finance/accounting/payments.rst b/content/applications/finance/accounting/payments.rst index 48ecc68a369..35fba7c4a82 100644 --- a/content/applications/finance/accounting/payments.rst +++ b/content/applications/finance/accounting/payments.rst @@ -155,7 +155,7 @@ Registering a single payment for multiple customers or vendors (batch payments) Batch payments allow grouping payments from multiple customers to ease :doc:`reconciliation `. They are also useful when depositing :doc:`checks ` or cash payments to the bank or for generating bank payment files such as :doc:`SEPA -` or :ref:`NACHA `. +` or :ref:`NACHA `. .. seealso:: :doc:`payments/batch` @@ -195,10 +195,8 @@ as :guilabel:`Paid`. payments/online payments/checks payments/batch - payments/batch_sdd + payments/sepa_payments payments/follow_up payments/internal_transfers - payments/pay_sepa payments/pay_checks - payments/forecast - payments/trusted_accounts + payments/customer_vendor_bank_accounts diff --git a/content/applications/finance/accounting/payments/batch.rst b/content/applications/finance/accounting/payments/batch.rst index 947f0c1e62a..48f37627f10 100644 --- a/content/applications/finance/accounting/payments/batch.rst +++ b/content/applications/finance/accounting/payments/batch.rst @@ -2,51 +2,103 @@ Batch payments ============== -Batch payments allow grouping payments from multiple customers or vendors into a single batch and -generating a detailed deposit slip or payment file with a batch reference. This reference can be -used during :doc:`reconciliation <../bank/reconciliation>` to match bank transactions with the -corresponding payments. This feature is particularly useful for submitting :doc:`SEPA Direct Debit -payments `, depositing cash payments or :doc:`checks `, or generating outgoing -payment files, such as :doc:`SEPA ` or :ref:`NACHA `. +Batch payments act as an organizational tool that groups multiple individual customer or vendor +payments into a single file. Rather than managing transactions one by one, you can consolidate them +to generate a detailed deposit slip or a single electronic payment file. This significantly +simplifies bank :doc:`reconciliation <../bank/reconciliation>`: when a bulk sum appears on your bank +statement, Odoo uses the batch reference to automatically match and reconcile all underlying +payments in a single step. + +For customer payments, the feature supports both physical assets, such :doc:`checks ` and +cash, and electronic transfers. You can group daily receipts into one batch to print a bank deposit +slip, ensuring your internal records mirror the lump-sum deposit on your bank statement. On the +vendor side, batch payments streamline bulk electronic transfers. Instead of processing supplier +invoices manually, you can select multiple bills and generate a single outgoing payment file to +upload directly to your banking portal. Because these file formats are region-specific (e.g., +:doc:`SEPA ` in Europe, :ref:`NACHA ` in the U.S., or the global +:ref:`ISO 20022 ` standard), you should consult your country's +:doc:`fiscal localization <../../fiscal_localizations>` documentation to verify supported formats. + +.. seealso:: + - :doc:`../payments` + +.. _accounting/batch/configuration: Configuration ============= -To enable batch payments, go to :menuselection:`Accounting --> Configuration --> Settings`, scroll -down to the :guilabel:`Customer Payments` section, and enable :guilabel:`Batch Payments`. +To enable batch payments, open the **Accounting** app, go to :menuselection:`Configuration --> +Settings`, scroll down to the :guilabel:`Customer Payments` section, and enable :guilabel:`Batch +Payments`. + +.. note:: + This enables both customer *and* vendor batch payments. + +.. tip:: + According to your needs, check that the following apps are installed in the **Apps** app: + + - Batch Payment + - Account Batch Payment Reconciliation + - SEPA Credit Transfer + - SEPA Direct Debit + - SEPA Payments for Payroll + - Payment Provider: Sepa Direct Debit + - NACHA Payments .. _accounting/batch/creation: Batch creation ============== -To create a batch payment, follow these steps: +To create customer or vendor batch payments, reproduce the following steps: #. Make sure all payments to be included in the batch have been :ref:`registered `. -#. Go to :menuselection:`Accounting --> Customers --> Payments`. -#. Select the payments to include in the batch. +#. Open the **Accounting** app and go to :menuselection:`Customers --> Batch Payments` or + :menuselection:`Vendors --> Batch payments` according to the nature of the payment. +#. Click :guilabel:`New`. From here, some configuration is required: + + - :guilabel:`Batch Type`: select whether the money is being transferred to your account + (:guilabel:`Inbound`) or to somebody else's account (:guilabel:`Outbound`). + - :guilabel:`Bank`: the bank journal to use for this batch. + - :guilabel:`Payment Method`: the payment method used for the invoices' payments. Only payments + matching the payment method selected will appear. + - :guilabel:`Date`: the batch's creation date + - :guilabel:`Reference`: the reference of the batch. Leave it empty to generate it automatically. + - :guilabel:`Add a line`: click it to select the payments to include in the batch. +#. Once all desired payments are included, click :guilabel:`Validate` to finalize the batch. + +Alternatively, you can: - .. note:: - All payments in the batch must use the same payment method. If needed, payments can be grouped - using the :guilabel:`Payment Method Line`. - -#. Click :guilabel:`Create batch` or click :icon:`fa-cog` :guilabel:`Actions` and select +#. Make sure all payments to be included in the batch have been :ref:`registered + `. +#. Open the **Accounting** app and go to :menuselection:`Customers --> Payments` or + :menuselection:`Vendors --> Payments` and select all payments to include in the batch. +#. Click :guilabel:`Create Batch`, *or* :icon:`fa-cog` :guilabel:`(Actions)`, and select :guilabel:`Create batch payment`. -#. In the batch payment form, review the selected payments. If any individual payments were missed, - click :guilabel:`Add a line` and select the missing payments to be included in the batch. -#. Once all relevant payments are included, click :guilabel:`Validate` to finalize the batch. +#. In the view form, review the selected payments. If any individual payments are missing, click + :guilabel:`Add a line`, then select the missing payments to include in the batch. +#. Once all desired payments are included, click :guilabel:`Validate` to finalize the batch. + +To view existing batch payments, go to :menuselection:`Customers --> Batch Payments` or +:menuselection:`Vendors --> Batch Payments`. .. note:: - Once validated, no additional payments can be added to a batch. + - All payments in a batch *must* use the same payment method. + - Once validated, no additional payments can be added to a batch. You can delete the batch if + necessary by clicking :icon:`fa-cog` :guilabel:`(Actions)` and then :icon:`fa-trash-o` + :guilabel:`(Delete)`. .. tip:: - Click :guilabel:`Print` to download a list of the included payments. - - To view existing batch payments, go to :menuselection:`Accounting --> Customers --> Batch - Payments`. + - To filter payments by payment method, click on the :guilabel:`Payment Method` column header + during the batch payment creation step. + + +.. _accounting/batch/bank_reconciliation: Bank reconciliation -------------------- +=================== Once the bank transactions :doc:`have been created <../bank/transactions>` in your database, you can :ref:`reconcile them with the batch payment `. @@ -55,10 +107,6 @@ Once the bank transactions :doc:`have been created <../bank/transactions>` in yo :alt: Reconciling the batch payment with all its transactions .. note:: - If a specific payment could not be processed by the bank or is missing, remove the related line - from the resulting entry section of the reconciliation view using the :icon:`fa-trash` - (:guilabel:`delete`) button before validating the reconciliation. - -.. seealso:: - - :doc:`../payments` - - :doc:`batch_sdd` + If a specific payment could not be processed by the bank or is missing, remove the line + corresponding to that payment by using the :icon:`fa-trash-o` (:guilabel:`Delete`) button before + validating the reconciliation of the batch payment. diff --git a/content/applications/finance/accounting/payments/batch_sdd.rst b/content/applications/finance/accounting/payments/batch_sdd.rst deleted file mode 100644 index e484e4a9af2..00000000000 --- a/content/applications/finance/accounting/payments/batch_sdd.rst +++ /dev/null @@ -1,170 +0,0 @@ -========================================= -SEPA Direct Debit (SDD) customer payments -========================================= - -.. |sdd| replace:: :abbr:`SDD (SEPA Direct Debit)` - -SEPA (Single Euro Payments Area) is a payment-integration initiative of the European Union that -facilitates standardized and simplified electronic payments in euros across participating countries. -With **SEPA Direct Debit** (SDD), customers sign a mandate that authorizes you to collect future -payments from their bank accounts. This is particularly useful for recurring payments based on a -:doc:`subscription `. - -You can record customer |sdd| mandates in Odoo and generate XML files listing payments to be -collected with the mandates. :ref:`Uploading these files to your bank ` -instructs them to collect these payments from your customers. - -.. note:: - - |sdd| is supported by all SEPA countries, which includes the 27 member states of the European - Union as well as additional countries. - - `List of all SEPA countries - `_. - -.. _accounting/batch_sdd/sepa-configuration: - -Configuration -============= - -Creditor identifier -------------------- - -To enable |sdd| for customer payments, go to :menuselection:`Accounting --> Configuration --> -Settings`, scroll to the :guilabel:`Customer Payments` section, enable :guilabel:`SEPA Direct Debit -(SDD)`, and click :guilabel:`Save`. Then, scroll to the :guilabel:`Customer Payments` section again, -set the company's :guilabel:`Creditor Identifier`, and click :guilabel:`Save`. - -.. tip:: - The creditor identifier is provided by your bank or the authority responsible for delivering - them in your country. For testing purposes, you can use the test creditor identifier - `DE98ZZZ09999999999`. - -PAIN file version ------------------ - -By default, the :ref:`SEPA-compliant XML files ` generated by Odoo -use the |sdd| **PAIN.008.001.02** format. If your bank requires the updated 2023 -version, go to :menuselection:`Accounting --> Configuration --> Journals`. Then, in the -:guilabel:`Incoming Payments` tab, set the :guilabel:`SEPA Pain version` field to -:guilabel:`Updated 2023 (Pain 008.001.08)`. - -.. _accounting/batch_sdd/sdd_mandates: - -SEPA Direct Debit Mandates -========================== - -An |sdd| mandate is a legal document authorizing a company to debit funds from a customer's bank -account. It includes key information, such as the customer's name and IBAN, the mandate's start -and end date, and the mandate's unique identifier. The mandate form must be filled in and signed by -the customer. - -Creating mandates ------------------ - -To create an |sdd| mandate: - -#. Go to :menuselection:`Accounting --> Customers --> Direct Debit Mandates`. -#. Click :guilabel:`New` and fill out the fields. -#. Click :guilabel:`Print` to generate a PDF of the mandate form, then send it to the customer for - signature. -#. Click :guilabel:`Validate` to activate the mandate. - -.. important:: - A valid IBAN must be defined in the :guilabel:`Account Number` field of the :doc:`bank journal - <../bank>` used to receive |sdd| payments for the mandate. - -.. tip:: - - To print the mandate form after the mandate has been validated, click the :icon:`fa-cog` - (:guilabel:`gear`) icon, then select :guilabel:`Mandate form`. - - The :guilabel:`SDD Scheme` depends on the type of customer: Select :guilabel:`CORE` for B2C - customers and :guilabel:`B2B` for B2B customers. - - |sdd| mandates are created automatically for :doc:`online payments made with SDD - <../../payment_providers/sdd>`. - -Once an |sdd| mandate is active, subsequent |sdd| payments can be generated via Odoo and -:ref:`uploaded to your online banking interface `. Customers with an -active |sdd| mandate can also use this payment method for :doc:`online purchases -<../../payment_providers/sdd>`. - -.. _accounting/batch_sdd/close-revoke-mandate: - -Closing or revoking a mandate ------------------------------ - -|sdd| mandates are closed automatically after their :guilabel:`End Date`. If this field is -left empty, the mandate remains active until it is closed or revoked. To close or revoke a mandate, -go to :menuselection:`Accounting --> Customers --> Direct Debit Mandates`, select the relevant -mandate, and click :guilabel:`Close` or :guilabel:`Revoke`. - -**Closing** a mandate updates the mandate's end day to the current day. Invoices issued after the -present day will not be processed with an |sdd| payment. **Revoking** a mandate disables the -mandate immediately. No |sdd| payment can be registered anymore, regardless of the invoice's -date. However, payments that have already been registered are still included in the next :ref:`SDD -XML file `. - -.. warning:: - - Mandates are automatically closed 36 months after the date of the last collection. - - Closed or revoked mandates cannot be reactivated. - -.. _accounting/batch_sdd/XML: - -Processing |sdd| payments -========================= - -All registered |sdd| payments can be processed at once by uploading an XML file containing a batch -of all posted |sdd| payments to your online banking interface. To do so, follow these steps: - -#. :ref:`Create a batch payment ` and include the |sdd| payments to - collect. - - .. tip:: - You can filter payments by SDD scheme using the :guilabel:`SDD CORE` and :guilabel:`SDD B2B` - filters. - -#. :guilabel:`Validate` the batch payment. The XML file is generated automatically and available - for download in the chatter. -#. Download the XML file and upload it to your online banking interface to process the payments. -#. Once the |sdd| batch payment has been received, :doc:`reconcile the transaction - <../bank/reconciliation>` with the batch payment to mark the related invoices as - :guilabel:`Paid`. - -.. tip:: - To view the payments and invoices linked to a specific |sdd| mandate, click the - :guilabel:`Collections` and :guilabel:`Invoices Paid` smart button on the :ref:`Direct Debit - Mandate ` form. - -.. note:: - The files generated by Odoo follow the SEPA Direct Debit **PAIN.008.001.02** specifications, as - required by the SEPA customer-to-bank `implementation guidelines - `_, - which ensures compatibility with the banks. - -.. seealso:: - - :doc:`batch` - - :doc:`SEPA Direct Debit for online payments <../../payment_providers/sdd>` - - `SEPA guidelines - `_ - -|sdd| rejections -================ - -|sdd| rejections can occur for several reasons, the most common being insufficient funds in the -customer's account. With |sdd|, the recipient's account is credited before the funds are actually -debited from the customer's account. As a result, if an |sdd| payment is later rejected, the bank -automatically withdraws the amount of that payment from the recipient's account, and a new -transaction for a negative amount is created to reflect the |sdd| rejection. - -In this case, you must reverse the journal entry associated with the rejected payment and reconcile -the reversal of the journal entry with the transaction for the |sdd| rejection. To do so, follow -these steps: - -#. Access the invoice linked to the rejected |sdd| payment. -#. Click the :icon:`fa-info-circle` :guilabel:`(information)` icon in the footer of the - :guilabel:`Invoice Lines` tab, then click :guilabel:`View` to access the payment associated with - the invoice. -#. Click the :guilabel:`Journal entry` smart button to access the related journal entry. -#. Click :guilabel:`Reverse entry`, optionally edit the fields in the popup, then click - :guilabel:`Reverse`. A reversal entry is created with a :guilabel:`Reference` mentioning the - initial journal entry. As a result, the invoice is marked as :guilabel:`Not paid`. -#. :ref:`Access the bank journal's reconciliation view ` and - :ref:`reconcile ` the transaction created for the |sdd| - rejection with the reversal of the entry related to the payment. diff --git a/content/applications/finance/accounting/payments/trusted_accounts.rst b/content/applications/finance/accounting/payments/customer_vendor_bank_accounts.rst similarity index 64% rename from content/applications/finance/accounting/payments/trusted_accounts.rst rename to content/applications/finance/accounting/payments/customer_vendor_bank_accounts.rst index 99290fb957a..5e20d720454 100644 --- a/content/applications/finance/accounting/payments/trusted_accounts.rst +++ b/content/applications/finance/accounting/payments/customer_vendor_bank_accounts.rst @@ -1,18 +1,32 @@ -============================= -Trusted accounts (send money) -============================= +================================= +Customer and vendor bank accounts +================================= -To protect users from sending money to scammers, vendor bank account numbers must be marked as -trusted before you can use them to make an outgoing payment. +Odoo stores your :doc:`contacts' <../../../essentials/contacts>` banking details on their profile, +automatically filling out banking-related fields for all Odoo operations related to these contacts. +By default, it also protects you from :ref:`phishing scams +` by preventing any outgoing wire transfer until +the contact's bank account is marked as 'trusted'. -To do so, open the vendor bank account and click on the :guilabel:`Send Money` toggle switch button. +.. seealso:: + - :doc:`sepa_payments` -.. image:: trusted_accounts/send-money-toggle.png - :align: center - :alt: Example of a vendor bank account with the "Send Money" toggle button switched to "trusted." +.. _accounting/customer-vendor-bank-accounts/configuration: + +Configuration +============= + +To link a bank account to a contact, open an Odoo app with access to contacts (e.g., **Accounting** +or **Contacts** app), choose a contact, then go to the :guilabel:`Accounting` tab. In +:guilabel:`Bank Accounts`, click :guilabel:`Add a line` and fill in :guilabel:`Account Number`, +:guilabel:`Bank`, :guilabel:`Account Holder Name`, :guilabel:`Account Holder`, and, if needed, +:guilabel:`Company` and :guilabel:`Currency`. Toggle :guilabel:`Send Money` to mark the account as +'trusted'. .. note:: - All accounts are initially marked as untrusted. + By default, all accounts start as 'untrusted'. + +.. _accounting/customer-vendor-bank-accounts/phishing: Phishing attacks ================ diff --git a/content/applications/finance/accounting/payments/forecast.rst b/content/applications/finance/accounting/payments/forecast.rst deleted file mode 100644 index 5a3f1dc9806..00000000000 --- a/content/applications/finance/accounting/payments/forecast.rst +++ /dev/null @@ -1,48 +0,0 @@ -============================ -Forecast future bills to pay -============================ - -In Odoo, you can manage payments by setting automatic **Payments Terms** and **follow-ups**. - -Configuration: payment terms -============================ - -In order to track vendor conditions, we use **Payment Terms** in Odoo. They allow keeping track of -due dates on invoices. Examples of **Payment Terms** are: - -- 50% within 30 days -- 50% within 45 days - -To create them, go to :menuselection:`Accounting --> Configuration --> Invoicing: Payment Terms` and -click on :guilabel:`Create` to add new terms or click existing ones to modify them. - -.. seealso:: - `Odoo Tutorials: Payment Terms - `_ - -Once **Payment Terms** are defined, you can assign them to your vendor by default. To do so, go to -:menuselection:`Vendors --> Vendors`, select a vendor, click the :guilabel:`Sales & Purchase` tab, -and select a specific **Payment Term**. This way, every time you purchase from this vendor, Odoo -automatically proposes the chosen Payment Term. - -.. note:: - If you do not set a specific Payment Term on a vendor, you can still set one on the vendor bill. - -Forecast bills to pay with the aged payable report -================================================== - -To track amounts to be paid to the vendors, use the **Aged Payable** report. To access it, go to -:menuselection:`Accounting --> Reporting --> Partner Reports: Aged Payable`. This report gives you a -summary per vendor of the amounts to pay, compared to their due date (the due date being computed on -each bill using the terms). This report tells you how much you will have to pay within the following -months. - -Select bills to pay -=================== - -You can get a list of all your vendor bills by going to :menuselection:`Vendors --> Bills`. To view -only the bills that you need to pay, click :menuselection:`Filters --> Bills to Pay`. To view only -overdue payments, select the :guilabel:`Overdue` filter instead. - -You can also group bills by their due date by clicking :menuselection:`Group By --> Due Date` and -selecting a time period. diff --git a/content/applications/finance/accounting/payments/pay_sepa.rst b/content/applications/finance/accounting/payments/pay_sepa.rst deleted file mode 100644 index 5b9e9155fe9..00000000000 --- a/content/applications/finance/accounting/payments/pay_sepa.rst +++ /dev/null @@ -1,87 +0,0 @@ -============= -Pay with SEPA -============= - -SEPA, the Single Euro Payments Area, is a payment-integration initiative of the European Union to -simplify bank transfers denominated in euros. SEPA allows you to send payment orders to your -bank to automate bank wire transfers. - -SEPA is supported by the banks of the 27 EU member states, as well as: - -EFTA countries: - -- Iceland; -- Liechtenstein; -- Norway; -- Switzerland. - -Non-EEA SEPA countries: - -- Andorra; -- Monaco; -- San Marino; -- United Kingdom; -- Vatican City State. - -Non-EEA territories: - -- Saint-Pierre-et-Miquelon; -- Guernsey; -- Jersey; -- Isle of Man. - -When paying a bill in Odoo, you can select SEPA mandates as a payment option. At the end of the day, -you can generate the SEPA file containing all bank wire transfers and upload it to your online -banking interface to process the payments. - -By default, the file follows the SEPA Credit Transfer **'pain.001.001.03'** specifications. This is -a well-defined standard among banks. However, for Swiss and German companies, other formats are used -**'pain.001.001.03.ch.02'** for Switzerland and **'pain.001.003.03'** for Germany. - -Once the payments are processed by your bank, you can directly import the account statement in -Odoo. The bank reconciliation process will seamlessly match the SEPA orders you sent to your bank -with actual bank statements. - -Configuration -============= - -Activate SEPA Credit Transfer (SCT) ------------------------------------ - -To pay suppliers with SEPA, you must activate the **SEPA Credit Transfer** setting. To do so, go to -:menuselection:`Accounting --> Configuration --> Settings --> Vendor Payments: SEPA Credit Transfer -(SCT)`. By activating the setting and filling out your company data, you will be able to use the -SCT option when paying your vendor. - -.. note:: - According to the localization package installed, the **SEPA Direct Debit** and **SEPA Credit - Transfer** modules may be installed by default. If not, they need to be :ref:`installed `. - -Activate SEPA payment methods on banks --------------------------------------- - -From the accounting dashboard, click on the drop-down menu (:guilabel:`⋮`) on your bank journal and -select :guilabel:`Configuration`. Click the :guilabel:`Outgoing Payments` tab, and, if not already -present, add :guilabel:`SEPA Credit Transfer` under :guilabel:`Payment Method`. - -Make sure to specify the IBAN account number (domestic account numbers do not work with SEPA) and -the BIC (bank identifier code) in the :guilabel:`Journal Entries` tab. - -Registering payments --------------------- - -You can register any vendor payments made with SEPA. To do so, go to :menuselection:`Accounting --> -Vendors --> Payments`. When creating your payment, select :guilabel:`SEPA Credit Transfer` as the -:guilabel:`Payment Method`. - -The first time you pay a vendor with SEPA, you have to fill in the :guilabel:`Recipient Bank -Account` field with the bank name, IBAN, and BIC (Bank Identifier Code). Odoo automatically verifies -if the IBAN format is respected. - -For future payments to this vendor, Odoo will automatically suggest you the bank account, but it -remains possible to select a new one. - -Once your payment is registered, do not forget to confirm it. You can also pay vendor bills from the -bill directly using the :guilabel:`Register Payment` button at the top of a vendor bill. -The form is the same, but the payment is directly linked to the bill and will be automatically -reconciled with it. diff --git a/content/applications/finance/accounting/payments/sepa_payments.rst b/content/applications/finance/accounting/payments/sepa_payments.rst new file mode 100644 index 00000000000..cdfd08171ab --- /dev/null +++ b/content/applications/finance/accounting/payments/sepa_payments.rst @@ -0,0 +1,256 @@ +============= +SEPA payments +============= + +:abbr:`SEPA (Single Euro Payments Area)` is a payment integration initiative of the European Union +that facilitates standardized, simplified electronic payments in euros across SEPA countries. + +With :ref:`SEPA Direct Debit (SDD) `, customers sign a mandate that +authorizes you to collect future payments from their bank accounts. This is particularly useful for +recurring :doc:`subscription ` payments. You can keep records of +these mandates in Odoo and :ref:`generate XML files ` indicating to +the bank which payments to collect from customers. + +Unlike :abbr:`SDD (SEPA Direct Debit)`, :ref:`SCT (SEPA Credit Transfer) +` is an outgoing payment method where you "push" funds to a recipient. +It is the standard for handling vendor bills, employee salaries, and one-off transfers. These +payments can also be grouped into a :ref:`single XML file ` to upload +to your bank. + +.. note:: + - `List of all SEPA countries + `_. + - If your company is located in the :abbr:`EFTA (European Free Trade Assocation)` region, a + :abbr:`non-EEA (non-European Economic Area)` SEPA country, or a + :abbr:`non-EEA (non-European Economic Area)` SEPA territory, consult the :ref:`ISO20022 + ` section. + - According to the localization package installed, the **SEPA Direct Debit** and **SEPA Credit + Transfer** modules may be installed by default. If not, they need to be + :ref:`installed `. + +.. seealso:: + - :doc:`customer_vendor_bank_accounts` + +.. _accounting/sepa_payments/sdd: + +SEPA Direct Debit +================= + +.. _accounting/sepa_payments/sdd_configuration: + +Configuration +------------- + +Creditor identifier +~~~~~~~~~~~~~~~~~~~ + +To enable SDD for customer payments, go to :menuselection:`Accounting --> Configuration --> +Settings`, scroll to the :guilabel:`Customer Payments` section, enable :guilabel:`SEPA Direct Debit +(SDD)`, and click :guilabel:`Save`. Then, scroll to the :guilabel:`Customer Payments` section again, +set the company's :guilabel:`Creditor Identifier`, and click :guilabel:`Save`. + +.. tip:: + The creditor identifier is provided by your bank or the authority responsible for delivering + them in your country. For testing purposes, you can use the test creditor identifier + `DE98ZZZ09999999999`. + +PAIN file version +~~~~~~~~~~~~~~~~~ + +By default, the :ref:`SEPA-compliant XML files ` generated by Odoo use +the **PAIN.008.001.02** format. If your bank requires the updated 2023 version, go to +:menuselection:`Accounting --> Configuration --> Journals`. Open your :guilabel:`Bank` journal, and +in the :guilabel:`Incoming Payments` tab, set the :guilabel:`SEPA Pain version` field to +:guilabel:`Updated 2023 (Pain 008.001.08)`. + +.. _accounting/sepa_payments/sdd_mandates: + +Mandates +-------- + +An SDD mandate is a legal document authorizing a company to debit funds from a customer's bank +account. It includes key information, such as the customer's name and IBAN, the mandate's start and +end date, and the mandate's unique identifier. The mandate form must be filled in and signed by the +customer. + +Creating mandates +~~~~~~~~~~~~~~~~~ + +#. In the **Accounting** app, go to :menuselection:`Customers --> Direct Debit Mandates`. +#. Click :guilabel:`New` and fill out the fields. +#. Click :guilabel:`Print` to generate a PDF of the mandate form, then send it to the customer for + signature. +#. Click :guilabel:`Validate` to activate the mandate. + +.. important:: + A valid IBAN must be defined in the :guilabel:`Account Number` field of the :doc:`bank journal + <../bank>` used to receive SDD payments for the mandate. + +.. tip:: + - To print the mandate form after the mandate has been validated, click the :icon:`fa-cog` + (:guilabel:`gear`) icon, then select :guilabel:`Mandate form`. + - The :guilabel:`SDD Scheme` depends on the type of customer: Select :guilabel:`CORE` for B2C + customers and :guilabel:`B2B` for B2B customers. + - SDD mandates are created automatically for :doc:`online payments made with SDD + <../../payment_providers/sdd>`. + +Once an SDD mandate is active, subsequent SDD payments can be generated via Odoo and :ref:`uploaded +to your online banking interface `. Customers with an active SDD +mandate can also use this payment method for :doc:`online purchases <../../payment_providers/sdd>`. + +.. _accounting/sepa_payments/close-revoke-mandate: + +Closing or revoking a mandate +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +SDD mandates are closed automatically after their :guilabel:`End Date`. If this field is left empty, +the mandate remains active until it is closed or revoked. To close or revoke a mandate, go to +:menuselection:`Accounting --> Customers --> Direct Debit Mandates`, select the relevant mandate, +and click :guilabel:`Close` or :guilabel:`Revoke`. + +**Closing** a mandate updates the mandate's end day to the current day. Invoices issued after the +present day will not be processed with an SDD payment. **Revoking** a mandate disables the mandate +immediately. No SDD payment can be registered anymore, regardless of the invoice's date. However, +payments that have already been registered are still included in the next :ref:`SDD XML file +`. + +.. warning:: + - Mandates are automatically closed 36 months after the date of the last collection. + - Closed or revoked mandates cannot be reactivated. + +.. _accounting/sepa_payments/XML: + +Processing SDD payments +----------------------- + +All registered SDD payments can be processed at once by uploading an XML file containing a batch of +all posted SDD payments to your online banking interface. To do so, follow these steps: + +#. :ref:`Create a batch payment ` and include the SDD payments to + collect. + + .. tip:: + You can filter payments by SDD scheme using the :guilabel:`SDD CORE` and :guilabel:`SDD B2B` + filters. + +#. :guilabel:`Validate` the batch payment. The XML file is generated automatically and available + for download in the chatter. +#. Download the XML file and upload it to your online banking interface to process the payments. +#. Once the SDD batch payment has been received, :doc:`reconcile the transaction + <../bank/reconciliation>` with the batch payment to mark the related invoices as + :guilabel:`Paid`. + +.. tip:: + To view the payments and invoices linked to a specific SDD mandate, click the + :guilabel:`Collections` and :guilabel:`Invoices Paid` smart button on the :ref:`Direct Debit + Mandate ` form. + +.. note:: + The files generated by Odoo follow the SDD **PAIN.008.001.02** specifications, as required by the + SEPA customer-to-bank `implementation guidelines `_, + which ensures compatibility with the banks. + +.. seealso:: + - :doc:`batch` + - :doc:`SEPA Direct Debit for online payments <../../payment_providers/sdd>` + - `SEPA guidelines + `_ + +SDD rejections +-------------- + +SDD rejections can occur for several reasons, the most common being insufficient funds in the +customer's account. With SDD the recipient's account is credited before the funds are actually +debited from the customer's account. As a result, if an SDD payment is later rejected, the bank +automatically withdraws the amount of that payment from the recipient's account, and a new +transaction for a negative amount is created to reflect the SDD rejection. + +In this case, you must reverse the journal entry associated with the rejected payment and reconcile +the reversal of the journal entry with the transaction for the SDD rejection. To do so, follow these +steps: + +#. Access the invoice linked to the rejected SDD payment. +#. Click the :icon:`fa-info-circle` :guilabel:`(information)` icon in the footer of the + :guilabel:`Invoice Lines` tab, then click :guilabel:`View` to access the payment associated with + the invoice. +#. Click the :guilabel:`Journal entry` smart button to access the related journal entry. +#. Click :guilabel:`Reverse entry`, optionally edit the fields in the popup, then click + :guilabel:`Reverse`. A reversal entry is created with a :guilabel:`Reference` mentioning the + initial journal entry. As a result, the invoice is marked as :guilabel:`Not paid`. +#. :ref:`Access the bank journal's reconciliation view ` and + :ref:`reconcile ` the transaction created for the + SDD rejection with the reversal of the entry related to the payment. + +.. _accounting/sepa_payments/sct: + +SEPA Credit Transfer +==================== + +.. _accounting/sepa_payments/sct_configuration: + +Configuration +------------- + +Activate SCT +~~~~~~~~~~~~ + +To pay suppliers with SCT, you must activate the **SEPA Credit Transfer** setting. To do so, go to +:menuselection:`Accounting --> Configuration --> Settings --> Vendor Payments: SEPA Credit Transfer +(SCT)`. By activating the setting and filling out your company data, you will be able to use the SCT +option when paying your vendor. + +After activating SEPA, go to :menuselection:`Configuration --> Journals` and open your +:guilabel:`Bank` journal. Under :guilabel:`Outgoing Payments`, add :guilabel:`SEPA Credit Transfer` +as a :guilabel:`Payment Method` if it's not there. This allows Odoo to use this bank account to +generate XML payment files. + +Registering payments +-------------------- + +To register vendor payments made with SCT, first verify that an :guilabel:`Account Number` and +:guilabel:`Bank` are indicated on the vendor's :doc:`contact form <../../../essentials/contacts>`, +under the :guilabel:`Accounting` tab. Odoo automatically verifies if the IBAN format is respected. + +Then, go to :menuselection:`Vendors --> Payments`, and click :guilabel:`New`. When creating your +payment, select :guilabel:`SEPA Credit Transfer` as the :guilabel:`Payment Method`. The +:guilabel:`Vendor Bank Account` is automatically populated based on the :guilabel:`Vendor` selected. +For future payments to this vendor, Odoo will automatically suggest you the bank account, but it +remains possible to select a new one from the dropdown menu by clicking the :guilabel:`Vendor Bank +Account` field. + +Once your payment is registered, do not forget to confirm it. You can also pay vendor bills from the +bill directly using the :guilabel:`Register Payment` button at the top of a vendor bill. The form is +the same, but the payment is directly linked to the bill and will be automatically reconciled with +it. + +.. _accounting/sepa_payments/iso20022: + +ISO20022 +======== + +ISO 20022 is a global standard for the exchange of payment data between banks. It uses a format that +lets payment details and related documents move together as a single package. This means information +such as invoice numbers, tax details, and who sent the payment is stored in fields that computers +can automatically read. SCT payments are a use case of ISO 20022, **limited to the EUR currency**, +which distinguishes them from the ISO 20022 standard. + +Payments labeled as ‘SEPA’ in Odoo effectively use the ISO 20022 format, and are therefore not +restricted to EUR or specific countries. This can incur additional setup for :doc:`some countries +and regions ` wishing to use SCT as a payment method and require a specific, +localized :ref:`PAIN version `. + +.. _accounting/sepa_payments/pain_sct: + +PAIN file version +----------------- + +.. note:: + - ISO20022 **PAIN.001.001.003** is being deprecated in November, 2026. Make sure to use the newer + **PAIN.001.001.09** version. + - To enable a country-specific SEPA PAIN version, first check that you have the :doc:`fiscal + localization <../../../finance/fiscal_localizations>` for your country installed in your + database. + +To select a specific PAIN version, open the **Accounting** app, go to :menuselection:`Configuration +--> Journals`, and open your :guilabel:`Bank` journal. Click the :guilabel:`Outgoing` payments tab, +and select the :guilabel:`SEPA Pain Version` that suits your needs. diff --git a/content/applications/finance/accounting/payments/trusted_accounts/send-money-toggle.png b/content/applications/finance/accounting/payments/trusted_accounts/send-money-toggle.png deleted file mode 100644 index 4ec2f9c201f..00000000000 Binary files a/content/applications/finance/accounting/payments/trusted_accounts/send-money-toggle.png and /dev/null differ diff --git a/content/applications/finance/accounting/vendor_bills.rst b/content/applications/finance/accounting/vendor_bills.rst index 4f2cc4ccd68..7a63b898aaf 100644 --- a/content/applications/finance/accounting/vendor_bills.rst +++ b/content/applications/finance/accounting/vendor_bills.rst @@ -75,7 +75,7 @@ appropriately completed: reference once the payment is registered. - :guilabel:`Recipient Bank`: Indicates the account number to which the payment will be made. This field is required when paying via batch payment files (such as :ref:`NACHA - ` and :doc:`SEPA `). + ` and :doc:`SEPA Direct Debit `). - :guilabel:`Due Date` or :guilabel:`Payment Terms` must be specified for the bill payment. - :guilabel:`Journal`: Select which journal should record the bill and in which :doc:`currency `. diff --git a/content/applications/finance/fiscal_localizations/united_states.rst b/content/applications/finance/fiscal_localizations/united_states.rst index 6943f984ea8..f24132f715c 100644 --- a/content/applications/finance/fiscal_localizations/united_states.rst +++ b/content/applications/finance/fiscal_localizations/united_states.rst @@ -742,4 +742,4 @@ a new |NACHA| |ACH| file. .. seealso:: - :doc:`../accounting/payments/batch` - - :doc:`Europe's direct debiting <../accounting/payments/batch_sdd>` + - :doc:`Europe's direct debiting <../accounting/payments/sepa_payments>` diff --git a/content/applications/finance/payment_providers/sdd.rst b/content/applications/finance/payment_providers/sdd.rst index 1faaf04af32..391a12ee400 100644 --- a/content/applications/finance/payment_providers/sdd.rst +++ b/content/applications/finance/payment_providers/sdd.rst @@ -9,17 +9,17 @@ facilitates standardized and simplified electronic payments in euros across part SEPA Direct Debit (SDD) is a payment provider that allows future payments to be collected from customers' bank accounts based on a signed :ref:`SEPA Direct Debit mandate -`. This is particularly useful for recurring payments based on a +`. This is particularly useful for recurring payments based on a :doc:`subscription `. .. important:: To use the SEPA Direct Debit (SDD) payment provider and create :ref:`SEPA Direct Debit mandates - `: + `: - The invoice being paid must be for an amount in euros. - The :guilabel:`SEPA Direct Deposit (SDD)` feature must be enabled, and the company's :guilabel:`Creditor Identifier` must be defined in the :ref:`Accounting or Invoicing settings - `. + `. .. _sdd/configuration: @@ -61,7 +61,7 @@ Online payments with |sdd| ========================== Customers selecting |sdd| as a payment method are prompted to enter their IBAN to complete the -:ref:`SEPA Direct Debit mandate `. +:ref:`SEPA Direct Debit mandate `. The |sdd| mandate is then automatically created in :guilabel:`Draft` based on the provided IBAN. To validate the information, customers must confirm each new mandate with a successful bank transfer of @@ -70,14 +70,14 @@ the expected amount **using the specified payment reference (communication)** de received and :doc:`reconciled <../accounting/bank/reconciliation>`, the mandate is automatically validated and updated to the :guilabel:`Active` status. Once a mandate is active, it is reused for all subsequent payments made with the |sdd| payment method. You can then collect them by -:ref:`uploading them to your online banking interface `. +:ref:`uploading them to your online banking interface `. .. seealso:: - :doc:`../accounting/payments/batch_sdd` + :doc:`../accounting/payments/sepa_payments` .. note:: - - Mandates are automatically :ref:`closed ` 36 months - after the date of the last collection. + - Mandates are automatically :ref:`closed ` 36 + months after the date of the last collection. - |sdd| is also available as a payment method through other providers, such as :doc:`adyen`, :doc:`buckaroo`, and :doc:`stripe`. In these cases, |sdd| mandates are handled externally by the payment provider. diff --git a/redirects/17.0.txt b/redirects/17.0.txt index 1d269e22cbf..b59adca839d 100644 --- a/redirects/17.0.txt +++ b/redirects/17.0.txt @@ -161,5 +161,9 @@ applications/websites/ecommerce/ecommerce_management.rst applications/websites/e applications/finance/accounting/get_started/vat_units.rst applications/finance/accounting/get_started/tax_units.rst # vat_units --> tax_units applications/finance/accounting/payments/online/install_portal_patch.rst applications/finance/accounting/payments/online.rst # deleted; no longer necessary # contributing/documentation +applications/finance/accounting/payments/pay_sepa.rst applications/finance/accounting/payments/sepa_payments.rst +applications/finance/accounting/payments/batch_sdd.rst applications/finance/accounting/payments/sepa_payments.rst +applications/finance/accounting/payments/trusted_accounts.rst applications/finance/accounting/payments/customer_vendor_bank_accounts.rst +applications/finance/accounting/payments/forecast.rst applications/finance/accounting/payments.rst #deleted; no longer necessary contributing/documentation/rst_cheat_sheet.rst contributing/documentation/rst_guidelines.rst