Skip to main content

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.

Metadata

Release files for beancount-caixabank 1.0.0

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

Source distribution (sdist)

Source distribution for beancount-caixabank 1.0.0
File Size Uploaded Provenance
beancount_caixabank-1.0.0.tar.gz 39.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for beancount-caixabank 1.0.0
File Interpreter ABI Platform
beancount_caixabank-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 46.7 kB

Release files / beancount_caixabank-1.0.0.tar.gz

Download URL beancount_caixabank-1.0.0.tar.gz
Size 39.8 kB
Tags Source
SHA-256 checksum
How to use checksums
95e69cdef63d5936950d105230f01ba87e961c09e6748d61a15bc210694d4a59
BLAKE2b-256 checksum
How to use checksums
bc8ed04be8f74b71e125746ab8de7e635f3e6300fe276358f32569882eae9276
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 Jan 3, 2026.

Transparency log

Release files / beancount_caixabank-1.0.0-py3-none-any.whl

Download URL beancount_caixabank-1.0.0-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4f29eba8b7fa7021fa247696e1e60dff4414aee216967c106d3fb21c13161ae
BLAKE2b-256 checksum
How to use checksums
e956dea4b977d0899c6bf0774579ec6f66360fcf01d53ae5c5d006a385459048
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 Jan 3, 2026.

Transparency log

Security for beancount-caixabank 1.0.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for beancount_caixabank-1.0.0.tar.gz

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 Jan 3, 2026.

Transparency log

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

1.0.0 This release

2 release files Full 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