Skip to main content

Firefly Cash Converter

A Python tool for converting financial transaction data from various sources (Barclays, PayPal, Trade Republic, etc.) and transferring them to Firefly III personal finance manager.

Prerequisites

  • Python >= 3.11
  • A running Firefly III instance (for the transfer command)

Installation

Install directly from the GitHub repository:

pip install git+https://github.com/phdorp/gnucash-convert.git@main

or from PyPI

pip install firefly-cash-converter

This will install the cash command-line tool for converting and transferring financial transactions.

Configuration

For the transfer command, you need a config.toml file with your Firefly III instance details. Create one based on this template:

[firefly_interface]
base_url = "http://your-firefly-instance"
api_token = "your-api-token-here"
duplicate_transaction = "ignore"  # options: "error", "ignore"

See the examples/config.toml file for reference.

Usage

The tool provides two main commands: convert and transfer.

Supported Sources

Source Convert Transfer
barclays ✓ ✓
paypal ✓ ✓
trade_republic ✓ ✓
common ✗ ✓

Convert

The convert command converts transaction data from various sources to a common CSV format compatible with Firefly III:

cash convert <source> <input_file> [options]

Options:

  • source: Source format (choices: barclays, paypal, trade_republic)
  • input_file: Path to the input file to be converted (without file extension)
  • --output: Output directory (default: current directory)
  • --file_name: Output file name without extension (default: transactions)
  • --account_name: Name of the account to assign to transactions
  • --filter_query: Optional pandas query to filter transactions (see Filter Queries)

Example:

Change directory to the examples directory. The following command transforms the transactions stored in tmp/trade_republic.csv to the common Firefly representation. Only transactions after the date 2025-07-01 are converted.

cash convert trade_republic tmp/trade_republic --account_name "My Trading Account" --filter_query "date >= '2025-07-01'"

Transfer

The transfer command loads transaction data and directly transfers it to your Firefly III instance via API:

cash transfer <source> [options]

Options:

  • source: Source format (choices: barclays, paypal, trade_republic, common)
  • --config_path: Path to configuration file (default: ./config.toml)
  • --account_name: Name of the account to assign to transactions
  • --input_directory: Directory containing input files (default: tmp)
  • --input_name: Name of the input file (defaults to source name)
  • --filter_query: Optional pandas query to filter transactions (see Filter Queries)
  • --apply_rule_groups: List of rule group titles to apply after transferring transactions.

Example with manual file:

Change directory to the examples directory and launch your Firefly server. Adapt the file config.toml to your needs. The following command transfers transactions after the date 2025-07-01 to your Firefly server:

cash transfer trade_republic --account_name "My Trading Account" --filter_query "date >= '2025-07-01'"

Example with Pytr (Trade Republic):

If you own a Trade Republic account, you can download your transaction data with the pytr package:

pip install pytr

The following command enables an almost automated transfer of your transaction data (2FA code must be entered manually):

pytr export_transactions tmp/trade_republic.csv --store_credentials --format csv
cash transfer trade_republic --account_name "My Trading Account"

Filter Queries

The --filter_query option accepts pandas query expressions for filtering transactions. Common examples:

  • Filter by date: "date >= '2025-07-01'"
  • Date range: "date >= '2025-01-01' and date <= '2025-12-31'"
  • Amount filters: "amount > 100" or "amount < 0" (negative for expenses)
  • Combine conditions: "date >= '2025-01-01' and amount > 50"

For more complex queries, refer to the pandas query documentation.

Tests

The tests of the firefly interface rely on a local Firefly III server.

1. Start the Test Server

Launch the Firefly III server using Docker Compose:

cd ./test/fireflyServer
sudo docker compose up

Wait for the server to be ready (this may take a minute on first run).

2. Create an API Token

Run the token creation script:

bash test/fireflyServer/createToken.sh

This script initializes Laravel Passport, creates a test user with owner permissions (user_role_id = 21), generates a personal access token, and saves it to the .env file.

3. Run Tests

Once the test server is running and the API token is configured in the .env file, install the package with dev dependencies and run the tests:

# Install package with dev dependencies
pip install -e ".[dev]"

# Run all tests
pytest --cov=fireflyConverter test/

Note: The .env file is automatically loaded by the test suite using python-dotenv (included in dev dependencies).

Metadata

Release files for firefly-cash-converter 0.2.2

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

Source distribution (sdist)

Source distribution for firefly-cash-converter 0.2.2
File Size Uploaded
firefly_cash_converter-0.2.2.tar.gz 28.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for firefly-cash-converter 0.2.2
File Interpreter ABI Platform
firefly_cash_converter-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 56.5 kB

Release files / firefly_cash_converter-0.2.2.tar.gz

Download URL firefly_cash_converter-0.2.2.tar.gz
Size 28.0 kB
Tags Source
SHA-256 checksum
How to use checksums
2e630e16db6e7461ea44d2d23ececca7005d3f9761052db9e1e0e0e98e882555
BLAKE2b-256 checksum
How to use checksums
4c7e6461811cffd98ddda189a32c6e26b2e926d52b6f48a21ddf3b3a881cde1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 15, 2026.

Transparency log

Release files / firefly_cash_converter-0.2.2-py3-none-any.whl

Download URL firefly_cash_converter-0.2.2-py3-none-any.whl
Size 28.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
77defe71c95654816159f66697298e9a88d9ed8f89bbeeed8b6eebd023004a3e
BLAKE2b-256 checksum
How to use checksums
55f061aafe0c7f41dfe095834f1913770bcf1587f778db33a55248421c14eb7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Aug 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

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