joonis Logo

Python FinTech Documentation v4.4


The FinTech package is available for Python 2.7 and 3.4+ on PyPI (Python Package Index). Other Python versions or platforms upon request. If you need a solution for other programming languages, have a look at the XML-RPC server.

The FinTech library depends on the following packages:

Pillow is only required if you want to scan SEPA mandates for printed barcodes which hold the mandate reference number.

Which cryptography package to use?

If you don't plan to use the EBICS module, there is no need for a cryptography package at all.

Otherwise you have to decide what cryptography package you want to use. At time PyFinTech supports PyCrypto (PyCryptodome should work as well, but is untested) and cryptography. PyCrypto has been around for a long time and is well tested with PyFinTech. It comes with its own implementation of various cryptographic algorithms and protocols. However, meanwhile the newer cryptography package is mature enough and on a good way to become the de-facto standard for Python. It is based on different third-party libraries, especially OpenSSL.

Generally you should tend to use cryptography. It is easier to install under Windows, although we provide a ready to run setup program for PyCrypto (see below). But there is one limitation on Linux and OS X: If your distribution is based on OpenSSL < 1.0.1, you are not able to use electronic signature keys of version A006. In this case you must either settle for key version A005 or use PyCrypto.

If your EBICS accounts are based on certificates (eg. in France), cryptography is mandatory as well.

Linux / OS X

Install it using pip:

pip install fintech

The kontocheck package must be installed separately if needed.


Install the above-mentioned packages. Executables can be found on the corresponding PyPI sites with the exception of PyCrypto. These installers are listed below for Python 2.6 and 2.7. PyCrypto packages were build against MPIR and therefore include the _fastmath module. Be sure to download the correct installer in terms of the used Python version and bitness. Instead of PyCrypto you can alternatively install cryptography which uses OpenSSL as its backend.

Package registration

The Python FinTech package

fintech.register(name=None, keycode=None, users=None)

Registers the FinTech package.

It is required to call this function once before any submodule can be imported. Without a valid license the functionality is restricted.

  • name – The name of the licensee.
  • keycode – The keycode of the licensed version.
  • users – The licensed EBICS user ids (Teilnehmer-IDs). It must be a string or a list of user ids.
class fintech.LicenseManager(password)

The LicenseManager class

The LicenseManager is used to dynamically add or remove EBICS users to or from the list of licensed users. Please note that the usage is not enabled by default. It is activated upon request only. Users that are licensed this way are verified remotely on each restricted EBICS request. The transfered data is limited to the information which is required to uniquely identify the user.

Initializes a LicenseManager instance.

Parameters:password – The assigned API password.
add_ebics_user(hostid, partnerid, userid)

Adds a new EBICS user to the license.

  • hostid – The HostID of the bank.
  • partnerid – The PartnerID (Kunden-ID).
  • userid – The UserID (Teilnehmer-ID).

Changes the password of the LicenseManager API.

Parameters:password – The new password.

Returns the number of EBICS users that are currently registered.


The expiration date of the license.


The license keycode.


The name of the licensee.

remove_ebics_user(hostid, partnerid, userid)

Removes an existing EBICS user from the license.

  • hostid – The HostID of the bank.
  • partnerid – The PartnerID (Kunden-ID).
  • userid – The UserID (Teilnehmer-ID).

The registered EBICS user ids (client-side).

exception fintech.FintechLicenseError

Exception concerning the license


import fintech
# Register an unlicensed version
# Register a licensed version
fintech.register('LICENSEE_NAME', 'KEYCODE', 'EBICS_USER_ID')

Can I
  help you?

Just drop me a line at