Skip to main content

Beancount Importer for CaixaBank Excel statement exports

Project description

Beancount CaixaBank Importer

Tests PyPI Python Versions Ruff

beancount-caixabank provides a Beancount importer for converting CaixaBank Excel statement exports to the Beancount format.

Features

  • Format Support: Handles CaixaBank Excel exports (.xls and .xlsx)
  • Robust Parsing:
    • Flexible header detection (handles statements with metadata rows)
    • Supports both Excel date serial numbers and DD/MM/YYYY string dates
    • European number format parsing (comma as decimal, dot as thousands separator)
  • Full Beancount Integration: Creates proper transactions with metadata, payee, and narration

Installation

pip install beancount-caixabank

Usage

Getting Your CaixaBank Statement

  1. Log in to CaixaBank online
  2. Navigate to your account
  3. Export statement as Excel file (.xls or .xlsx)
  4. The file should contain columns: Fecha, Fecha valor, Movimiento, Más datos, Importe, Saldo

Beancount 3.x

Beancount 3.x uses a script-based workflow. Create an import.py file in your Beancount directory:

from beancount_caixabank import CaixaBankImporter
from beangulp import Ingest

importers = [
    CaixaBankImporter('Assets:CaixaBank:Checking'),
]

if __name__ == '__main__':
    ingest = Ingest(importers)
    ingest()

Then run:

python import.py extract path/to/statement.xls

Beancount 2.x

Add the following to your config.py:

from beancount_caixabank import CaixaBankImporter

CONFIG = [
    CaixaBankImporter('Assets:CaixaBank:Checking'),
]

Configuration

Account Name

The importer requires you to specify the Beancount account name where transactions will be imported:

CaixaBankImporter('Assets:MyBank:CaixaBank:Main')

Example Configuration

For a typical Beancount 3.x setup:

from beancount_caixabank import CaixaBankImporter
from beangulp import Ingest

importers = [
    CaixaBankImporter('Assets:CaixaBank:Checking'),
    CaixaBankImporter('Assets:CaixaBank:Savings'),
]

if __name__ == '__main__':
    ingest = Ingest(importers)
    ingest()

File Format

CaixaBank Excel statements should contain the following columns:

Column Description Format
Fecha Transaction date DD/MM/YYYY
Fecha valor Value date DD/MM/YYYY
Movimiento Transaction description/payee Text
Más datos Additional details/reference Text
Importe Amount European format (comma decimal, dot thousands)
Saldo Account balance European format

Note: The importer automatically detects the header row, so metadata rows before the headers are handled correctly.

Development

Prerequisites

  • Python 3.9 or higher
  • uv - Fast Python package installer and resolver

Setup

  1. Clone the repository:

    git clone https://github.com/rogiia/beancount-caixabank
    cd beancount-caixabank
    
  2. Install dependencies:

    uv sync
    
  3. Run tests:

    uv run pytest
    
  4. Run linting:

    uv run task lint
    

Using a Python environment

If you prefer to use a specific Python version:

uv sync --python 3.11

Testing

The importer includes comprehensive tests covering:

  • File identification and validation
  • Single and multiple transaction extraction
  • Date parsing (string and Excel formats)
  • European number format parsing
  • Edge cases and error handling

Run the test suite with:

uv run pytest

Or with verbose output:

uv run pytest -v

Contributing

Contributions are welcome! Please feel free to submit a PR.

License

This project is licensed under the MIT License - see the LICENSE.txt file for details.

Disclaimer

This importer is provided as-is. Always verify imported transactions against your bank statements to ensure accuracy.

Support

For issues, questions, or suggestions, please create an issue on the GitHub repository.

Related Projects

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

beancount_caixabank-1.0.0.tar.gz (39.8 kB view details)

Uploaded Source

Built Distribution

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

beancount_caixabank-1.0.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file beancount_caixabank-1.0.0.tar.gz.

File metadata

  • Download URL: beancount_caixabank-1.0.0.tar.gz
  • Upload date:
  • Size: 39.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for beancount_caixabank-1.0.0.tar.gz
Algorithm Hash digest
SHA256 95e69cdef63d5936950d105230f01ba87e961c09e6748d61a15bc210694d4a59
MD5 32bf3d51f5c00d022257bf383f167267
BLAKE2b-256 bc8ed04be8f74b71e125746ab8de7e635f3e6300fe276358f32569882eae9276

See more details on using hashes here.

Provenance

The following attestation bundles were made for beancount_caixabank-1.0.0.tar.gz:

Publisher: publish.yml on rogiia/beancount-caixabank

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

File details

Details for the file beancount_caixabank-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for beancount_caixabank-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d4f29eba8b7fa7021fa247696e1e60dff4414aee216967c106d3fb21c13161ae
MD5 2a1082987466178d222fc2569d917ed1
BLAKE2b-256 e956dea4b977d0899c6bf0774579ec6f66360fcf01d53ae5c5d006a385459048

See more details on using hashes here.

Provenance

The following attestation bundles were made for beancount_caixabank-1.0.0-py3-none-any.whl:

Publisher: publish.yml on rogiia/beancount-caixabank

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