9442d71e8442f8c3301abab09aa4bec9f9ac74d1
- Validate amounts are non-zero and within reasonable bounds (≤1B) - Validate currency codes are 3 uppercase ASCII letters - Apply validation to main and foreign amounts/currencies - Add comprehensive tests for validation logic - Maintain graceful error handling for invalid data
Banks2FF
A robust command-line tool to synchronize bank transactions from GoCardless (formerly Nordigen) to Firefly III.
✨ Key Benefits
- Automatic Transaction Sync: Keep your Firefly III finances up-to-date with your bank accounts
- 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
🚀 Quick Start
Prerequisites
- Rust (latest stable)
- GoCardless Bank Account Data account
- Running Firefly III instance
Setup
- Copy environment template:
cp env.example .env - Fill in your credentials in
.env:GOCARDLESS_ID: Your GoCardless Secret IDGOCARDLESS_KEY: Your GoCardless Secret KeyFIREFLY_III_URL: Your Firefly instance URLFIREFLY_III_API_KEY: Your Personal Access Token
Usage
# Sync all accounts (automatic date range)
cargo run -p banks2ff
# Preview changes without saving
cargo run -p banks2ff -- --dry-run
# Sync specific date range
cargo run -p banks2ff -- --start 2023-01-01 --end 2023-01-31
📋 What It Does
Banks2FF automatically:
- Connects to your bank accounts via GoCardless
- Finds matching accounts in your Firefly III instance
- Downloads new transactions since your last sync
- Adds them to Firefly III (avoiding duplicates)
- Handles errors gracefully - keeps working even if some accounts have issues
🔧 Troubleshooting
- Account not syncing? Check that the IBAN matches between GoCardless and Firefly III
- 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
Languages
Rust
100%