EBICS Banking Protocol

Exchange files directly with your banks from Odoo, with no portal and nobody logging in.

EBICS, the Electronic Banking Internet Communication Standard, is the channel European banks open to companies that want their software to talk to the bank. Bank statements are downloaded on a schedule and payment files are uploaded from Odoo, authenticated by your own cryptographic keys instead of a login page.

This module implements that protocol in Odoo. It is developed and maintained by Noviat, and follows each new version of Odoo, which matters when a bank connection has to survive your next migration.

If you are still working out whether EBICS is the right channel for you, we explain it without the jargon, with screen recordings of the flow in Odoo, on noviat.com/ebics.

Statements come down as camt.053 or camt.052 files, payment files go up as pain.001 or pain.008, and your keys stay on your own server

What you get

EBICS 2.4, EBICS 2.5 and EBICS 3.0 are supported. EBICS 3.0, the current specification since December 2022, names what is exchanged with BTF instead of the country-specific order type codes of EBICS 2.x. Many banks still run 2.4 or 2.5 in parallel.

Which banks

Any bank that publishes an EBICS access point can be connected. The standard is maintained by EBICS SC, a company held by the German, French, Swiss and Austrian banking bodies (DK, CFONB, SIX and PSA), and it is the standard corporate channel in those countries.

To check a specific bank before you start, joonis publishes a public directory at joonis.de/en/fintech/banks. Enter a BIC and it returns the SEPA services the bank offers, the EBICS versions it supports and its Host-ID.

A bank missing from that directory is not a no: it is joonis' own list, not an official register. Ask your bank whether it publishes an EBICS access point.

What it costs

This module is free software, published under LGPL-3. There is no licence fee, no subscription and no per-connection charge from Noviat.

It does however rely on the fintech library from joonis, and that library requires a commercial licence for production use: as soon as you upload SEPA files with more than five transactions, retrieve statements older than the last three days, or use the distributed signature. The licence is contracted directly with joonis, not with Noviat.

joonis charges a one-off setup fee plus a monthly fee per EBICS user id. Current pricing is published on joonis.de.

Your bank may also charge a subscription for the EBICS channel itself. It varies from one bank to another and is billed by the bank, separately from anything on the Odoo side.

Requirements

The module depends on two Python libraries:

Because the connection needs a Python library and your key files on the server, it runs on Odoo.sh or on an on-premise installation.

The EBICS test mode for uploads requires fintech 4.3.4 or higher for EBICS 2.x and fintech 7.2.7 or higher for EBICS 3.0. SWIFT 3SKey support requires fintech 6.4 or higher.

Fintech licence

With a fintech licence, add its parameters to the [options] section of the Odoo server configuration file:

  • fintech_register_name: the name of the licensee;
  • fintech_register_keycode: the keycode of the licensed version.

Example:

; fintech
fintech_register_name = MyCompany
fintech_register_keycode = AB1CD-E2FG-3H-IJ4K-5L

Companion modules

From this repository:

To process the downloaded statements, install the module of each format you receive:

Recommended with several financial journals: account_usability (OCA/account-financial-tools), which adds accounting menus such as a list of all bank statements, including those downloaded by the scheduled import.

Getting your bank online

The configuration on the Odoo side takes fifteen to thirty minutes. What sets the pace of a project is the bank, and it is almost never for a technical reason:

Count in weeks per bank rather than days, and start the contract and the paperwork early.

Configuration

Who may configure. In Settings > Users, add the users who maintain the EBICS configuration to the EBICS Manager group.

File formats. In Accounting > Configuration > EBICS > EBICS File Formats, check that the formats you exchange with your banks are defined; the common ones are created at installation. A missing format can be reported on GitHub.

A download format can carry a Download Process Method, run by the Process button of a downloaded file: camt.053, camt.052, camt.054, cfonb120 and pain.002 (the payment status report returned by the bank). Each needs the module of its format (see Companion modules); Odoo tells you which one when it is missing.

Bank connections. In Accounting > Configuration > EBICS > EBICS Configuration, create one connection per bank contract, with the identifiers your bank sent you.

A downloaded camt.053 statement file in Odoo, before processing

Usage

The EBICS Processing menu of the accounting application lists the downloaded and uploaded files, and offers manual downloads and uploads. With Odoo Enterprise it sits under Accounting > Accounting.

Downloaded files are processed into bank statements. Uploads are launched from the payment batch or the payment order: the file, its format and the order type come from the configuration, not from the person clicking.

Uploading a pain.001 SEPA credit transfer file over EBICS 3.0, with the test mode option

Diagnostics

To diagnose the connection with your bank, add this line to the Odoo server configuration file:

log_handler = fintech.ebics:DEBUG

EBICS return codes

During an upload or a download, your bank may return an error code, for example:

EBICS Functional Error:
EBICS_NO_DOWNLOAD_DATA_AVAILABLE (code: 90005)

The codes are explained on ebics.org and in the doc folder of this module (EBICS_Annex1_ReturnCodes).

Electronic Distributed Signature (EDS)

Where your bank supports EBICS T, Odoo prepares the file and holds no signing credentials at all: the payment is approved in your own signing application, which is what a segregation of duties policy usually demands. Where it does not, which happens with German and Swiss banks, the signing key sits on your Odoo server, and you can protect it with a separate signature passphrase that is never stored and is asked for every signed transaction.

External signing apps include BankingVEU (Android, iOS).

Roadmap

Issues and pull requests are welcome on GitHub.

Credits

This module is developed and maintained by Noviat, Odoo integrator in Belgium, specialised in accounting and finance since 2009.

We implement it, we configure the connection with your banks and we support you through the first cycles. If you want help getting a bank online, tell us which banks you use: https://www.noviat.com/ebics