Rework of Honza Javorek's fiobank, with the following upgrades:
- Parse both account info and transactions in 1 request. This is particularly useful as Fio banka allows only 1 request per 30 seconds.
- Known error states are covered by exceptions for fine-grade error handling.
- Fetch data in all supported formats (including PDF).
- New design allows to support other end points than account.
- Safer data types: money as
decimal.Decimal
instead offloat
, data stored astyping.NamedTuple
instead ofdict
.
Note
Merchant transaction report and order upload are not implemented. Feel free to send a PR.
>>> import fio_banka, datetime
>>> account = fio_banka.Account("my-API-token")
>>> transaction_report = account.fetch_transaction_report_for_period(
... datetime.date(2023, 1, 1),
... datetime.date(2023, 1, 2),
... fio_banka.TransactionReportFmt.JSON
... )
>>> account.parse_account_info(transaction_report) # JSON only
AccountInfo(
account_id='2000000000',
bank_id='2010',
currency='CZK',
iban='CZ1000000000002000000000',
...
)
>>> next(iter(account.parse_transactions(transaction_report))) # JSON only
Transaction(
transaction_id='10000000000',
date=datetime.date(2023, 1, 1),
amount=Decimal('2000.0'),
currency='CZK',
account_id=None,
...
For full description see the module docstring.
API documentation by Fio banka:
- Specification (Czech only)
- XSD Schema
pip install fio-banka
Set up development environment via Pipenv:
pipenv sync --dev
pipenv run pre-commit install
Run tests:
pytest
Use Conventional Commits.
I highly recommend to follow Test-Driven Development (revisited). Actually, all existing tests follow it.
This project is licensed under the terms of the MIT license.