Skip to main content

ELBA CSV Tool

Author

Dominik Rappaport, dominik@rappaport.at

Motivation

I use a software application called iFinance to manage my bank accounts. iFinance includes a feature that allows automatic data downloads through an API provider. In earlier versions, the software supported two such providers: Tink and Plaid. My bank, Raiffeisen Bank in Austria, was accessible exclusively via Tink.

Unfortunately, beginning with iFinance version 5.4, support for Tink was discontinued in favor of Plaid as the sole provider. Consequently, iFinance was no longer able to retrieve data from my bank account. According to the vendor’s support team, Plaid may expand its support to additional banks in the future, although the statement was vague and no timeline was provided. Anticipating customer dissatisfaction, the company proactively announced that it would refund users who could no longer use the product under the new limitations.

As I had already been using iFinance for some time to organize my financial transactions, I preferred not to request a refund. Instead, I decided to continue using the software by importing data through the CSV import function.

Naturally, ELBA — the online banking system provided by Raiffeisen Bank — supports CSV exports. However, the structure of the exported file is suboptimal for data processing purposes.

Issue #1: Missing column headers

In a properly formatted CSV file, the first row typically contains column headers. The CSV export from ELBA, however, omits these headers, requiring the user to manually identify and assign them. Fortunately, this is a relatively minor inconvenience and can be resolved easily.

Issue #2: Data not in first normal form

The majority of each transaction’s data is contained within a single column as a string of key–value pairs. Unfortunately, these pairs are not separated by commas, and the keys themselves may contain whitespace. As the following example illustrates:

Verwendungszweck: BILLA DANKT 0003750 STOCKERAU 2000 Zahlungsreferenz: POS          50,26 AT  D5   23.08. 18:00 Kartenzahlung mit Kartenfolge-Nr.: 5

In database terminology, this structure violates the first normal form (1NF). Automated parsing of this field presents a challenge: it is not straightforward to determine whether the final key is “Kartenfolge-Nr.” or whether “Kartenfolge” and “Nr.” are separate components of the key. The only viable approach is to define a comprehensive list of all possible keys and use it as a reference for parsing the data. Unfortunately, no official documentation describing these keys appears to exist.

To obtain properly structured data suitable for import into iFinance (or tools such as Excel), I decided to develop a small utility that performs the required data transformation.

Installation

Elbacsv is distributed as a Python package. Several installation methods are available.

Using pip

Executing pip installs the package in your current Python environment. Global installation was once possible, but modern Linux distributions no longer permit this approach.

pip install elbacsv

Using pipx or uv

Both pipx and uv enable global tool installation. The package can be installed as follows:

pipx install elbacsv

or

uv tool install elbacsv

Usage

Download the CSV file from your bank account and run the following command:

elbacsv input.csv output.csv

You may add the option --merge. This will merge the two keys Verwendungszweck, Zahlungsreferenz and Auftraggeberreferenz into a single field Verwendungszweck.

Metadata

Release files for elbacsv 0.1.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 elbacsv 0.1.1
File Size Uploaded Provenance Actions
elbacsv-0.1.1.tar.gz 6.2 kB Without provenance Details for elbacsv-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for elbacsv 0.1.1
File Interpreter ABI Platform Actions
elbacsv-0.1.1-py3-none-any.whl Python 3 none any Details for elbacsv-0.1.1-py3-none-any.whl

Total release size: 14.8 kB

Release files / elbacsv-0.1.1.tar.gz

Download URL elbacsv-0.1.1.tar.gz
Size 6.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c597ecda3de5c4a1e2b6b7889fa02a44d73c49617a7b35c5e633edc2164080d5
BLAKE2b-256 checksum
How to use checksums
f61d69fa4a881dc95efc98c4114602e505a3270689e0176dee48696c15264261
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.1

Release files / elbacsv-0.1.1-py3-none-any.whl

Download URL elbacsv-0.1.1-py3-none-any.whl
Size 8.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d08ee7103a5e613f57afc061350a6c621c4b042540ff86d24e64072d1ddc5bd7
BLAKE2b-256 checksum
How to use checksums
564e56dccfbf452a9442422471f6c9a3eb28147530cb1ac634b8aad9cc1fcd24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.1

Security for elbacsv 0.1.1

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

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