joonis Logo

FinTech package for Python (SEPA, EBICS & more)

The Python FinTech library provides all the functionality that is required to work with EBICS, SEPA and other financial technologies. It offers the possibility to manage all of the everyday commercial banking activities such as credit transfers, direct debits or the retrieval of bank account statements in a flexible and secure manner.

Features

  • Obtain bank account statements (incl. CAMT and MT940 parser)
  • Create and submit SEPA credit transfers (SCT/pain.001)
  • Create and submit SEPA direct debits of type CORE, COR1 or B2B (SDD/pain.008)
  • Mostly full SEPA support
  • Automatic calculation of the lead time based on holidays and cut-off times
  • Integrated mandate manager (optionally usable)
  • Plausibility check of IBAN and BIC
  • Validation of payment orders against the SEPA Clearing Directory of the German Central Bank
  • Bankcode/Account to IBAN converter according to the rules of the German Central Bank
  • Currency converter
  • DATEV converter (KNE)

The programming interface has been realised as simple as possible but also as flexible as necessary.

All modules can be used free of charge. Only the unlicensed version of the EBICS client has few restrictions:

  • The upload of SEPA documents is limited to a maximum of five transactions.
  • Bank account statements can not be retrieved for the last three days.
  • The functionality of distributed signatures (VEU) is disabled.
Protocol versions
  • EBICS 2.5 (H004)
  • EBICS 2.4 (H003)

Supported key versions: A006, A005, X002, E002

A key management based on certificates is also possible. Certificates are required in some countries (eg. France).

Example

import fintech
fintech.register()
from fintech.ebics import EbicsKeyRing, EbicsBank, EbicsUser, EbicsClient

keyring = EbicsKeyRing(keys='~/mykeys', passphrase='mysecret')
bank = EbicsBank(keyring=keyring, hostid='MYBANK', url='https://www.mybank.de/ebics')
user = EbicsUser(keyring=keyring, partnerid='CUSTOMER123', userid='USER1')
# Create new keys for this user
user.create_keys(keyversion='A006', bitlength=2048)

client = EbicsClient(bank, user)
# Send the public electronic signature key to the bank.
client.INI()
# Send the public authentication and encryption keys to the bank.
client.HIA()

# Create an INI-letter which must be printed and sent to the bank.
user.create_ini_letter(bankname='MyBank AG', path='~/ini_letter.pdf')

# After the account has been activated the public bank keys
# must be downloaded and checked for consistency.
print client.HPB()

# Finally the bank keys must be activated.
bank.activate_keys()

# Retrieve bank account statements (MT940 format)
sheet = client.STA(
    start='2014-02-01',
    end='2014-02-07',
    )

Can I
  help you?


Just drop me a line at
giraffe@joonis.de