mirror of
https://github.com/brain-tec/account_ebics.git
synced 2026-10-17 16:29:06 +00:00
[IMP] account_ebics - rework readme
This commit is contained in:
1 parent
f0a3fc944a
commit
16e5df2d4e
36 files changed
+654
-2302
No files matched your search
+189
-149
@@ -1,219 +1,259 @@
|
||||
.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png
|
||||
:target: https://www.gnu.org/licenses/lgpl
|
||||
:alt: License: LGPL-3
|
||||
|
||||
======================
|
||||
EBICS banking protocol
|
||||
EBICS Banking Protocol
|
||||
======================
|
||||
|
||||
Implementation of the EBICS banking protocol.
|
||||
**Exchange files directly with your banks from Odoo, with no portal and nobody logging in.**
|
||||
|
||||
This module facilitates the exchange of files with banks via the EBICS protocol.
|
||||
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.
|
||||
|
||||
Installation
|
||||
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 <https://www.noviat.com/ebics>`_.
|
||||
|
||||
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/19.0/account_ebics/static/description/ebics_flow.png
|
||||
:alt: 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
|
||||
:width: 100%
|
||||
|
||||
What you get
|
||||
============
|
||||
|
||||
The module depends upon
|
||||
- **Statements that arrive on their own.** A scheduled task collects the files your bank
|
||||
publishes, for every account, and processes them into bank statements.
|
||||
- **Payments that leave the same way.** A payment batch or a payment order is uploaded to
|
||||
the bank in the format the bank expects, without exporting a file and re-uploading it
|
||||
somewhere else.
|
||||
- **Several companies, one connection.** Keys are held per bank rather than per company:
|
||||
when fifteen entities bank with the same institution, the bank sends a single daily file
|
||||
carrying fifteen statements and the module puts each statement in the right company.
|
||||
- **No bank credentials in Odoo.** The connection uses your own company keys, generated on
|
||||
your side and kept on your server. Access to the EBICS configuration is a permission of
|
||||
its own ('EBICS Manager'), separate from ordinary accounting rights.
|
||||
- **A test mode, where your bank offers one.** French banks accept a test flag, so a file
|
||||
can be submitted and validated before anything is switched to production. German and
|
||||
Swiss banks generally do not: there the first payment is a real one, kept small and sent
|
||||
to an account you control.
|
||||
- **A trace of every exchange.** Each download and each upload is a record, with the file
|
||||
it carried, the moment it happened and the user behind it.
|
||||
|
||||
- https://pypi.python.org/pypi/fintech
|
||||
- https://pypi.python.org/pypi/cryptography
|
||||
**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.
|
||||
|
||||
Remark:
|
||||
What travels over the link
|
||||
==========================
|
||||
|
||||
The EBICS 'Test Mode' for uploading orders requires fintech 4.3.4 or higher for EBICS 2.x
|
||||
and fintech 7.2.7 or higher for EBICS 3.0.
|
||||
- **Coming in:** camt.053 for the end of day statement, camt.052 for intraday movements
|
||||
where the bank offers them, and national formats such as the French CFONB.
|
||||
- **Going out:** pain.001 for credit transfers and pain.008 for direct debits, generated by
|
||||
Odoo from your payment batches.
|
||||
|
||||
SWIFT 3SKey support requires fintech 6.4 or higher.
|
||||
We do not process MT940 statements: the format carries bank and country specific variations,
|
||||
and the Odoo community stopped maintaining a general parser for it after Odoo 10. Where a
|
||||
bank publishes camt.053 alongside it, which is now the usual case, that is the format to use.
|
||||
|
||||
|
|
||||
Which banks
|
||||
===========
|
||||
|
||||
We also recommend to consider the installation of the following modules:
|
||||
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 <https://www.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.
|
||||
|
||||
- account_ebics_oe
|
||||
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.
|
||||
|
||||
Required if you are running Odoo Enterprise
|
||||
What it costs
|
||||
=============
|
||||
|
||||
Cf. https://github.com/Noviat/account_ebics
|
||||
**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 <https://pypi.python.org/pypi/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.
|
||||
|
||||
- account_ebics_batch
|
||||
joonis charges a one-off setup fee plus a monthly fee per EBICS user id. Current pricing is
|
||||
published on
|
||||
`joonis.de <https://www.joonis.de/en/fintech/prices/>`_.
|
||||
|
||||
This module adds a cron job for the automated import of EBICS files.
|
||||
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.
|
||||
|
||||
Cf. https://github.com/Noviat/account_ebics
|
||||
Requirements
|
||||
============
|
||||
|
||||
|
|
||||
The module depends on two Python libraries:
|
||||
|
||||
- account_ebics_batch_payment
|
||||
- `fintech <https://pypi.python.org/pypi/fintech>`_
|
||||
- `cryptography <https://pypi.python.org/pypi/cryptography>`_
|
||||
|
||||
Recommended if you are using the Odoo Enterprise account_batch_payment module
|
||||
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.
|
||||
|
||||
Cf. https://github.com/Noviat/account_ebics
|
||||
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.
|
||||
|
||||
|
|
||||
|
||||
- account_usability
|
||||
|
||||
Recommended if you have multiple financial journals.
|
||||
This module adds a number of accounting menu entries such as bank statement list view
|
||||
which allows to see all statements downloaded via the ir.cron automated EBICS download.
|
||||
|
||||
Cf. https://github.com/OCA/account-financial-tools
|
||||
|
||||
|
|
||||
|
||||
- account_ebics_payment_order
|
||||
|
||||
Required if you are using the OCA account_payment_order module.
|
||||
|
||||
Cf. https://github.com/OCA/bank-payment
|
||||
|
||||
|
|
||||
|
||||
- account_ebics_oca_statement_import
|
||||
|
||||
Required if you are using the OCA Bank Statement import modules.
|
||||
|
||||
https://github.com/OCA/bank-statement-import
|
||||
|
||||
|
|
||||
|
||||
- account_statement_import_fr_cfonb
|
||||
|
||||
Required to handle french CFONB files.
|
||||
|
||||
Cf. https://github.com/OCA/l10n_france
|
||||
|
||||
|
|
||||
|
||||
- account_statement_import_camt
|
||||
|
||||
Required to handle camt.052 and camt.054 files.
|
||||
|
||||
Cf. https://github.com/OCA/bank-statement-import
|
||||
|
||||
|
|
||||
|
||||
|
||||
Fintech license
|
||||
Fintech licence
|
||||
---------------
|
||||
|
||||
If you have a valid fintech.ebics license, you should add the following
|
||||
licensing parameters to the [options] section of the odoo server configuration file:
|
||||
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.
|
||||
|
||||
- fintech_register_name
|
||||
|
||||
The name of the licensee.
|
||||
|
||||
- fintech_register_keycode
|
||||
|
||||
The keycode of the licensed version.
|
||||
|
||||
|
|
||||
| Example:
|
||||
|
|
||||
|
||||
::
|
||||
Example::
|
||||
|
||||
; fintech
|
||||
fintech_register_name = MyCompany
|
||||
fintech_register_keycode = AB1CD-E2FG-3H-IJ4K-5L
|
||||
|
||||
|
|
||||
Companion modules
|
||||
=================
|
||||
|
||||
Cf. https://www.joonis.de/en/fintech/prices/
|
||||
From this repository:
|
||||
|
||||
|
|
||||
- **EBICS - Odoo Enterprise Integration** (``account_ebics_oe``): required on Odoo
|
||||
Enterprise; installed automatically.
|
||||
- **EBICS - Scheduled File Import** (``account_ebics_batch``): downloads and processes the
|
||||
files of every connection on a schedule.
|
||||
- **EBICS - Batch Payments (Odoo Enterprise)** (``account_ebics_batch_payment``): uploads
|
||||
the batch payments of the Odoo Enterprise ``account_batch_payment`` module.
|
||||
- **EBICS - Payment Orders (OCA)** (``account_ebics_payment_order``): uploads the payment
|
||||
orders of the OCA ``account_payment_order`` module
|
||||
(`OCA/bank-payment <https://github.com/OCA/bank-payment>`_).
|
||||
|
||||
To process the downloaded statements, install the module of each format you receive:
|
||||
|
||||
- **camt.053, camt.052 and camt.054**: ``account_statement_import_camt``
|
||||
(`OCA/bank-statement-import <https://github.com/OCA/bank-statement-import>`_). For
|
||||
camt.053, the Odoo Enterprise ``account_bank_statement_import_camt`` works too.
|
||||
- **French CFONB**: ``account_statement_import_fr_cfonb``
|
||||
(`OCA/l10n-france <https://github.com/OCA/l10n-france>`_).
|
||||
|
||||
Recommended with several financial journals: ``account_usability``
|
||||
(`OCA/account-financial-tools <https://github.com/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:
|
||||
|
||||
- **The bank opens the access.** You receive the host ID, the address of the access point,
|
||||
your partner and user identifiers, and a letter carrying the hash values of the bank's keys.
|
||||
- **INI and HIA.** Odoo generates your key pairs for signature, authentication and encryption,
|
||||
sends the public keys to the bank and produces the initialisation letters, which you print,
|
||||
sign and send. The bank compares them by hand with the keys it received online.
|
||||
- **HPB.** Once the bank has activated your access, you retrieve its public keys and compare
|
||||
their hash values with the letter it sent you. That comparison is what makes the channel
|
||||
trustworthy.
|
||||
- **The first exchange.** Statements come down first. Payments follow, as a test file where
|
||||
the bank supports the test flag, otherwise as a real transfer of a small amount.
|
||||
|
||||
Count in weeks per bank rather than days, and start the contract and the paperwork early.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Go to **Settings > Users**
|
||||
**Who may configure.** In *Settings > Users*, add the users who maintain the EBICS
|
||||
configuration to the **EBICS Manager** group.
|
||||
|
||||
Add the users that are authorised to 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 <https://github.com/Noviat/account_ebics/issues>`_.
|
||||
|
||||
|
|
||||
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.
|
||||
|
||||
Go to **Accounting > Configuration > Miscellaneous > EBICS > EBICS File Formats**
|
||||
**Bank connections.** In *Accounting > Configuration > EBICS > EBICS Configuration*, create one
|
||||
connection per bank contract, with the identifiers your bank sent you.
|
||||
|
||||
Check if the EBICS File formats that you want to process in Odoo are defined.
|
||||
|
||||
Most commonly used formats for which support is available in Odoo should be there already.
|
||||
|
||||
Please open an issue on https://github.com/Noviat/account_ebics to report missing EBICS File Formats.
|
||||
|
||||
For File Formats of type 'Downloads' you can also specify a 'Download Process Method'.
|
||||
|
||||
This is the method that will be executed when hitting the 'Process' button on the downloaded file.
|
||||
|
||||
The following methods are currently available:
|
||||
|
||||
- cfonb120
|
||||
- camt.053
|
||||
- camt.052
|
||||
- camt.054
|
||||
|
||||
All these methods require complimentary modules to be installed (cf. Installation section supra).
|
||||
|
||||
You'll get an error message when the required module is not installed on your Odoo instance.
|
||||
|
||||
|
|
||||
|
||||
Go to **Accounting > Configuration > Miscellaneous > EBICS > EBICS Configuration**
|
||||
|
||||
Configure your EBICS configuration according to the contract with your bank.
|
||||
|
||||
|
|
||||
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/19.0/account_ebics/static/description/ebics_download.png
|
||||
:alt: A downloaded camt.053 statement file in Odoo, before processing
|
||||
:width: 100%
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
Go to **Accounting > Bank and Cash > EBICS Processing**
|
||||
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.
|
||||
|
||||
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/19.0/account_ebics/static/description/ebics_upload.png
|
||||
:alt: Uploading a pain.001 SEPA credit transfer file over EBICS 3.0, with the test mode option
|
||||
:width: 100%
|
||||
|
||||
Diagnostics
|
||||
===========
|
||||
|
||||
Add the following to your Odoo config file in order to diagnose
|
||||
issues with the EBICS connection with your bank:
|
||||
To diagnose the connection with your bank, add this line to the Odoo server configuration
|
||||
file::
|
||||
|
||||
log_handler = fintech.ebics:DEBUG
|
||||
log_handler = fintech.ebics:DEBUG
|
||||
|
||||
|
|
||||
|
||||
EBICS Return Codes
|
||||
EBICS return codes
|
||||
------------------
|
||||
|
||||
During the processing of your EBICS upload/download, your bank may return an Error Code, e.g.
|
||||
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)
|
||||
EBICS Functional Error:
|
||||
EBICS_NO_DOWNLOAD_DATA_AVAILABLE (code: 90005)
|
||||
|
||||
A detailed explanation of the codes can be found on http://www.ebics.org.
|
||||
You can also find this information in the doc folder of this module (file EBICS_Annex1_ReturnCodes).
|
||||
|
||||
|
|
||||
The codes are explained on `ebics.org <https://www.ebics.org>`_ and in the ``doc`` folder of
|
||||
this module (``EBICS_Annex1_ReturnCodes``).
|
||||
|
||||
Electronic Distributed Signature (EDS)
|
||||
--------------------------------------
|
||||
|
||||
This is supported via external signing apps, e.g. BankingVEU:
|
||||
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.
|
||||
|
||||
- https://play.google.com/store/apps/details?id=subsembly.bankingveu
|
||||
- https://apps.apple.com/de/app/bankingveu/id1578694190
|
||||
External signing apps include BankingVEU
|
||||
(`Android <https://play.google.com/store/apps/details?id=subsembly.bankingveu>`_,
|
||||
`iOS <https://apps.apple.com/de/app/bankingveu/id1578694190>`_).
|
||||
|
||||
Roadmap
|
||||
=======
|
||||
|
||||
Known Issues / Roadmap
|
||||
======================
|
||||
- Import externally generated keys and certificates (today only the 3SKey signature
|
||||
certificate).
|
||||
- Support the SWIFT 3SKey signing JavaScript library
|
||||
(`SConnect <https://www2.swift.com/3skey/help/sconnect.html>`_).
|
||||
|
||||
- The end user is currently not able to change his passphrases (only the users with 'EBICS Manager' rights can do so).
|
||||
- Add support to import externally generated keys & certificates (currently only 3SKey signature certificate).
|
||||
- Add support for SWIFT 3SKey signing javascript lib (SConnect, cf https://www2.swift.com/3skey/help/sconnect.html).
|
||||
Issues and pull requests are welcome on
|
||||
`GitHub <https://github.com/Noviat/account_ebics>`_.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
This module is developed and maintained by `Noviat <https://www.noviat.com>`_, 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
|
||||
Reference in new issue
Block a user