A comprehensive collection of beancount tools: importers, price fetchers, plugins, and utilities
Project description
Beancount Tools Collection
🧮 My personal collection of beancount tools including importers, price fetchers, plugins, and utilities for various financial institutions.
Features
📥 Data Importers
Swiss Institutions:
- Yuh - CSV exports
- Viseca - JSON transaction exports (including Migros Cumulus Credit Card)
- VIAC - JSON transaction exports (pillar 2 & 3a)
- Finpension - CSV transaction reports (pillar 3a)
International Institutions:
- Interactive Brokers - FlexQuery XML reports (global)
- Revolut - CSV exports (multi-country)
Other Formats:
- Firefly III - CSV exports
💰 Price Fetchers
- Interactive Brokers - Real-time prices from FlexQuery
🔌 Beancount Plugins
- Crickets chirping 🦗 - This section is as empty as my wallet after buying crypto at the peak
🛠️ Utility Scripts
- Transaction Processor - Example transaction processing with ImporterProtocolAdapter and TransactionInspector for automatic categorization and payee standardization
Installation
From PyPI
pip install beancount-tools-collection
From Source
git clone https://github.com/mekanics/beancount-tools-collection.git
cd beancount-tools-collection
pip install -e .
Quick Start
Basic Importer Configuration
from beancount_tools_collection.importers import (
finpension, ibkr, revolut,
viac, viseca, yuh
)
# Example configuration
CONFIG = [
# Swiss institutions
finpension.FinpensionImporter(
root_account="Assets:Pension:S3:Finpension:Portfolio1",
deposit_account="Assets:Checking",
isin_lookup={
"CH0132501898": "CH0132501898", # Example ISIN mapping
# ... more ISINs
}
),
viac.ViacImporter(
root_account="Assets:Pension:S3a:Viac:Portfolio1",
deposit_account="Assets:Checking",
share_lookup={
"UBS SMI": {"isin": "CH0033782431", "symbol": "CH0033782431"},
# ... more share mappings
}
),
yuh.YuhImporter(
account="Assets:Cash:Yuh:CHF",
goals_base_account="Assets:Savings:Yuh"
),
# International institutions
ibkr.IBKRImporter(
Mainaccount="Assets:Invest:InteractiveBrokers",
DivAccount="Income:Dividends:InteractiveBrokers",
WHTAccount="Expenses:Taxes:WithholdingTax",
PnLAccount="Income:Invest:Gains",
FeesAccount="Expenses:Invest:Fees",
configFile="ibkr.yaml" # Your IBKR FlexQuery config
),
revolut.RevolutImporter(
"revolut_chf",
"Assets:Cash:Revolut:CHF",
"CHF"
),
]
Price Fetcher Configuration
# In your beancount price configuration
from beancount_tools_collection.prices import ibkr
# The IBKR price source will be available for bean-price
Documentation
Importer-Specific Setup
Each importer has specific requirements and configuration options:
- Finpension - CSV transaction reports
- Interactive Brokers - FlexQuery configuration
- VIAC - JSON export setup
- Yuh - CSV export configuration
Account Structure Examples
The importers work best with structured account hierarchies:
Assets:
Cash:
Yuh:
CHF
USD
Revolut:
CHF
EUR
Invest:
InteractiveBrokers:
Long-Term:
VTI
VXUS
USD
Pension:
S3a:
Finpension:
Portfolio1:
CHF
Viac:
Portfolio1:
CH0132501898
Income:
Dividends:
InteractiveBrokers:
Long-Term:
USD
Pension:
S3a:
Finpension:
Portfolio1:
Interest:
CHF
Expenses:
Invest:
Fees:
CHF
USD
Taxes:
WithholdingTax
Contributing
We welcome contributions! Here's how you can help:
- Add new importers for financial institutions
- Improve existing importers with bug fixes and features
- Add price fetchers for different data sources
- Create plugins for common beancount workflows
- Improve documentation and examples
Development Setup
git clone https://github.com/mekanics/beancount-tools-collection.git
cd beancount-tools-collection
pip install -e ".[dev]"
Running Tests
pytest
Code Formatting
black src/
isort src/
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- The beancount project for the excellent accounting framework
- Various open-source beancount importers that served as inspiration
Support
Made with ❤️ for personal finance tracking
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file beancount_tools_collection-1.0.0.tar.gz.
File metadata
- Download URL: beancount_tools_collection-1.0.0.tar.gz
- Upload date:
- Size: 37.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cca0265b3f8f81161996efcd80cd1e61c11234f979b0db56488aa9ba8d9effa1
|
|
| MD5 |
dada928f67f4858759601fe3a72f8081
|
|
| BLAKE2b-256 |
59fb5d50a61083acdade9edc5599a255909240b19a5a5fc5ef5fc1d37c394150
|
Provenance
The following attestation bundles were made for beancount_tools_collection-1.0.0.tar.gz:
Publisher:
release.yml on mekanics/beancount-tools-collection
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
beancount_tools_collection-1.0.0.tar.gz -
Subject digest:
cca0265b3f8f81161996efcd80cd1e61c11234f979b0db56488aa9ba8d9effa1 - Sigstore transparency entry: 1629609945
- Sigstore integration time:
-
Permalink:
mekanics/beancount-tools-collection@1feab51defa7addc3963c482f31f981309cbaf68 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/mekanics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1feab51defa7addc3963c482f31f981309cbaf68 -
Trigger Event:
push
-
Statement type:
File details
Details for the file beancount_tools_collection-1.0.0-py3-none-any.whl.
File metadata
- Download URL: beancount_tools_collection-1.0.0-py3-none-any.whl
- Upload date:
- Size: 39.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
214a320c071ec8ea13eb11e005235b10951fbbde5fc2d26f70a22a4837b2ee33
|
|
| MD5 |
b6c5d02e7ebbf344be5f856c7c92e5cc
|
|
| BLAKE2b-256 |
111e325fdb6797b1fff23243d6e6dd552b345a1c1bc85a94ada5533faf84203a
|
Provenance
The following attestation bundles were made for beancount_tools_collection-1.0.0-py3-none-any.whl:
Publisher:
release.yml on mekanics/beancount-tools-collection
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
beancount_tools_collection-1.0.0-py3-none-any.whl -
Subject digest:
214a320c071ec8ea13eb11e005235b10951fbbde5fc2d26f70a22a4837b2ee33 - Sigstore transparency entry: 1629610527
- Sigstore integration time:
-
Permalink:
mekanics/beancount-tools-collection@1feab51defa7addc3963c482f31f981309cbaf68 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/mekanics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1feab51defa7addc3963c482f31f981309cbaf68 -
Trigger Event:
push
-
Statement type: