This is a pure-python implementation of FinTS (formerly known as HBCI), a
online-banking protocol commonly supported by German banks.
-
[Read our documentation for more info](https://python-fints.readthedocs.io)
Maintenance Status
------------------
-This project is maintained, but with limited capacity. Working on this is takes a lot of time and testing since all banks do things differently and once you move a part here, you break an unexpected one over there. Therefore: Bugs will only be fixed by me if they occur with a bank where I have an account. New features will only be developed if I need them. PRs will be merged if they either have a very low risk of breaking things elsewhere (e.g. purely adding new commands) or if I can test them. In any case, things might take a little time until I have the bandwidth to focus on them. Sorry about that :(
+This project is maintained, but with limited capacity. Working on this is takes a lot of time and testing since all banks do things differently and once you move a part here, you break an unexpected one over there. Therefore: Bugs will only be fixed by me if they occur with a bank where I have an account. New features will only be developed if I need them. PRs will be merged if they either have a very low risk of breaking things elsewhere (e.g. purely adding new commands) or if I can test them. In any case, things might take a little time until I have the bandwidth to focus on them. Sorry about that :(
Limitations
-----------
Getting started
===============
+Register for a product ID
+-------------------------
+
+As of September 14th, 2019, all FinTS client programs need to be registered with the ZKA.
+You need to fill out a PDF form and will be assigned a product ID that you can pass to this library.
+It can take up to two weeks for the product ID to be assigned.
+
+The reason for this requirement is compliance with the European Unions 2nd Payment Services Directive (PSD2)
+which mandates that end-users can transparently see which applications are accessing their bank account.
+
+You cna find more information as well as the registration form on the `ZKA Website`_ (only available in German).
+
+Start coding
+------------
+
First of all, you need to install the library::
$ pip3 install fints
'myusername', # Your login name
getpass.getpass('PIN:'), # Your banking PIN
'https://hbci-pintan.gad.de/cgi-bin/hbciservlet',
- product_id='Your product ID'
+ product_id='Your product ID' # see above
)
Since the implementation of PSD2, you will in almost all cases need to be ready to deal with TANs. For a quick start,
Go on to the next pages to find out what commands are supported!
-.. note::
-
- As of September 14th, 2019, all FinTS programs should be registered with the ZKA or
- banks will block access. You need to fill out a PDF form and will be assigned a
- product ID that you can pass above.
-
- If you set the ``product_id`` to ``None``, the library will fill in the default
- product ID for python-fints. This works fine for evaluation, but should never be used
- if you bundle python-fints within a larger project. This might also not be acceptable
- by some banks.
-
- Click here to read more about the `registration process`_.
-
-
-.. _registration process: https://www.hbci-zka.de/register/prod_register.htm
+.. _ZKA Website: https://www.hbci-zka.de/register/prod_register.htm
\ No newline at end of file
--- /dev/null
+Upgrading from python-fints 3.x to 4.x
+======================================
+
+Release 4.0 of this library was made to introduce a breaking change:
+
+* You now need to register your application with the Deutsche Kreditwirtschaft (German banking association) and supply
+ your assigned product IT when initializing the library.
+
+The library used to have a built-in product ID that was used as a default if you didn't. This was very useful, but
+Deutsche Kreditwirtschaft asked us to stop doing this, since it undermindes the whole point of the product registration.
+The ID included in prior versions of the library will be deactivated at some point and stop working.
raise TypeError("bank_identifier must be BankIdentifier or str (BLZ)")
self.system_id = SYSTEM_ID_UNASSIGNED
if not product_id:
- logger.warning('You should register your program with the ZKA and pass your own product_id as a parameter.')
- product_id = 'DC333D745719C4BD6A6F9DB6A'
+ raise TypeError("The product_id keyword argument is mandatory starting with python-fints version 4. See "
+ "https://python-fints.readthedocs.io/en/latest/upgrading_3_4.html for more information.")
self.user_id = user_id
self.customer_id = customer_id or user_id