mothermachine

Browse / Invoicing and finance

Firefly III

Self-hosted double-entry personal finance manager with a REST API that covers almost everything.

AdaptableOperable ProductWeb app Deterministic PHPJavaScript API License: AGPL-3.0

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.

Use it when
  • 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
Gotchas
  • 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.

Editions

Free · Free open source

  • Clonegit clone https://github.com/firefly-iii/firefly-iii
  • ImageContainer

For agents: JSON · Markdown

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_KEY APP_URL DB_CONNECTION DB_HOST DB_DATABASE DB_USERNAME TZ DEFAULT_LANGUAGE DEFAULT_LOCALE MAIL_MAILER MAIL_HOST AUTHENTICATION_GUARD STATIC_CRON_TOKEN TRUSTED_PROXIES SITE_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

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.

Docs
api-docs.firefly-iii.org/

Reach

Partial coverage. 9 of 10 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Accounts and balancesReachableroutes/api.php prefixes v1/accounts, v1/summary
Book and search transactionsReachableroutes/api.php v1/transactions, v1/transaction-journals, v1/search
Budgets and budget limitsReachableroutes/api.php v1/budgets, v1/budget-limits, v1/available-budgets
Categories and tagsReachableroutes/api.php v1/categories, v1/tags
Rules for automatic transaction handlingReachableroutes/api.php v1/rules, v1/rule-groups
Recurring transactions and billsReachableroutes/api.php v1/recurrences, v1/bills, v1/subscriptions
Piggy banks (saving goals)Reachableroutes/api.php v1/piggy-banks
Reports and chartsReachableroutes/api.php v1/insight/expense, v1/insight/income, v1/chart/*
Attachments and data exportReachableroutes/api.php v1/attachments, v1/data/export
Import bank statementsNot reachableimport 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

FieldWhere it was seenConfidence
formFactorLaravel web app, Docker image (README)95%
executionModelno model at runtime95%
operabilityREADME: 'REST JSON API that covers almost every part of Firefly III'; api-docs.firefly-iii.org published by the Builder; routes/api.php in repo95%
effort.env.example in repo lists deployment variables85%
editionsREADME: free and open source, donations only95%
activeGitHub pushedAt 2026-09-02–
reach85%

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