Financial ETL CLI: parse, normalize, and explore your bank transaction data.
Project description
fintl
Financial ETL CLI: parse, normalize, and explore your bank transaction data.
TL;DR
This tool helps you process, visualize and search your balance and transaction information that you have exported from your bank accounts.
Currently supports DKB, Postbank, GLS and Scalable Capital Broker.
Supported file formats: CSV, HTML, and PNG. PNG parsing uses a local ollama instance with a multimodal model — opt-in via fintl.toml (required only for Scalable broker PNG statements; gracefully skipped when not configured).
All your data stays on your machine. No need to trust another entity that is PSD2 certified.
How to install
git clone https://github.com/eschmidt42/fintl.git
cd fintl
uv sync
uv tool install .
After installation, fintl should be available on your PATH:
which fintl
# e.g. /Users/YOURUSER/.local/bin/fintl
How to use
- Configure your
~/.config/petprojects/fintl.toml. For details see here. - Go to your bank account.
- Select your service, e.g. Giro.
- Export csv file or similar to
~/Downloads, or directly your source dir for your bank / service. - Optionally, if you've stored your file in
~/Downloads, runcd ~/Downloadsfollowed byfintl store(uses yourfintl.tomlfrom step 1). - Optionally, if you want to process PNG screenshots via Ollama, start Ollama.
- Run the etl via
fintl etl(also uses yourfintl.tomlfrom step 1). - Upon success visualize / search your data via
fintl plotorfintl search.
Please see here and below for more usage details.
Repo structure
src/fintl/accounts_etl/— core ETL logic: schemas, parsers, registry, runnersrc/fintl/cli/— CLI entry point and subcommands (etl,store,search,plot)tests/— tests for packages of this repo
Development
Run tests:
uv run pytest -n auto tests
Type check:
uv run ty check src
Lint, format, type check, test and all the other good stuff:
pre-commit run --all-files
For release steps see here.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fintl-0.1.0.tar.gz.
File metadata
- Download URL: fintl-0.1.0.tar.gz
- Upload date:
- Size: 41.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc9f2cece9d315094c284041e949d08cf7b82d47205bc0d86059163f487a62f0
|
|
| MD5 |
c30c4741c35c8622ca372b6f549ca996
|
|
| BLAKE2b-256 |
af25bb9499b04495780ea8d82ab76fb97b167a504b30274112318a7f469b2359
|
Provenance
The following attestation bundles were made for fintl-0.1.0.tar.gz:
Publisher:
publish.yml on eschmidt42/fintl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fintl-0.1.0.tar.gz -
Subject digest:
fc9f2cece9d315094c284041e949d08cf7b82d47205bc0d86059163f487a62f0 - Sigstore transparency entry: 1191410435
- Sigstore integration time:
-
Permalink:
eschmidt42/fintl@c19906888d9bf43b4e48750f3c0abcf492b13697 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/eschmidt42
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c19906888d9bf43b4e48750f3c0abcf492b13697 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fintl-0.1.0-py3-none-any.whl.
File metadata
- Download URL: fintl-0.1.0-py3-none-any.whl
- Upload date:
- Size: 76.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da62471b3e3b98908c041792fee487af07fc0bdc0f01e4d52a006b6d7a0b7547
|
|
| MD5 |
ada9cb4d6c3307046e0944b8b5adb35b
|
|
| BLAKE2b-256 |
832af749f59b4cbc68031eabf8a823afd0321218bf1c21060b259b987cb48761
|
Provenance
The following attestation bundles were made for fintl-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on eschmidt42/fintl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fintl-0.1.0-py3-none-any.whl -
Subject digest:
da62471b3e3b98908c041792fee487af07fc0bdc0f01e4d52a006b6d7a0b7547 - Sigstore transparency entry: 1191410439
- Sigstore integration time:
-
Permalink:
eschmidt42/fintl@c19906888d9bf43b4e48750f3c0abcf492b13697 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/eschmidt42
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c19906888d9bf43b4e48750f3c0abcf492b13697 -
Trigger Event:
push
-
Statement type: