Browse / Invoicing and finance
Firefly III
Self-hosted double-entry personal finance manager with a REST API that covers almost everything.
Firefly III tracks accounts, transactions, budgets, categories, bills, piggy banks and rules on your own server. The Builder ships a JSON REST API that mirrors the UI, so an agent can book transactions, manage budgets and pull reports. Bank imports run through a separate Data Importer tool.
- I want my money tracked on my own server and my agent to file transactions and check budgets
- I run a sole trade and need double-entry books without paying for accounting software
- AGPL-3.0: modifications you host for others must be published
- Personal finance by design; no invoicing, client portal or tax reports
- Bank imports need the separate Data Importer container and its own credentials
Last activity Sep 2, 2026. Fit: adaptable 2, operable 3.
Adaptable: what is yours to change
Make it yours
Config only16 things to edit
Copy .env.example and set the app key, database, timezone, language and mail driver; optional single sign-on through AUTHENTICATION_GUARD. Behavior beyond deployment (rules, budgets, currencies) is data you create in the app or over the API.
- Env vars
APP_KEYAPP_URLDB_CONNECTIONDB_HOSTDB_DATABASEDB_USERNAMETZDEFAULT_LANGUAGEDEFAULT_LOCALEMAIL_MAILERMAIL_HOSTAUTHENTICATION_GUARDSTATIC_CRON_TOKENTRUSTED_PROXIESSITE_OWNER- Config files
.env- Prompt files
- none
- Accounts you need
- SMTP or Mailgun provider (optional)GoCardless or Spectre account for bank import through the Data Importer (optional)
Source
- github.com/firefly-iii/firefly-iii
- AGPL-3.0 license
- Last commit Sep 2, 2026
- 24,484 stars
Operable: what an agent can drive
Interface
OfficialAPIpublished by the builderlocal
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
Reach
Partial coverage. 9 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Accounts and balances | Reachable | routes/api.php prefixes v1/accounts, v1/summary |
| Book and search transactions | Reachable | routes/api.php v1/transactions, v1/transaction-journals, v1/search |
| Budgets and budget limits | Reachable | routes/api.php v1/budgets, v1/budget-limits, v1/available-budgets |
| Categories and tags | Reachable | routes/api.php v1/categories, v1/tags |
| Rules for automatic transaction handling | Reachable | routes/api.php v1/rules, v1/rule-groups |
| Recurring transactions and bills | Reachable | routes/api.php v1/recurrences, v1/bills, v1/subscriptions |
| Piggy banks (saving goals) | Reachable | routes/api.php v1/piggy-banks |
| Reports and charts | Reachable | routes/api.php v1/insight/expense, v1/insight/income, v1/chart/* |
| Attachments and data export | Reachable | routes/api.php v1/attachments, v1/data/export |
| Import bank statements | Not reachable | import is a separate Firefly III Data Importer tool with its own config; the core API only accepts transactions you already parsed |
Code stack
- Languages
- PHPJavaScript
- Frameworks
- Laravel
- Package manager
- composer
- Database
- MySQLPostgreSQLSQLite
- Hosting target
- DockerKubernetesVMCloudronYunoHost
- Built
- Human-written (recorded, never ranked)
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | Laravel web app, Docker image (README) | 95% |
| executionModel | no model at runtime | 95% |
| operability | README: 'REST JSON API that covers almost every part of Firefly III'; api-docs.firefly-iii.org published by the Builder; routes/api.php in repo | 95% |
| effort | .env.example in repo lists deployment variables | 85% |
| editions | README: free and open source, donations only | 95% |
| active | GitHub pushedAt 2026-09-02 | – |
| reach | 85% |
Open questions
- api-docs.firefly-iii.org returned 403 to the fetcher; Reach was read from routes/api.php instead
- Which MCP wrapper (Knuckles-Team/firefly-iii-mcp or scarela/rs-fireflyiii-mcp) is worth naming for MCP-only clients
Sources
- github.com/firefly-iii/firefly-iii sourcing:invoicing-finance:github
- github.com/firefly-iii/firefly-iii/blob/main/routes/api.php analysis:invoicing-finance
- api-docs.firefly-iii.org/ sourcing:invoicing-finance:github