skillfed

fints

Pure-python FinTS 3.0 (formerly known as HBCI) implementation

fints v5.0.0 117.1K downloads/30d#12,178 on PyPI415
Copyleft license LGPL-3.0-or-later Active released

What it is and what it does

PyFinTS is a pure-Python client library for FinTS 3.0, the online-banking protocol widely supported by German financial institutions. It lets you programmatically connect to bank accounts using PIN/TAN authentication to retrieve statements, check balances, view holdings, and initiate SEPA transfers or debits. The library wraps the FinTS protocol in a Python API, handling the low-level communication details so you can focus on banking operations.

The package depends on bleach, mt-940, requests, sepaxml, enum-tools, and lxml to handle HTML sanitization, MT940 statement parsing, HTTP communication, SEPA XML generation, and XML processing. Maintenance is active but capacity-constrained; bugs are fixed primarily for banks where the maintainer has accounts, and new features are added on an as-needed basis. The implementation supports Python 3.9 and later and is classified as Beta development status.

Use it for:

  • Automate monthly bank statement downloads and reconciliation for accounting or bookkeeping workflows.
  • Build financial dashboards that pull real-time account balances and transaction data from multiple German bank accounts.
  • Programmatically execute SEPA transfers or debits as part of payment automation or billing systems.
  • Integrate German banking data into ERP or accounting software without manual data entry.
  • Monitor account activity and generate alerts based on transaction patterns or balance thresholds.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

A pure-Python implementation of the FinTS 3.0 online-banking protocol that enables programmatic access to German bank accounts for fetching statements, balances, holdings, and executing SEPA transfers and debits.

Yes, if you need to integrate German bank accounts into a Python application and are willing to work within FinTS 3.0 and PIN/TAN constraints. The package is actively maintained, has no known vulnerabilities, and low install friction. Be aware that support is capacity-limited and feature development depends on the maintainer's personal needs; test thoroughly with your specific bank before relying on it in production.

Install

fints on PyPI

pip

pip install fints

uv

uv add fints

poetry

poetry add fints

Installing fints

Before you install

Low install friction with six runtime dependencies. Maintenance is active but capacity-limited; the maintainer fixes bugs only for banks where they have accounts and merges PRs with low breakage risk. Expect slower response times on feature requests.

License in practice

LGPL-3.0-or-later is a copyleft license requiring derivative works to be licensed under compatible terms. Suitable for open-source projects; proprietary software must carefully evaluate redistribution obligations.

Quickstart

pip install fints

from fints.client import FinTS

client = FinTS(blz='...', user='...', pin='...', endpoint='...')
accounts = client.get_accounts()
statements = client.get_transactions(account, start_date, end_date)

Requires Python 3.9 or later; PIN/TAN authentication only (no signature cards); only FinTS 3.0 supported; bank must support FinTS protocol.

Verify before relying

  • Which specific German banks are known to work reliably with this implementation.
  • Performance characteristics when handling large transaction histories or multiple accounts.
  • Whether TAN methods beyond the maintainer's personal bank are actively tested.

Package facts

License LGPL-3.0-or-later (copyleft)
Python support supports the current Python release (>=3.9)
Install friction low — pure-Python wheel
Runtime dependencies 6 — bleach, mt-940, requests, sepaxml, enum-tools, lxml
Maintenance actively maintained — 220 days since the last release
Last repo commit
First released
Downloads 117,126/month — #12,178 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: fints-5.0.0-py3-none-any.whl

Keywords: hbci, banking, fints

Development Status :: 4 - BetaIntended Audience :: DevelopersIntended Audience :: Other AudienceProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.9

Tags

german bank apifints banking protocolonline banking automationbank statement retrievalsepa transfer pythonhbci implementationaccount balance fetch
banking-apigerman-financesepa

More Internet packages