fints
Pure-python FinTS 3.0 (formerly known as HBCI) implementation
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 fintsuv
uv add fintspoetry
poetry add fintsInstalling 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
Tags
More Internet packages
Botocore provides low-level, data-driven access…
permissive · top 100 on PyPI
aiobotocoreProvides an async client for AWS services using…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
filelockProvides a platform-independent file locking…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
googleapis-common-protosProvides common Protocol Buffer message…
permissive · top 100 on PyPI
cybrid-api-bank-pythonPython client library for the Cybrid Bank API,…
permissive · top 15,000 on PyPI
mt-940Parses MT940 bank statement files into fully…
permissive · top 15,000 on PyPI
sepaxmlGenerates SEPA XML payment files for direct…
permissive · top 15,000 on PyPI
gocardless-proA Python client library for the GoCardless API…
permissive · top 15,000 on PyPI
bai2Parses and writes BAI2 files, a standard format…
permissive · top 15,000 on PyPI
finnhub-pythonFinnhub-python is a client library for the…
permissive · top 15,000 on PyPI
AdyenProvides official Python bindings for Adyen's…
permissive · top 5,000 on PyPI
vonage-subaccountsProvides Python bindings to Vonage's Subaccount…
permissive · top 15,000 on PyPI
ofxparseParses Open Financial Exchange (.ofx) format…
permissive · top 15,000 on PyPI
clabeValidates and generates CLABE numbers, Mexico's…
permissive · top 15,000 on PyPI