Skip to main content

ing-ynab logo

ci PyPI PyPI - Python Version PyPI - License

Import your ING Germany bank statements via FinTS into YNAB.

Setup

Before setting this up, you need to register your FinTS product – it's free and takes only a few days.

Since this application will need your ING pin and YNAB access token it's recommended to run this in your local network (could be a Raspberry Pi, it's pretty light).

To start the application you need Python 3.12 or higher as well as pdm.

$ pdm install
$ pdm run start

Alternatively you can use the Docker image from ghcr.io/bahlo/ing-ynab:latest or ghcr.io/bahlo/ing-ynab:3.0.1.

Configuration

The configuration is done via environment variables:

  • SLEEP_INTERVAL_SECONDS: Interval in seconds until the next check happens (defaults to 5 minutes).
  • FINTS_PRODUCT_ID: Your FinTS product ID (deafults to python-fints one).
  • ING_LOGIN: The login id of your ING account.
  • ING_IBAN: The IBAN of the account you want to add.
  • ING_PIN: The pin of your ING account (leave empty to be prompted).
  • YNAB_ACCESS_TOKEN: Go to your budget settings to create one (leave empty to be prompted).
  • YNAB_BUDGET_ID: On the webpage of your budget the first UUID in the path (https://app.youneedabudget.com/<BUDGET_UUID>/budget/202109).
  • YNAB_ACCOUNT_ID: On the webpage of the bank account the last UUID in the path (https://app.youneedabudget.com/<BUDGET_UUID>/accounts/<BANK_ACCOUNT_UUID>).
  • YNAB_FLAG_COLOR: If set, use that color for the imported transactions.
  • DEBUG: Set to 1 to enable debug output and print transactions instead of importing them.

Security

You can pass in your bank pin and YNAB access token via environment variables, if you like. This has the drawback that anyone with system access can read and potentially use them so it's discouraged (but supported).

The alternative is not specifying YNAB_ACCESS_TOKEN and/or ING_PIN, which will cause the application to prompt you on startup. This has the drawback that you need to input them everytime the application restarts.

For docker you'll need to pass the -it flags to be able to input these variables. For docker-compose, add these fields:

tty: true
stdin_open: true

After starting with docker-compose up -d, run docker attach $container_id to attach to the container. Note that the prompt for the pin might be hidden, so you have to enter the pin directly.

FAQ

Why is this ING-only? Isn't FinTS a general protocol?

It is, but the implementations differ a lot. This actually started out as a general-purpose library but I can only really test ING and I rather have a specialised library than a multipurpose one where I can't guarantee functionality.

Can you support my bank?

The python-fints library supports a lot of banks, so probably. But we need to work together as I can't test it. Feel free to get in touch: hallo@arne.me

How do I register the FinTS product?

  1. Go to the FinTS product registration
  2. Click Registrierungsprozess to get to a PDF form
  3. Fill in your data. If you don't know what else to put, here are some suggestions:
    • Firmenbezeichnung: Your name
    • Produktname: ing-ynab
    • Produktkategorie: Web-Server
  4. Send the form to the email adress on the last page

After a week or two you will get your product id via email.

Metadata

Release files for ing-ynab 3.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ing-ynab 3.0.1
File Size Uploaded
ing_ynab-3.0.1.tar.gz 9.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ing-ynab 3.0.1
File Interpreter ABI Platform
ing_ynab-3.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 16.8 kB

Release files / ing_ynab-3.0.1.tar.gz

Download URL ing_ynab-3.0.1.tar.gz
Size 9.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3740007ee1f6f5bcc869530306b214b237217a5d8226d9d2cc39a02ae5ed0e14
BLAKE2b-256 checksum
How to use checksums
3cabb752fd18b2a08405b8bd8215a042abab9e8df43f9130e50f7a7e57d66f59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.17.2 CPython/3.12.4 Linux/6.5.0-1024-azure

Release files / ing_ynab-3.0.1-py3-none-any.whl

Download URL ing_ynab-3.0.1-py3-none-any.whl
Size 7.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
25afb180e139fc13be8dc27fe9fdc70cd2884d19f2a875502c482f73f4756e35
BLAKE2b-256 checksum
How to use checksums
d46aaa3bbcb06d1972f43bb8c853c9a8e349626f4083bcdfc080a0af5141f022
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.17.2 CPython/3.12.4 Linux/6.5.0-1024-azure

Release history Release notifications | RSS feed

This release

3.0.1 This release

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page