Firefly III: A free and open source personal finance manager
firefly-iii.org
firefly-iii.org
[0] https://docs.firefly-iii.org/explanation/firefly-iii/backgro...
However, I'd like to understand how you ended up where you are. How'd you somehow end up so burned by zero-based or envelope-based budgeting? FWIW, I've come from a traditional budgeting method and migrated to a zero-based and both can work.
> But also keep in mind: it's harder to spend less money with zero-based budgeting.
I'd argue the opposite is a problem with traditional budgeting methods: you're budgeting money you don't yet have. Yes, you might get it, but you don't until you have it. More importantly, how? How is it harder to spend less?
> It's harder to get a feeling for your financial situation with zero-based budgeting [..]
What? With envelope-based budgeting the colloquial jobs that your money has must be defined. You have to acknowledge exactly what you have and what you don't have, because you can't play with imaginary money. If you don't have enough money to put aside for rent next month, you know you don't have that money or you're not willing to spend it.
How?
> it's especially harder to change anything
In my own experience, when it's hard to change your budget with envelope-based budgets it's usually because you're constrained in your money. The exception to this has been financial investments: you can use tools like YNAB for it, but they're not created for forecasting or any of that stuff -- you're here for your here and now.
In a way, I think you're absolutely correct that it's harder to change anything, but not because the method is wrong; it's because it addresses the fundamental issue of traditional budgeting and it's difficult and tough to deal with the consequences: you can only budget the money you actually have. You can't make up numbers about what a month usually looks like.
If you want to feel safe about next month's rent, the only way is to have next month's rent budgeted. Thus, isn't harder better if harder is actual change as opposed to imaginary?
I am left with a sour taste that you not only decide to talk about things like paycheck to paycheck, but also combine it with a conclusion that says:
> Use Firefly III. Use GnuCash. Use anything from this list. But skip the zero-based nonsense.
I think you'd be better off acknowledging the different audiences more-so than categorising zero-based budgeting as nonsense.
I'm not even going to touch the question of recommending someone to use GnuCash as an alternative to zero-based budgeting.
You can predict what your month will look like based on your rent, utilities and how expensive are your groceries from the past months.
The unpredictable is accident and sickness but that's what insurances and emergency funds are for.
I was originally on YNAB4, and then financier.io for ~2 years.
Do you see any major drawback comparing to YNAB4?
Other than that, it has all the features of YNAB4 I can recall.
Personally, I add each transaction manually. It allows me to stay on top of my budget.
Is there an OSS option that comes close? Seems like the biggest hurdle is finding one that is close to reliable when authenticating with other sites (and able to adapt to changes they make, 2FA, etc.).
I guess the good news is that most of the ones I use are fairly popular/big (e.g. Vanguard, Ally, Schwab, etc.). But I have a couple loans (home, car) tied into smaller institutions.
EDIT: related, a recent thread on Mint alternatives that I had missed:
Ask HN: Alternative to Mint.com?
(9 days ago, 44 votes, 71 comments)
It's a simple daily budgeting app I put together for my wife and I to help us be more cognizant of our daily spending. Upvotes count as interest.
My wife has never opened either and has vague anxiety (read: frustrating) about going on vacations or making big purchases even though we’re doing great. I’m the sole income for 5 so I suppose I have to take the mental load of ensuring things are budgeted, diversified, HSA/529 is funded etc.
I also tried the spreadsheet approach since I was so frustrated with budgeting apps, but they're a bit overwhelming for some.
If you don't open-source it, where is the data stored?
This is more a budgeting tool than a Financial analytics tool, but it'll sort and filter the data, and report features are being built out (They exist in the 'experimental' section)
We have 4 credit cards and two chequing accounts plus mortgage etc at different institutions. It would be worth some small amount of money for me, especially for a desktop not SaaS solution, to get a unified view I can categorize, filter, sort, graph, etc.
I've been trying out Monarch more recently (which seems to use plaid, mx, and other methods). They have a discount for people coming over from mint as well as a way to import mint history.
I'm still cleaning up my mint data before running the import. I've liked it thus far; I'd say it's pretty much what I hoped Mint would become when I started using Mint a decade ago.
You can try it for free to see if it work for you first, and if you want to upgrade you can pay either monthly or annually.
Disclaimer: I am the creator of BudgetSheet :)
IIRC, it had some caveats like it could only be viewed or edited on desktop. Now it’s called “my financial picture” accessible on mobile. All of my account links are broken but it worked at one time and probably could again with some work. It was nice to be able to use one service to find a transaction or pending transaction I couldn’t remember how I paid for.
Makes it super easy to maintain proper history since you can instantly create transactions from your phone.
It does let you start a webserver from your phone and use it on your desktop if you really have to, but the workflow is not ideal. It also does would not work if you need to track expenses of multiple people or want to automatically import expenses from your bank. It does allow you to export your data though. Backup and restore can be done via Google Drive.
Not OSS, and also paid(one time), but was totally worth it for me.
Check out this amazing article that helped me: https://www.mathstat.dal.ca/~selinger/accounting/tutorial.ht...
Ironically, I've found that since I started to rely more on downloading the CSVs and importing them (as opposed to entering everything by hand), I've been entering things less regularly because of the increased start up time. If each account just had an API to pull transactions, I could schedule a job to download everything daily and life would be so much better.
I'm unsure if providing the virtual accountant bank credentials is more or less secure than Plaid/Yodlee, but this is a major pain point.
I'm only using it for tracking, not budgeting, so I do it maybe every 1-2 months.
Unless you have an Apple Card. I went to download last year's transactions and found out that they only allow you to download a PDF statement for each month!
Before PSD2, at least German banks had a free api one could automatically query.
The EU claims it's done because of "security".
Essentially corruption.
Multi-currency is one of those weird things, where if you actually need it your options are much more limited, but it also feels weird to keep asking financial software developers to keep implement a niche-ish feature. Anyway, it's good to have options.
How does this compare?
Gnucash is an actual double entry bookkeeping system. Firefly is not.
I want to like Firefly, but you cannot properly record all liabilities. Also, you can't mix income and expenses in the same account. For example, if I get a refund, it has to go to an income account. Not net off against an expense, which is the usual way bookkeeping.
Still a lot of depth to Firefly and has its own learning curve.
Its also written in PHP using Laravel which can be appealing.
As for PHP, it has never been confidence inspiring. I will say this despite having used Laravel professionally.
How I'm currently manually doing Amazon orders in GnuCash is I go to the register for account "Liabilities > Credit Cards > Chase-CC-1234", and add a transation with description, say, "2024-02-16 Amazon order 113-1234567890-987654 (bobs red mill, soy curls, yaktrax)", with a split for each item and for each payment method used (credit card, CC rewards, gift balance).
I keep the order date in the transaction description so that the GnuCash date can be the date that the CC is charged. If Amazon splits the shipment and does multiple CC charges (potentially on very different dates), so that GnuCash reflects those dates, I'm currently duplicating the transaction in GnuCash, and then editing the splits in the original and the duplicate to match the CC charges and what they're for. And each transaction description gets a "#1", "#2", etc. added after the Amazon order number.
One upside of the manual process is that the work is negative feedback for spending money. :)
It’s fairly detailed. One issue is that matching refunds to line items can be ambiguous.
I have a side project that does a best effort match, when I get around to completing it I’ll publish it. If you build it before me please share :)
It's not that FIII is bad at was it was doing, but simply Actual was a bit faster, a bit simpler, a bit more practical to use when importing. I'm mostly using rules, categories and reporting.
It was a maintainability nightmare. Needed to run 2 instances for my girlfriend and myself. A third instance I think for automatic imports from my bank.
Every 2/3 months whenever the integration with the Spectre API needed to be reauthorized another docker container had to be ran just to hit a reauthorize button. And then it was a battle with duplicate transactions which I could manage to fix but I could never make my girlfriend understand.
Then there was weird philosophy on incoming money in a category. Let's say you have a €200 diner with 3 friends. You pay the whole bill and get €150 back from your friends later. Firefly would tell you you spend €200 euros on restaurants instead of just €50.
Happily back to Ynab now.
There is literally no other accounting software that works like this.
/asking for a friend who used msmoney back in the day
I'm not just talking about this particular one, just in general on the idea of replacing SaaS (like Mint) with self-hosted. What is self-hosting buying here? If it's installed on the local, it's a waste of resources and development time, if it's hosted on a third party hoster we're back to somebody holding user's data.
Is this simply because people are so used to building Web apps that they use them everywhere?
(Yes you can file it under "old man yelling a the sky" category, I'm still on Quicken 2016 personally :) )
I wouldn't be surprised if there were a lot more web devs than native devs, too.
And finally, if you have something you want centralized, it's generally a lot easier to just have a web server than setting up some kind of system to sync the data between different computers. For finances, I could see wanting to use it on both mobile and desktop on a daily basis. That makes web a lot more desirable.
If you want to be able to check your finances on the phone you have to put it on a 3rd party server along with your data. Might as well go with SaaS like Mint. I don't.
You do lose some cross-platform capabilities when you do desktop apps, that is true, but there are some toolsets available (eg Qt).
So I guess it comes down to what people are used to work with, which is Web-first.
1) People learned to build web apps for other reasons - their job, other projects that were multi-user, etc. Now they're comfortable working in that language and deployment model
2) They can access it from multiple places. I can view it whether I'm on my desktop, laptop, phone, tablet, etc.
3) If their laptop gets stolen or destroyed, they don't have to worry about having lost the data. (3rd party syncing solutions put you back in the 'my financial data is now on someone else's server)
4) If you have other self-hosted apps, you can double (triple, etc.) up on things running on your web server, database, etc.
5) I can back up all my self-hosted apps by backing up my database and config files, instead of worrying about how each individual app stores the information, etc. I know I can dump or replicate a database. It's something I've been doing for decades.
6) If I need something to be highly available, this is something well understood for web apps. I know how to set up multiple databases and handle failovers. I've been doing it for decades.
7) I understand how to model performance in web applications. I know well how to tune nginx, php-fpm, postgres, etc. I know how to trace requests through them. I know how to debug issues with them. This is all heavily standardized. The same can't be said for desktop applications.
I'm sure there's a dozen more I'm not thinking of off the top of my head, too.
Electron has great documentation and we have a great variety of ready-to-use js widgets.
I really don't like this pattern either, but every time I've gone to trying to build a desktop app I get stuck in the mud. (I used JavaFX last time and got far enough to be usable, but I'd go to Electron if I wanted to have something to distribute.)
If you plan on sharing this data with other users, then sure, it makes perfect sense, you can't share stuff from desktop app (without standing up API or smth). But if it's some personal stuff, like finances, personal notes, etc etc why move it out to the open?
I tried Mint awhile ago and it offered seamless integration with most of the financial institutions I deal with. Like I can get all my CC transactions data, checking accounts, savings accounts, 401K and (almost) everything else. Wonderful. I just need to provide all credentials to Mint so that it can authenticate with these institutions.
My cell phone provider has been hacked 3 times in the last 5 years, with at least one time stuff like SSN numbers and physical addresses got taken. If anything remotely similar to that happens at the SaaS that has my credentials, that's not just my credit card and bad loans, that's my life savings that can disappear. That's just... a non-starter for me.
But I'm old and I guess younger folks don't care that much about life savings. To each their own :)
Additionally, even if you use a third party host, it seems less likely they'd be snooping through your application data, as it would provide no benefit to their business of selling you hosting infrastructure. The providers of a budgeting app, on the other hand, have many reasons, benign and possibly not so benign, to be looking at your data.
Says you.
I'm sorry, but that just isn't how that works. It would be no more "wasteful" than running a native app. 1 user or 10, it doesn't matter.
Besides, most self-hosters have servers that are running many apps, so this is just one more. Not a big deal.
Sure, many people seem to be running their Web apps on the local Web servers because Web development is all they know, I'm just pointing out how it's less efficient that native apps.
edit: demo is impressive enough, 20euro/month donation setup. Rock on folks, this is neat.
There are a lot of things it does that I dont use. I am mostly there for spending visualization. It does that well, but it takes a lot of clicks to setup categorization rules, but once its done things happen automatically.
Its just a few minutes work to get it setup on docker. And i think it has a demo site that you can look around on to see what tools it has.
Its not perfect. But its good enough for me, for now.
Ok, that's what I was scouring the documentation to find out. Thank you. Guess I'll stick with my current mint-alternative (Empower)
Why would that be obvious? Until I read your comment I was assuming it was there. That feels like it should be a core feature for basic personal finance applications.
And for what I use it just works. I don't have any complains, docs are good, plenty of tutorial available and it is easy enough to setup and update (I don't use docker for it). I can't ask more of a software tbh.
[1]: https://docs.firefly-iii.org/how-to/firefly-iii/features/rul...
[1] https://github.com/firefly-iii/firefly-iii/tree/main/databas... [2] https://github.com/firefly-iii/firefly-iii/tree/main/app/Mod...
https://github.com/firefly-iii/firefly-iii/blob/main/databas...
It's also a complicated idea, and when you look at existing solutions, they almost always have a huge number of features that any given individual won't need, which makes it harder to figure out what you're doing.
If you have a background in programming, and none in finance, it might be easier for you to start from what you understand, and build up an app that does what you need first, then add features later as you understand the problem space more.
But it's also often an example of people not willing to learn a new tool, or not willing to pay for one, so why not build a new one? How hard can it be?
The number of stupidly huge complex projects I got myself roped into with that dumb phrase...
Building an app that fits your mental model can be very instructive (including helping you flesh out your own understanding of the problem space).
That's the most annoying part for me: accounting, docs (files) management, notes are things that last many years, sometimes an entire human adult/active life, having the ability to evolve from a tool to another, from a workflow to another not loosing nor painfully transitioning from past tools is a VERY big issue.
Because of that I fear any tool with a large codebase/many deps because a simple tool I can keep it myself if the upstream vanish, a complex one I can't.
The template from https://themeasureofaplan.com/budget-tracking-tool/ has everything I need and a perfect level of flexibility to customize it for your needs.
And to “predict” future balances. Sure a sheet can do that but I have always found a visual calendar works best with my adhd.