Firefly III
Self-hosted personal finance manager
Firefly III is a free, open-source personal finance manager. It helps you track income, expenses, budgets, and bills, with rules for automatic transaction categorization and detailed reporting.
Key features
- Budgeting and bill tracking
- Rule-based auto-categorization
- Detailed financial reports
- REST API and data importer
Pros & cons
Strengths
- Powerful budgeting features
- Strong API for automation
Trade-offs
- Manual entry unless importing
- Steeper learning curve
Firefly III replaces
Last reviewed Aug 26, 2026 · 784 words
Firefly III is a ledger with budgets attached, and Actual is a budget with a ledger attached; pick by which half you will open every day. If you want to know where every euro went across 6 accounts, 3 currencies, a mortgage, and a shared credit card, and you want reports you could show an accountant, Firefly is the more capable tool by a distance. If you want the envelope method and a fast "can I afford this" answer, Actual Budget gets there in a fraction of the clicks. Firefly has been in development since 2016, has 24,415 stars, is AGPL-3.0 PHP, and runs in 512 MB; the cost is a learning curve the catalogue politely calls "steeper".
The model is accounts, not categories
Every transaction in Firefly moves money between two accounts: a withdrawal goes from an asset account to an expense account, a deposit from a revenue account to an asset, a transfer between two assets. Expense accounts are usually shops ("Lidl"), not categories ("Groceries"); categories, budgets, tags, and bills are labels layered on top. This is where newcomers stall, because the first week feels like bookkeeping rather than budgeting. It pays off the moment you ask a question Actual cannot answer cleanly, such as "how much did I spend at this one shop across two cards and a joint account", or when you need a net worth figure that includes a liability account amortising correctly.
Two containers, and the importer is the second one
The core image is fireflyiii/core on port 8080; give it a database (MariaDB or Postgres for anything you care about, SQLite for a trial) and an APP_KEY that is exactly 32 characters, because a wrong length fails at boot with an unhelpful message. Importing is a separate application, fireflyiii/data-importer, that talks to Firefly through its API with a personal access token:
services:
firefly:
image: fireflyiii/core:latest
environment:
- APP_KEY=CHANGEME_to_exactly_32_characters
- DB_CONNECTION=pgsql
- DB_HOST=db
- DB_DATABASE=firefly
- DB_USERNAME=firefly
- DB_PASSWORD=change-this
volumes:
- ./upload:/var/www/html/storage/upload
ports: ["8080:8080"]
importer:
image: fireflyiii/data-importer:latest
environment:
- FIREFLY_III_URL=http://firefly:8080
ports: ["8081:8080"]
Keeping the importer separate looks like bureaucracy until you realise it is the component that talks to banks, and so the one you can leave switched off.
Bank sync is a country question
The importer takes CSV and camt.053 files from any bank, and live connections through GoCardless Bank Account Data (free for personal use, covers most European banks under PSD2) and Salt Edge. For the US there is no first-party connector; people bridge through third-party aggregators or settle for downloading CSVs monthly. Whatever the source, the importer's configuration file remembers your column mapping and account matching, so the second import is a two-click job, and running the importer on a schedule against a GoCardless connection gives you something close to Mint's automatic feed without handing anyone your bank password. The finance category notes which tools have this for which regions.
Rules do the categorising
The rules engine is the feature that makes the fear of manual entry overblown. A rule is a trigger ("description contains SPOTIFY", "amount more than 500", "destination account is Landlord") and one or more actions (set category, set budget, add tag, rename description, link to a bill). Rules run on import and can be replayed over history, so after a month of tuning most transactions arrive categorised and you review exceptions. Combined with bills (recurring expected charges that mark themselves paid when a matching transaction appears) and piggy banks (savings targets inside an asset account), it covers the YNAB feature list people worry about losing; the YNAB alternatives page goes through the mapping.
Backups are two things
Back up the database and the upload volume, which holds attachments. Firefly also has a full JSON export in the UI and the API can pull everything, but a database dump is what you restore from. Recurring transactions and rules live in the database too, so a restore is complete. Updates are frequent and safe, migrations run on boot, and the changelog is worth 2 minutes.
What I'd do
Postgres, the two-container layout above, behind a reverse proxy with the importer exposed only on the LAN. Spend the first evening creating asset accounts and 20 rules rather than entering history, then import 3 months of CSVs and watch the rules do the work. If after 2 weeks you find you only ever open the budget page, move to Actual and keep the Firefly database as an archive; if you keep opening the reports, you have found your tool.
Compare Firefly III
16 head-to-head comparisons.
- Firefly III vs Maybe
- Firefly III vs Actual Budget
- Firefly III vs Sure
- Firefly III vs Cashew Self-Host
- Firefly III vs Paisa
- Firefly III vs Money Manager Ex
- Firefly III vs ExpenseOwl
- Firefly III vs Kresus
- Firefly III vs Budget Zero
- Firefly III vs BudgetBee
- Firefly III vs MoneyWallet
- Firefly III vs Beancount Import
- Firefly III vs MyFin
- Firefly III vs Buckets
- Firefly III vs Budgetwarrior
- Firefly III vs Costflow
Similar budgeting & finance apps
Maybe
Budgeting & FinanceOpen-source personal finance and wealth app
Replaces Mint, Personal Capital
HyperSwitch
Budgeting & FinancePayment switch to make payments fast, reliable and affordable
Actual Budget
Budgeting & FinanceLocal-first envelope budgeting app
Replaces YNAB, Mint
Lago
Budgeting & FinanceOpen-source billing and metering API
Replaces Stripe Billing, Chargebee
Akaunting
Budgeting & FinanceFree open-source accounting software online
Replaces QuickBooks, Xero
Invoice Ninja
Budgeting & FinanceOpen-source invoicing and billing platform
Replaces FreshBooks, QuickBooks