Jacob Kiers b85c366176 feat: implement account linking and management system
Add comprehensive account linking functionality to automatically match bank accounts to Firefly III accounts, with manual override options. This includes:

- New LinkStore module for persistent storage of account links with auto-linking based on IBAN matching
- Extended adapter traits with inspection methods (list_accounts, get_account_status, etc.) and discover_accounts for account discovery
- Integration of linking into sync logic to automatically discover and link accounts before syncing transactions
- CLI commands for managing account links (list, create, etc.)
- Updated README with new features and usage examples

This enables users to easily manage account mappings between sources and destinations, reducing manual configuration and improving sync reliability.
2025-11-27 21:59:29 +01:00
2025-11-27 21:24:52 +01:00
2025-11-27 21:24:52 +01:00

Banks2FF

A robust command-line tool to synchronize bank transactions between various sources and destinations. Currently supports GoCardless (formerly Nordigen) to Firefly III, with extensible architecture for additional sources and destinations.

Key Benefits

  • Automatic Transaction Sync: Keep your Firefly III finances up-to-date with your bank accounts
  • Intelligent Caching: Reduces GoCardless API calls by up to 99% through encrypted local storage
  • Multi-Currency Support: Handles international transactions and foreign currencies correctly
  • Smart Duplicate Detection: Avoids double-counting transactions automatically
  • Reliable Operation: Continues working even when some accounts need attention
  • Safe Preview Mode: Test changes before applying them to your finances
  • Rate Limit Aware: Works within API limits to ensure consistent access
  • Flexible Account Linking: Automatically match bank accounts to Firefly III accounts, with manual override options

🚀 Quick Start

Prerequisites

  • Rust (latest stable)
  • GoCardless Bank Account Data account
  • Running Firefly III instance

Setup

  1. Copy environment template: cp env.example .env
  2. Fill in your credentials in .env:
    • GOCARDLESS_ID: Your GoCardless Secret ID
    • GOCARDLESS_KEY: Your GoCardless Secret Key
    • FIREFLY_III_URL: Your Firefly instance URL
    • FIREFLY_III_API_KEY: Your Personal Access Token
    • BANKS2FF_CACHE_KEY: Required encryption key for secure transaction caching

Usage

# Sync all accounts (automatic date range)
cargo run -p banks2ff -- sync gocardless firefly

# Preview changes without saving
cargo run -p banks2ff -- --dry-run sync gocardless firefly

# Sync specific date range
cargo run -p banks2ff -- sync gocardless firefly --start 2023-01-01 --end 2023-01-31

# List available sources and destinations
cargo run -p banks2ff -- sources
cargo run -p banks2ff -- destinations

# Manage account links
cargo run -p banks2ff -- accounts link list
cargo run -p banks2ff -- accounts link create <source_account> <dest_account>

# Additional inspection commands available in future releases

🖥️ CLI Structure

Banks2FF uses a structured command-line interface with the following commands:

  • sync <SOURCE> <DESTINATION> - Synchronize transactions between source and destination
  • sources - List all available source types
  • destinations - List all available destination types
  • accounts link - Manage account links between sources and destinations

Additional inspection commands (accounts list/status, transactions, status) will be available in future releases.

Use cargo run -p banks2ff -- --help for detailed command information.

📋 What It Does

Banks2FF automatically:

  1. Connects to your bank accounts via GoCardless
  2. Discovers and links accounts between GoCardless and Firefly III (with auto-matching and manual options)
  3. Downloads new transactions since your last sync
  4. Adds them to Firefly III (avoiding duplicates)
  5. Handles errors gracefully - keeps working even if some accounts have issues

🔐 Secure Transaction Caching

Banks2FF automatically caches your transaction data to make future syncs much faster:

  • Faster Syncs: Reuses previously downloaded data instead of re-fetching from the bank
  • API Efficiency: Dramatically reduces the number of calls made to GoCardless
  • Secure Storage: Your financial data is safely encrypted on your local machine
  • Automatic Management: The cache works transparently in the background

The cache requires BANKS2FF_CACHE_KEY to be set in your .env file for secure encryption (see env.example for key generation instructions).

🔧 Troubleshooting

  • Unknown source/destination? Use sources and destinations commands to see what's available
  • Account not syncing? Check that the IBAN matches between GoCardless and Firefly III, or use accounts link to create manual links
  • Missing transactions? The tool syncs from the last transaction date forward
  • Rate limited? The tool automatically handles API limits and retries appropriately

For technical details, see docs/architecture.md

Description
A tool to retrieve bank transactions from GoCardless and store them in Firefly III.
Readme 992 KiB
Languages
Rust 100%