ngtonic
Personal finances on your terminal
🌟 Motivation and Description
Ngtonic is a small tool created to manage personal finances directly from the terminal, avoiding the need to share sensitive financial data with third-party apps. It's tailored for my specific needs. Currently, Ngtonic only supports ING bank, leveraging its automatic categorization of movements.
I also created it as an example of building a project "the right way" on GitHub.
🤔 Why Use Ngtonic?
Consider using Ngtonic if you:
- Prefer not to use apps like Fintonic
- Primarily use ING for personal expenses
- Want a simple, terminal-based tool to check your finances
- Value privacy and keeping your financial data local
For those seeking more advanced features or a GUI, Firefly III might be a better option.
👨💻 Getting started
- Install using pipx (recommended) or pip:
pipx install ngtonic
-
Download your ING account movements as an Excel file.
-
Import the movements:
ngtonic import ing movements.xls
Your data is now stored locally in .ngtonic/movements.json. You can import multiple files; Ngtonic will automatically deduplicate the data.
📊 Usage
Ngtonic offers several commands:
╭─ Commands ──────────────────────────────────────────────────────────────────────╮
│ import Import movements files to the internal storage │
│ list Show a table listing the movements with optional filtering │
│ balance-plot Plot the evolution of the balance over time │
│ month-plot Plot the movements grouped per month │
│ find-bills Use a simple heuristic to find regular bills, like subscriptions │
╰─────────────────────────────────────────────────────────────────────────────────╯
# Use category filtering to list home expenses
ngtonic list -c hogar
# List leisure expenses by month
ngtonic list -c ocio -m
# Check Steam purchases by month
ngtonic list -d steam -m
# Use the integrated heuristic to find regular bills
ngtonic find-bills
The plot commands enable you to visualize movements grouped by month or track the balance over time. You can apply the same filters available in the list command to customize these plots. Below are some example graphs (y axis has been removed for privacy).
# Income per mont (in my case, the payroll)
ngtonic month-plot -i
# Expenses on ocio category per month
ngtonic month-plot -c ocio
# The month-plot without any options is a good way to know your saving capacity
ngtonic month-plot
# And the balance plot will give you a more detailed way to check your cash flow
ngtonic balance-plot
Instructions to export from supported sources
ING
Go to the movements view of your account and download the excel format
Revolut
On the web version, extract and choose excel format. Don't be surprised when you find that the file is, in fact, a CSV.
Paypal
Go to activity, download, Completed payments. Choose CSV as the output format. PayPal movements are not directly imported, they are used to enrich the information.
⚙️ Configuration
Excluding Movements
Sometimes you may want to exclude certain transactions from your analysis, such as:
- Transfers between your own accounts or to other banks
- Large one-time transactions that skew your graphs
- Any movements you don't want to include in your financial overview
You can exclude these movements using the configuration file located at .ngtonic/config.yaml. This file contains a list of filters; any movement matching these filters will be excluded from all commands.
Example configuration:
excluded_movements:
- category: "Inversión"
- subcategory: "Ingresos de otras entidades"
- description: "Traspaso emitido Cuenta Nómina"
- description: "steam"
value: -675 # Excludes only this specific Steam transaction
🛠️ Development
pdm install
$(pdm venv activate)
pre-commit install
This command will create a virtual environment, install all dependencies (including Ngtonic itself), and set up helpful commit hooks. Any changes made to the code will take effect immediately without requiring reinstallation.
You can also run manually the linter with pdm lint or the formatter with pdm format.
📦 Releases
The python packages are uploaded from the CI when creating a release, but you can create an whl locally with pdm build.
Metadata
Release files for ngtonic 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ngtonic-1.0.2.tar.gz | 11.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ngtonic-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.9 kB
Release files / ngtonic-1.0.2.tar.gz
| Download URL | ngtonic-1.0.2.tar.gz |
|---|---|
| Size | 11.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3bdc9ac57fca22b9e35f7fb2f1e2a4d4336b2e654f55f689fe946d1f0425316c
|
|
BLAKE2b-256 checksum How to use checksums |
63975498497e4ef23201fad9535b17ad869c838f445e4c2679e9ddfaa7502833
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 20, 2025.
Transparency logRelease files / ngtonic-1.0.2-py3-none-any.whl
| Download URL | ngtonic-1.0.2-py3-none-any.whl |
|---|---|
| Size | 11.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a4c092c7f42ecb9ee77d09f4f07de064f045f3474c72743715334d428b9b5f4a
|
|
BLAKE2b-256 checksum How to use checksums |
840dd01363185dbac37d5d35e2f5bc547d0491119a7893d9bbacda96cfd260fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 20, 2025.
Transparency log