Skip to content

peberanek/fio-banka

Repository files navigation

Fio Banka API

image image image image pre-commit.ci status

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 of float, data stored as typing.NamedTuple instead of dict.

Note

Merchant transaction report and order upload are not implemented. Feel free to send a PR.

Quick example

>>> 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,
    ...

Documentation

For full description see the module docstring.

API documentation by Fio banka:

Installation

pip install fio-banka

Contributing

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.

License

This project is licensed under the terms of the MIT license.