Launching Soon!
Personal Finance · Self-Hosted

Plaid Connector
for Firefly III

The missing link between your bank and Firefly III. Professional-grade bank sync with a polished web UI — free, open source, and privacy-first.

Runs on
Linux
Linux
Ubuntu
Version 1.0.0
License MIT
Language Python 3.8+
Dependencies Minimal
Database None — YAML

See it in action

Plaid Connector for Firefly III
Screenshot 2
Screenshot 3
Screenshot 4

Up and running in minutes

Install
git clone https://github.com/keithdriscoll/firefly-iii-plaid-connector.git
cd firefly-iii-plaid-connector
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python3 app.py

Then open http://your-server:8095 and follow the 6-step setup wizard. That's it.   Full setup guide →

Prerequisites
• Python 3.8+
• A running Firefly III instance
• A free Plaid developer account — dashboard.plaid.com/signup
• A Linux server or machine accessible via browser

What it does

Python 3.8+ Plaid API Firefly III Flask YAML Config systemd bcrypt Self-Hosted MIT License No Database
Core
Professional Web UI

Browser-based setup and management — no terminal required after install. Clean, fast, works on any device.

6-Step Setup Wizard

Walks you through everything from a fresh install — Plaid keys, Firefly token, bank linking, account mapping. No guessing.

Multiple Banks

Link and sync as many banks as you need simultaneously. Chase, Chime, Wells Fargo — all in one place.

Real-Time Sync Feed

Watch transactions import live as they process. Every import is visible and auditable in the UI.

Secure Bank Linking

Via Plaid Link — your bank credentials never touch your server. Industry-standard OAuth flow.

systemd Service

Autostart on server boot, toggle from the UI. Runs quietly in the background without babysitting.

Account Management
Intelligent Account Mapping

Contextual type selection with smart defaults — the connector figures out what kind of account it's dealing with so you don't have to.

Auto Account Creation

Firefly III accounts created automatically if they don't exist yet. No manual setup required on the Firefly side.

Opening Balance Calculation

Correct balances from day one. The connector calculates and sets your opening balance so Firefly starts with accurate numbers.

Secured Credit Card Support

Proper classification and balance handling for secured cards — not just stuffed into a generic account type.

Transaction Intelligence
Duplicate Detection

Checks Firefly III before creating any transaction. Duplicates are not possible — run sync as many times as you want.

Transfer Detection

Internal transfers recorded correctly — never as expenses. Moving money between your own accounts works as expected.

PayPal Deduplication

Handles PayPal's notorious double-entry behavior cleanly. One transaction in, one transaction recorded.

AI-Powered Categorization

Plaid's intelligent Personal Finance Categories applied automatically — transactions arrive in Firefly already tagged and organized.

Privacy & Security
No Database

YAML-only persistence — everything is human-readable plain text. No SQLite, no hidden state, nothing you can't inspect.

Secrets in .env

Credentials never written to config files. Plaid tokens, Firefly tokens, and passwords live in .env — excluded from git.

Security Hardened

Full audit completed. bcrypt passwords, CSRF protection, brute force protection, HTTP security headers, SSRF protection, input validation.

What's coming

Custom transaction rules
Plesk one-click installer
Akaunting connector
Cursor-based incremental sync
Multi-currency support

Six steps to full sync

1
Configure Plaid

Enter your free Plaid Client ID and Secret. Takes 30 seconds to get from the Plaid dashboard.

2
Connect Firefly III

Enter your Firefly III URL and Personal Access Token. Your Firefly instance stays where it is.

3
Create a Login

Set your username and password for the web UI. bcrypt-hashed, brute-force protected.

4
Link Your Bank

Plaid Link opens securely in your browser. Your bank credentials never touch your server.

5
Map Accounts

Match each Plaid account to a Firefly III account name. Smart defaults — usually nothing to change.

6
Sync

Transactions import in real time — watch the feed. After first setup, syncing is one click. That's it. 🎉

Common Questions

No. A free Plaid developer account is all you need. The connector only uses the Transactions product — no paid Plaid features required. Sign up at dashboard.plaid.com/signup.

Your transactions flow from Plaid directly to your Firefly III instance — that's it. Nothing is sent anywhere else. There's no telemetry, no analytics, no external calls beyond Plaid's API and your own Firefly III URL.

Click "Reconnect" when prompted in the UI. Banks periodically require re-authentication via Plaid — this is normal behavior, not a bug. The connector detects expired sessions and shows a friendly prompt instead of a raw error.

Not possible. The connector checks Firefly III before creating any transaction. You can run sync as many times as you want — already-imported transactions are always skipped.

Plaid returns up to 2 years of transaction history. On first sync you'll get everything available. Subsequent syncs only fetch what's new.

Yes. Sandbox mode is fully supported — test everything safely before switching to production. The environment toggle is right in the setup wizard.

Not a bug. Balances reflect what your bank last reported to Plaid — typically end of day. Real-time balances are a Plaid limitation, not a connector issue.

Support & Community
This is my full-time work, no VC, no ads — tips keep the lights on.
GitHub Issues Discussions r/FireflyIII r/selfhosted
Tips appreciated  ❤️