Skip to main content

Takes CSV files from the ELBA electronic banking application and brings it into first normal form

Project description

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.

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

elbacsv-0.1.0.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

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

elbacsv-0.1.0-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file elbacsv-0.1.0.tar.gz.

File metadata

  • Download URL: elbacsv-0.1.0.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.1

File hashes

Hashes for elbacsv-0.1.0.tar.gz
Algorithm Hash digest
SHA256 10d0b1606c81a95916e8b64456a2ac4a12a729d62e55b3344fe88e8fbc81589a
MD5 92e70336b89d3145fdfacc5204ae3e31
BLAKE2b-256 61ff9ac048d6ef6545404186d8c71ef4e124bcdc4e2a6d661418c730f73dbf14

See more details on using hashes here.

File details

Details for the file elbacsv-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: elbacsv-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.1

File hashes

Hashes for elbacsv-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6dfe6292d90ac720a762a4376fa1017de1c6b1ef5741896f36a98b320accb0f8
MD5 e488996b68f173c6a4ba6cbb2c7d8787
BLAKE2b-256 3332a32e0d2079c61952895af61f6200b3cfb6a1da0d2f16e8417fef744bcd9c

See more details on using hashes here.

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