SEPA payments

SEPA is a payment integration initiative of the European Union that facilitates standardized, simplified electronic payments in euro across SEPA 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 subscription payments. You can keep records of these mandates in Odoo and generate XML files indicating to the bank which payments to collect from customers.

Unlike SDD, SEPA Credit Transfer (SCT) 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 single XML file to upload to your bank.

Note

  • List of all SEPA countries.

  • Depending on the localization package installed, the SEPA Direct Debit and SEPA Credit Transfer modules may be installed by default. If not, they need to be installed.

Important

SDD and SCT payment methods are only valid for transactions in EUR currency. If your company is located in the EFTA region, a non-EEA SEPA country, or a non-EEA SEPA territory, consult the ISO20022 section.

See also

Batch payments

SEPA Direct Debit

Configuration

To enable SDD for customer payments, go to Accounting ‣ Configuration ‣ Settings, scroll to the Customer Payments section, enable SEPA Direct Debit (SDD), and click Save. Then, scroll to the Customer Payments section again, set the company’s Creditor Identifier, and click Save.

Tip

The creditor identifier is provided by your bank or the authority responsible for delivering it in your country. For testing purposes, you can use the test creditor identifier DE98ZZZ09999999999.

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 Customers ‣ Direct Debit Mandates, and click New.

  1. Fill out:

    • Account Number: a valid IBAN must be defined in the bank journal used to receive SDD payments for the mandate.

    • SDD Scheme depends on the type of customer. Select CORE for B2C customers and B2B for B2B customers.

    • End Date: select a date after which the mandate is closed automatically. If this is left empty, the mandate remains active until it closed or revoked.

    Note

    The B2B scheme is an optional scheme, offered exclusively to business payers. Some banks or businesses might not accept B2B SDD.

  2. Click Print to generate a PDF of the mandate form, then send it to the customer for signature.

  3. Click Validate to activate the mandate.

Tip

  • To print the mandate form after the mandate has been validated, click the (gear) icon, then select Mandate form.

Once an SDD mandate is active, subsequent SDD payments can be generated via Odoo and uploaded to your online banking interface. Customers with an active SDD mandate can also use this payment method for online purchases.

Closing or revoking a mandate

To close or revoke a mandate, go to Accounting ‣ Customers ‣ Direct Debit Mandates, select the relevant mandate, and click Close or 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 immediately disables it. 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 SDD XML file.

Warning

  • Mandates are automatically closed 36 months after the date of the last collection.

  • Closed or revoked mandates cannot be reactivated.

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:

  1. Create a batch payment and include the SDD payments to collect.

    Tip

    You can filter payments by SDD scheme using the SDD CORE and SDD B2B filters.

  2. Validate the batch payment. The XML file is generated automatically and available for download in the chatter.

  3. Download the XML file and upload it to your online banking interface to process the payments.

  4. Once the SDD batch payment has been received, reconcile the transaction with the batch payment to mark the related invoices as Paid.

Tip

To view the payments and invoices linked to a specific SDD mandate, click the Collections and Invoices Paid smart button on the Direct Debit Mandate form.

Note

The files generated by Odoo comply with the SDD PAIN.008.001.02 specifications, as required by the SEPA customer-to-bank implementation guidelines, which ensures compatibility with banks.

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:

  1. Access the invoice linked to the rejected SDD payment.

  2. Click the (information) icon in the footer of the Invoice Lines tab, then click View to access the payment associated with the invoice.

  3. Click the Journal entry smart button to access the related journal entry.

  4. Click Reverse entry, optionally edit the fields in the popup, then click Reverse. A reversal entry is created with a Reference mentioning the initial journal entry. As a result, the invoice is marked as Not paid.

  5. Access the bank journal’s reconciliation view and reconcile the transaction created for the SDD rejection with the reversal of the entry related to the payment.

SEPA Credit Transfer

Configuration

To pay suppliers with SCT, from the Accounting app, go to Configuration ‣ Settings. Under :guilabel:`Vendor Payments, activate SEPA Credit Transfer (SCT). Next, fill out your company data:

  • Your Company: The name of the company to use SCT.

  • Name Identification: The tax ID of the related company.

  • Issuer: The name of the entity that issued the tax ID.

After activating SEPA, go to Configuration ‣ Journals and open your Bank journal. Under Outgoing Payments, add SEPA Credit Transfer as a 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 Account Number and Bank are indicated on the vendor’s contact form, under the Accounting tab. Odoo automatically verifies if the IBAN format is respected.

Then, go to Vendors ‣ Payments, and click New. When creating your payment, select SEPA Credit Transfer as the Payment Method. The Vendor Bank Account is automatically populated based on the Vendor selected. For future payments to this vendor, Odoo will automatically suggest the bank account, but it remains possible to select a new one from the dropdown menu by clicking the 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 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.

ISO 20022

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. Unlike SEPA, the ISO 20022 standard can be used with any currency worldwide.

In Odoo, the SEPA Payments module acts as the underlying engine for all ISO 20022 transactions (both domestic SEPA payments in euros and non-euro global transfers are supported by the module).

Some countries and regions may use a localized, country-specific version of ISO 20022, which requires additional configuration. In these cases, we strongly recommend reading the PAIN version section of this page.

PAIN version

Note

  • PAIN is the specific message protocol within ISO 20022 used to send transfer instructions from Odoo to your bank.

  • To enable a country-specific PAIN version, first check that you have the fiscal localization for your country installed in your database.

Important

  • ISO 20022 PAIN.001.001.03 is being deprecated in November 2026. Make sure to use the newer PAIN.001.001.09 version or the one required in your country.

To select a specific PAIN version, open the Accounting app, go to Configuration ‣ Journals, and open your Bank journal. Click the Outgoing Payments tab, and select the SEPA Pain Version that suits your needs.

Reminder

The SEPA payments module covers both SEPA payments and ISO 20022 payments.

Export XML files

To generate a daily XML payment file for upload to the online banking interface, create a batch payment. The XML file is then displayed in the chatter, where it can be downloaded and submitted to the bank for processing.

By default, the SEPA-compliant XML files generated by Odoo use the PAIN.008.001.02 format. If your bank requires the updated 2023 version, go to Accounting ‣ Configuration ‣ Journals. Open your Bank journal, and in the Incoming Payments tab, set the SEPA Pain version field to Updated 2023 (Pain 008.001.08).