Skip to main content

Financial ETL CLI: parse, normalize, and explore your bank transaction data.

Project description

fintl

CI codecov License: MIT Python 3.13+ Ruff uv ty

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

As a cli tool

uv tool install fintl

As a dependency

From pypi

pip install fintl

or

uv add fintl

From a local repo

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

  1. Configure your ~/.config/petprojects/fintl.toml. For details see here.
  2. Go to your bank account.
  3. Select your service, e.g. Giro.
  4. Export csv file or similar to ~/Downloads, or directly your source dir for your bank / service.
  5. Optionally, if you've stored your file in ~/Downloads, run cd ~/Downloads followed by fintl store (uses your fintl.toml from step 1).
  6. Optionally, if you want to process PNG screenshots via Ollama, start Ollama.
  7. Run the etl via fintl etl (also uses your fintl.toml from step 1).
  8. Upon success visualize / search your data via fintl plot or fintl search.

Please see here and below for more usage details.

Repo structure

  • src/fintl/accounts_etl/ — core ETL logic: schemas, parsers, registry, runner
  • src/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:

prek run --all-files

Running Ollama integration tests

Tests that require a live Ollama instance are marked ollama and skipped by default. To run them, set FINTL_OLLAMA_MODEL to the name of a multimodal model you have pulled (e.g. qwen3.5:27b) and pass -m ollama:

FINTL_OLLAMA_MODEL=qwen3.5:27b uv run pytest -m ollama tests/

FINTL_OLLAMA_BASE_URL can optionally override the default http://localhost:11434/v1.

Simulating CLI usage without real financial data

Set the FINTL_CONFIG env var to point at any TOML file instead of ~/.config/petprojects/fintl.toml. A dev-config.toml is included at the repo root and wires all CLI commands to the fixture files under tests/.

To try the CLI commands, run:

mkdir /tmp/fintl-dev

Then you can run one of

rm -fr /tmp/fintl-dev/*
FINTL_CONFIG=dev-config.toml fintl etl
FINTL_CONFIG=dev-config.toml fintl plot
FINTL_CONFIG=dev-config.toml fintl store --from-dir <dir> --yes --copy

Output lands in /tmp/fintl-dev. Edit dev-config.toml locally to change providers, paths, or target directory.

Note: FINTL_CONFIG=dev-config.toml fintl etl is expected to produce one warning, failing to parse Screenshot 2026-03-09 at 14.30.54.png, because it in fact is an insufficient png file to parse the requested information from.

Release

For release steps see here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fintl-0.2.2.tar.gz (53.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fintl-0.2.2-py3-none-any.whl (99.7 kB view details)

Uploaded Python 3

File details

Details for the file fintl-0.2.2.tar.gz.

File metadata

  • Download URL: fintl-0.2.2.tar.gz
  • Upload date:
  • Size: 53.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fintl-0.2.2.tar.gz
Algorithm Hash digest
SHA256 856e79dd77888c0e67fb441f8998628a8f47ffb77337520743b9d0ad773ab6b2
MD5 eb3961bd93a4968485bd63f276f0e5d9
BLAKE2b-256 f30bd918694d936b78c01df81b61cdb28c7f3d3c7706d8a85ef1426d4066cb4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for fintl-0.2.2.tar.gz:

Publisher: publish.yml on eschmidt42/fintl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fintl-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: fintl-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 99.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fintl-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d5b27d6a9c6cd6ef79120d207ea476813eba57361cb5a1ef8c1b3e2944f436d4
MD5 b903673b3c8a71bc47cb81aa1a02f3b4
BLAKE2b-256 6b485851958993afb8293ed20efb7b1095ea5d989658a1259022e55672317b6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fintl-0.2.2-py3-none-any.whl:

Publisher: publish.yml on eschmidt42/fintl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page