Why Self-Host Your Personal Finance Manager?
- Total Privacy: Your spending habits, income sources, and account balances stay on your hardware — never transmitted to a third-party cloud service.
- Unlimited Accounts: No tier restrictions. Track every bank account, credit card, crypto wallet, and cash stash.
- Custom Rules: Automate transaction categorization with powerful rule engines tailored to your spending patterns.
- No Subscription Fees: Most cloud budgeting apps charge $5–$15/month. Firefly III is free and open source (AGPL-3.0).
- Data Portability: Export everything to CSV or JSON at any time. No vendor lock-in.
- Multi-User Support: Share a single instance with family members, each with separate accounts and budgets.
- Multi-Currency: Track accounts in different currencies with automatic exchange rate updates.
Firefly III is a self-hosted personal finance manager that follows the envelope budgeting methodology. It was created by James Cole and has grown into one of the most capable open-source finance platforms available, supporting double-entry bookkeeping, automated imports from over 2,000 banks via CSV and API, and a robust rule-based transaction categorization engine.
Core Features
| Feature | Details |
|---|---|
| Account Types | Asset, Expense, Revenue, Debt, Loan, Mortgage, Liability |
| Budgeting | Envelope-style with monthly/weekly caps per category |
| Rules Engine | Auto-categorize transactions by description, amount, or tags |
| Recurring Transactions | Set up bills, salary deposits, subscriptions |
| Piggy Banks | Savings goals with progress tracking |
| Reports | Income/expense charts, category breakdowns, net worth over time |
| Multi-Currency | Automatic rates via external APIs |
| API | Full REST API for third-party integrations |
| Data Import | CSV, Spectre API, Nordigen (formerly GoCardless) |
| Two-Factor Auth | TOTP-based 2FA for login security |
| Webhooks | Trigger external services on transaction events |
System Requirements
Firefly III is a PHP/Laravel application backed by MySQL, MariaDB, or PostgreSQL. For a single-user household, minimal resources are needed:
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 1 core | 2 cores |
| RAM | 512 MB | 1 GB |
| Storage | 2 GB | 5 GB (for transaction history) |
| Database | MariaDB 10.3+ / PostgreSQL 12+ | MariaDB 10.6+ / PostgreSQL 15+ |
A Raspberry Pi 4 or any small VPS with 1 GB of RAM handles Firefly III comfortably.
docker Installation
The recommended deployment method is Docker Compose. This gives you Firefly III, a database, and a cron container for scheduled tasks in one stack.
Step 1: Create the project directory
| |
Step 2: Write the docker-compose.yml
| |
Step 3: Generate secrets and create .env
| |
Important: Save the .env file somewhere safe. If you lose the APP_KEY, you cannot decrypt stored credentials.
Step 4: Start the stack
| |
Firefly III will initialize the database on first launch. This takes about 30–60 seconds. Check the logs:
| |
Look for the line indicating the database migration completed successfully, then navigate to http://your-server-ip:8080 to create your admin account.
Reverse Proxy Setup
Exposing Firefly III directly on port 8080 is not recommended for production. Place it behind a reverse proxy caddyTLS termination.
Caddy (simplest option)
| |
Nginx
| |
First-Time Configuration
After creating your admin account, configure these essential settings:
1. Set Your Preferences
Navigate to Options → Preferences:
- Set your fiscal year start (usually January 1)
- Choose your default currency
- Set week start to Monday or Sunday
- Enable dark mode if preferred
2. Create Asset Accounts
Go to Accounts → Create new and add your real-world accounts:
| |
3. Set Up Expense Categories
Categories are the backbone of Firefly III’s budgeting. Create categories that match your spending:
| |
4. Configure Budgets
Budgets cap spending per category per period:
| |
Automating Transaction Imports
Manually entering every transaction defeats the purpose of a finance manager. Firefly III supports multiple import methods.
Option 1: CSV Import (works with every bank)
Most banks let you export transactions as CSV. Firefly III has an importer that maps CSV columns to its data model.
- Export CSV from your bank — ensure it includes date, description, amount, and optionally category.
- Download the Firefly III Data Importer — a separate Docker container:
| |
- Open the importer at
http://your-server:8081and follow the mapping wizard. - Save import configurations for reuse next month.
Option 2: Nordigen (free, open-source bank API)
Nordinen (formerly GoCardless) provides free open banking access for 3,000+ banks across Europe and growing support elsewhere. It connects directly to your bank and pulls transactions automatically.
- Register at nordigen.com and get your API credentials.
- Add to your Firefly III .env:
| |
- Restart Firefly III and configure the connection in the admin panel under Configuration → Provider Settings.
- Link your accounts — Firefly III will pull transaction history going back 90 days (or longer, depending on your bank).
Option 3: Manual CSV mapping with jq
For banks with unusual CSV formats, pre-process the file before importing:
| |
Rules Engine: Auto-Categorize Transactions
The rules engine is Firefly III’s most powerful feature. Create rules that automatically tag and categorize incoming transactions.
Example Rules
Rule: Identify grocery stores
| |
Rule: Flag subscriptions
| |
Rule: Split utility bills
| |
Rules can be configured through the web UI under Rules → Create new rule. For advanced users, rules can also be managed via the REST API.
Piggy Banks: Track Savings Goals
Piggy banks let you set savings targets and monitor progress:
| |
Every time you transfer money to the linked savings account, Firefly III updates the piggy bank progress automatically.
Net Worth and Reports
Firefly III generates several built-in reports:
| Report | What It Shows |
|---|---|
| Net Worth | Total assets minus liabilities over time |
| Income vs Expenses | Monthly comparison chart |
| Budget Report | Actual spending vs budgeted amount per category |
| Category Report | Spending breakdown by category with percentages |
| Tag Report | Spending filtered by tags |
| Bill Report | Upcoming and paid bills |
| Piggy Bank Report | Progress on all savings goals |
The net worth report is particularly valuable — it gives you a single number tracking your financial health over months and years.
Advanced: Custom API Integrations
Firefly III has a comprehensive REST API documented at /api/v1/about. Here are practical uses:
Check current balance via API
| |
Create a transaction via API
| |
Mobile access with 3rd-party apps
Several mobile apps connect to Firefly III via its API:
- Firefly III Mobile (unofficial, Android/iOS)
- Popsicle (iOS, open source)
- Firefly Assistant (Android, automates SMS-based transaction entry)
Backup Strategy
Protect your financial data with regular backups:
| |
Add to crontab:
| |
Migration from Other Services
From Mint (RIP) or Monarch Money
Most services let you export transaction history as CSV:
- Export all transactions as CSV from your current service.
- Map the columns using the Firefly III Data Importer.
- Import accounts first, then transactions.
- Recreate budgets and categories manually (these rarely export cleanly).
From YNAB
YNAB uses a different data model but exports are possible:
- Go to Settings → Export Data in YNAB.
- Download the CSV files for transactions and budgets.
- Use the importer to map YNAB’s category format to Firefly III categories.
- Note: YNAB’s envelope budgeting maps well to Firefly III’s budget system.
Common Issues and Solutions
“APP_KEY missing” error
The APP_KEY must be set before the first database migration. If you started without it:
| |
High memory usage on MariaDB
For small deployments, tune MariaDB to use less RAM:
| |
Missing transactions from bank import
Banks sometimes paginate or limit exports. If you’re missing data:
- Check the date range on the export — some banks only show 90 days by default.
- Request a longer history in your bank’s online portal.
- For Nordigen, ensure the account consent hasn’t expired (90-day default).
- Re-run the import with a fresh CSV covering the missing date range.
Getting Help
- Official Documentation: docs.firefly-iii.org
- GitHub Repository: github.com/firefly-iii/firefly-iii
- Discord Community: Active community for troubleshooting and feature discussions
- Reddit: r/FireflyIII for user tips and workflows
Firefly III turns personal finance management from a monthly chore into an automated, privacy-respecting system that gives you genuine insight into where your money goes — without selling your data to advertisers or charging subscription fees.
Frequently Asked Questions (FAQ)
Which one should I choose in 2026?
The best choice depends on your specific requirements:
- For beginners: Start with the simplest option that covers your core use case
- For production: Choose the solution with the most active community and documentation
- For teams: Look for collaboration features and user management
- For privacy: Prefer fully open-source, self-hosted options with no telemetry
Refer to the comparison table above for detailed feature breakdowns.
Can I migrate between these tools?
Most tools support data import/export. Always:
- Backup your current data
- Test the migration on a staging environment
- Check official migration guides in the documentation
Are there free versions available?
All tools in this guide offer free, open-source editions. Some also provide paid plans with additional features, priority support, or managed hosting.
How do I get started?
- Review the comparison table to identify your requirements
- Visit the official documentation (links provided above)
- Start with a Docker Compose setup for easy testing
- Join the community forums for troubleshooting