
Firefly III – Self-hosted financial manager - dddddaviddddd
https://firefly-iii.org/
======
dragonsh
It's a nice system in PHP. There are quite a few of them. Like ledger-cli [1]
in C++ and emacs lisp, hledger [2] in Haskell and beancount [3] with fava [4]
in python.

We used ledger-cli and beancount with fava and built automatic creation of
accounting entries using machine learning and Bayesian alogrithms by analyzing
bank and credit card statements. You can use powerful icsv2ledger [5], smart
importer [6] and the awesome list [7] to get importers for various banks and
other utilities.

[1] [https://www.ledger-cli.org/](https://www.ledger-cli.org/)

[2] [https://hledger.org/](https://hledger.org/)

[3] [http://furius.ca/beancount/](http://furius.ca/beancount/)

[4] [https://beancount.github.io/fava/](https://beancount.github.io/fava/)

[5]
[https://github.com/quentinsf/icsv2ledger](https://github.com/quentinsf/icsv2ledger)

[6]
[https://github.com/beancount/smart_importer/blob/master/READ...](https://github.com/beancount/smart_importer/blob/master/README.rst)

[7] [https://github.com/siddhantgoel/awesome-
beancount/blob/maste...](https://github.com/siddhantgoel/awesome-
beancount/blob/master/README.md)

Note: corrected the entry for ledger-cli, its primarily written in C++ with
some emacs lisp scripts.

~~~
snackematician
I use and love ledger-cli but importing/downloading bank data is the biggest
pain point.

I'm currently using ledger-autosync ([https://github.com/egh/ledger-
autosync](https://github.com/egh/ledger-autosync)) to import OFX/QFX files.
For some banks it can automatically pull the data using ofxclient
([https://github.com/captin411/ofxclient](https://github.com/captin411/ofxclient))
but for most of my bank accounts this is broken and I need to manually
download the OFX file before importing with ledger-autosync. It works OK, I
wish I didn't have to do the manual download, but the simplicity of the setup
is nice.

I've read of other setups using Plaid or Puppeteer to download their data.
Would be interested to hear about what other people are currently using in
mid-late 2019 to pull their financial data.

~~~
smichael
I was using Tiller ([https://www.tillerhq.com](https://www.tillerhq.com)),
pulling from US and European banks to a Google sheet, then a command line tool
to pull CSV from there. This worked well except for not handling foreign
currency (it calls everything $), adding a bit of extra latency/uncertainty on
top of the back end (Yodlee), and eventually forgetting to update your sheet
unless you manually visit it every so often.

Currently I’m using plaid2qif
([https://github.com/ebridges/plaid2qif](https://github.com/ebridges/plaid2qif))
to pull CSV from US banks via Plaid’s ([https://plaid.com](https://plaid.com))
API. This is more developer friendly and gets the latest data to me faster,
but the data is not quite as good as Tiller/Yodlee’s, at least for Wells Fargo
bank; Plaid gives more truncated transaction descriptions.

Both of these have the big downside of sharing your bank credentials with
others. With Plaid I guess there’s one less party involved. My current
alternative is manually visit each bank’s site and download CSV. Ideally I
want to get timely data every day (the easiest way to stay on top of the
books), so the manual downloading (click, wait, click, relogin after
timeout..., wait, wait for paypal’s download, retry when it gets stuck..) gets
really tiresome.

~~~
js2
Maybe use something like moneydance? It talks directly to the financial sites
to grab ofx and is extensible via plugins.

~~~
smichael
I believe many banks in the US don’t provide OFX, or not easily. Wells Fargo
would charge me $10/month for it.

~~~
js2
That's insane. I'd change banks over something like that.

FWIW, USAA, Ally, Fidelity, AmEx, Chase, no charge for OFX.

~~~
synesthesiam
This page suggests that it's actually $3/mo:
[https://www.wellsfargo.com/online-
banking/software/fees](https://www.wellsfargo.com/online-
banking/software/fees)

However, I've been pulling OFX data from my Wells Fargo for years via
AqBanking
([https://wiki.gnucash.org/wiki/Setting_up_OFXDirectConnect](https://wiki.gnucash.org/wiki/Setting_up_OFXDirectConnect))
and have never been charged.

------
obituary_latte
There is at lease one vulnerability in the demo: looks like dev or something
is on in the framework. Sending bad input in at least one place exposes debug
info with db/api credentials along with other sensitive info. Email in my
profile if more detail needed.

[https://postimg.cc/gallery/2chl5bji2/](https://postimg.cc/gallery/2chl5bji2/)

Edit: sent email with details to listed address on landing page.

~~~
JC5
Yep, I saw that. Thanks a lot for letting me know. I'm resetting credentials
and setting up the DB again. Cheers.

------
duiker101
Wow, this is all I ever wanted. A self hosted PHP based financial manager with
a good interface and an API. I am SO excited. I'm going to throw it on my
server instantly. It seems to also have a lot of features! This is great!
Thanks!

~~~
not_a_cop75
Why is a self hosted financial manager your dream come true? I assume sharing
financials to others is everyone elses's nightmare.

~~~
oarsinsync
The success of cloud hosted products like YNAB suggests many people have no
issue with sharing financials.

~~~
shifto
I think YNAB's popularity comes from the stand-alone desktop version which was
really popular until they went cloud.

~~~
newspheasant
I'd have to disagree with you. There's tons of people who use them as a
mobile-first service (my wife only ever uses the mobile app). I think a subset
of tech/privacy savvy people don't like that they went to a cloud based model,
but that's a small subset of a small subset.

~~~
oarsinsync
Mint is another example of a popular financial management tool, that was
always cloud-first. It would import transactions by using the same credentials
you would use to login to online banking. This wasn't appealing to me. This
didn't deter many other people.

~~~
aeorgnoieang
I didn't like sharing my credentials either but I _was_ using it – until it
stopped working for most of my accounts.

I've since stopped using even the 'manual import' and I've found that
reconciling to my bank/financial-company statements manually is _much_ easier
overall as importing auto-reconciled transactions but then it was basically
impossible to then match any specific balance reported by the bank/financial-
company.

------
andreareina
I admittedly haven't been looking for better, but the "double-entry lite"
systems I've seen kinda miss the mark a bit.

\- Source/destination (as used here) is awkward when transactions have more
than one split: at best there's a single source/destination which is entered
multiple times and you need to make sure the splits add up right (and that
single $50 charge to your credit card doesn't show up that way in the
register); at worst you have an m:n split.

\- Simple plus/minus without debits and credits (à la hledger, which I am
otherwise quite happy about) runs into situations like: I _increase_ my
liabilities (e.g. by paying by credit card) by _subtracting_ from the
account?!?

I think if you're going to use a GUI then going full debit/credit isn't hard,
I got up and running with Quickbooks pretty quickly and GNUCash seems about
the same.

EDIT: I don't mean to downplay the accomplishments of the authors of any of
the software mentioned, like I said I'm a happy user of hledger and Firefly
III looks pretty polished from what I saw of the demo. This is really meant to
be more of a meta-comment around the idea that bookkeeping is hard and double-
entry debit/credit is doubly so.

~~~
0xcde4c3db
> I increase my liabilities (e.g. by paying by credit card) by subtracting
> from the account?!?

Maybe I'm just inured to the convention, but this makes perfect sense to me.
You subtract money from any other account you pay from. At a sufficiently
abstract level, paying by credit card is the same thing as overdrawing your
checking account. You need to add money to get the balance back to zero.

~~~
TeMPOraL
Makes perfect sense to me too. Credit cards aren't money you have, they're
money you can borrow. Paying by credit card is borrowing money. Paying a
credit card back means it should show in your system at $0. If your bank shows
it at some positive $, that's just convenient financial fiction.

(And possibly dangerous fiction. I think a big part of the way people get in
trouble with credit cards is by thinking their credit line is "the money they
_have_ ", instead of "money they can borrow really fast".)

~~~
andreareina
It's definitely a dangerous fiction.

'0xcde4c3db makes a good point about it making the _flow_ of value clear in
the transaction, but the transaction view is already the easy thing to
interpret. The value (heh) of bookkeeping is when those flows are aggregated,
and the meaning of those aggregations is (admittedly only somewhat) obscured
when optimizing for clarifying flows in single transactions.

Charging a credit card to make it more negative does match our intuition of
how it affects our overall financial position, but that's due to serendipity.
What does it mean that expenses are normally positive, is that a good thing
then? Or that my paycheck account is negative?

In the end it's a nit, a small thing I mostly ignore. I just think that part
of the complexity it tries to eliminate is essential, with results like
negative revenues. It's a leaky abstraction.

------
lethologica
Minor tangential gripe but hamburger menus on desktop are rather annoying. I
have a large screen, please make use of it and don't hide important elements
away behind a button!

~~~
JC5
I'm working on a new layout which wouldn't feature such a menu. Tabler IO, you
can Google it.

~~~
mehalter
How is this development going? I am a long time Firefly-iii user, and am
excited for this UI update and would love to follow the progress!

~~~
JC5
It's frozen at the moment. I need to develop a way-of-working where I can work
on v1 and v2 at the same time. That is a headache. And my Vue skills are non-
existent so it's a bit of a learning curve. But I hope to push something to
develop soon :)

------
a254613e
Has anyone here successfully migrated from GnuCash to Firefly III? How does it
compare long term? GnuCash is amazing features wise, but the UI and cross
platform compatibility is subpar at best.

And more importantly is it possible to import data from GnuCash? Last time I
tried it I failed.

~~~
BuildTheRobots
What are the GnuCash issues with cross-platform? We used to use it via dropbox
on mac, linux and windows and never hit any obvious problems. The UI
however...

~~~
a254613e
I can't get it to use en_US for interface but de_DE for dates/currencies
across all platforms. Because GnuCash insists on reading these settings from
locales, and I can't get it right to save my life.

So it'll see a comma when I open the file on windows and just report an error.

Right now I'm considering running it in on my server and then connecting to it
somehow from all the different platforms.

~~~
bsznjyewgd
[https://wiki.gnucash.org/wiki/Locale_Settings#Changing_the_L...](https://wiki.gnucash.org/wiki/Locale_Settings#Changing_the_Language_on_Windows)

See the part about adding an environment file on Windows. On Linux, I set my
LANG to en_US.UTF-8 but all the LC_* variables (apart from LC_ALL) to
en_CA.UTF-8 and that gets me the right UI/formats mix in GnuCash (and also
Chromium, which tries to speak British to me otherwise), and hopefully that
works on Windows too.

------
oso2k
This looks a heck of lot like a fork of Akaunting [0][1][2].

[0] [https://akaunting.com/features](https://akaunting.com/features)

[1]
[http://www.softaculous.com/demos/Akaunting](http://www.softaculous.com/demos/Akaunting)

[2]
[https://github.com/akaunting/akaunting](https://github.com/akaunting/akaunting)

~~~
JC5
We use the same layout template but my tool is older and has a lot more
features.

------
claudius
I have moved to Firefly III last year from the "My Expenses" app. Very happy
so far, even though I don't use (and hide via uBlock) all the Budget-related
items.

Updating is a bit annoying as there are no Debian packages and one has to
essentially re-install from scratch on each update, but everything else is
working perfectly well. Categorising expenses allows for easy monthly reports
on shared expenses, too.

~~~
JC5
Try using the docker images, that makes for a pretty flawless upgrade
experience.

------
XorNot
Had this running for a bit, tried a mass data import, managed to get it pretty
quickly wedged into an inconsistent database state. Dropped it.

~~~
JC5
Had you let me know what went wrong, I could have fixed it. No matter ;)

------
crisnoble
This is amazing, and clearly takes a tremendous amount of work, and judging by
the comments here provides an invaluable service to many many people. Which
makes it somewhat discouraging that when you look at the Patreon link
[https://www.patreon.com/jc5](https://www.patreon.com/jc5), people support him
to the tune of only $27/month. Makes me wonder if my ideas for small scale
SAAS could ever possibly be financially viable.

~~~
JC5
Oh well, it’s just a hobby you know? And I guess people who need financial
management tools aren’t people looking for more expenses ;)

I’m happy with every donation. I use it to pay the AWS bill and maybe get a
beer.

But make no mistake, a lot of people have donated one-time over PayPal which
is greatly appreciated as well.

~~~
crisnoble
That's great to hear people have donated over PayPal, and I suppose it is cool
that you think of it less like a way to make a living and more like a hobby.
Great job!

------
Kovah
Can highly recommend Firefly. Used for a while and it is really powerful,
impressive work has been done here. What bothers me (too much) as a former
YNAB-user is the limited budget planning view. But the dev already has this on
his to-do list.

~~~
martin-adams
I'm a current YNAB user find it hard to use any other financial manager
software because they only seem to record what happened and not plan for the
future.

What made you leave YNAB if you don't mind me asking?

In additional to my personal finances, I currently use Xero for my business,
but I also run everything through YNAB as well to actually know the health of
my business and how much money I'm making. The book "Profit First" made a lot
of sense through a YNAB approach.

~~~
hvidgaard
One thing that I find surprisingly missing from most budget platforms is a
recurring rolling budget post. For instance, let's say we have a clothing
"category" I want spend $200 monthly for the entire family. I don't know when
I'm going to buy a new winter parka, or the recurring biannual event of buying
new shoes for the children. But I do know that $200 monthly is what I believe
is reasonable for our income.

I just want the balance on that budget to roll over for every month, so I know
how much there is for that particular thing. And if you don't buy any clothing
for 2 months, $400 is added to the available fund for that particular budget
category.

It extends to a lot of things:

    
    
      * Day trips
      * Saving for car repairs and ultimately a new one.
      * Groceries
      * Holidays
      * Hobbies
      * Takeaway

~~~
Naga
With anything with double entry bookkeeping, you can book an expense each
month for $200 for clothing and have a liability account set up as a clothing
reserve account. Then you would have a built up total over time, less anything
you purchase.

~~~
hvidgaard
I could do that - but is it really that foreign to center a budgeting tool
around it, so I don't have to go about creating accounts and transactions for
every budget category?

In essence, it's just the "envelope" system with a rollover - i.e. if I don't
spend all my grocery money this month, just add them to the next months
envelope.

~~~
crdrost
It's more than that... when you are living on a tight budget you really want a
line graph that tells you what your checking account is going to look like in
a week, two weeks, three weeks. Your problem is not necessarily income but
cash flow, and you do all of this cash-flow reasoning informally, “I'd better
postpone any doctor’s visit until the 15th because usually things are less
tense in the middle of the month and I’d like to keep my copays out of it,”
but it would be really handy to say “look, if you need to you can spend up to
$200 and things will get tight in 9 days time but you will _not_ go broke,
assuming you have put everything in properly.”

This sort of diagram is only easily possible if you can specify “here are the
deposits that I think are going to happen, and here are the expenses that I
think are going to happen.”

And for that, those envelopes are _crucial_ , especially the ability to graph
the amounts in the various envelopes and the amount that’s not in any
envelope.

~~~
hvidgaard
That is a matter of fixed recurring bills. I know when I have to pay rent,
insurance, loan payments, to a degree utilities ect. Once you have plotted
those in the system, you know how much to set aside for that every month and
those are funds you cannot touch without a very very good reason. And should
you do so anyway because you're terribly ill, you make a plan for how to make
up the deficit before the payment happens.

For my personal economy it come out such that the "account" for all of those
recurring payments are always significantly in the positive - in other words,
I can "borrow" from that "account" without it interfering with my ability to
pay the bills. E.g. you have two annual bills of $600, one has a payment date
of Jan 1st and the other have Jul 1st. I need to set aside $100 monthly to pay
them, but at any payment date there will be $900 in the account, so it's
always at least $300 in the positive. It's just a peculiarity that can happen.

So that leaves all the variable expenses, food, clothing, going out, ect,
things you can control the magnitude of. Those are well suited for the
envelope system. I would personally treat necessaries such as food and
transportation as a special envelope in the sense that it's only variable down
to a minimum but no further. Clothing on the other hand can be turned down for
$0 for quite a while, and "going out" certainly can be $0 for as long as it
need to.

How does all that fit in a cash flow analysis then? Well for bills and fixed
income it's easy - just make the graph. But for variable expenses it's a bit
more hand wavy, because I cannot not buy food for my children, but I can
certain not go to that sushi restaurant. And that is where the envelope system
is helping me. If I have an unforeseen expense that is greater than what I
have in my emergency fund, and there is not enough to borrow from the fixed
expense account without compromising payments. Well I have to transfer some
funds from the envelops that have a surplus that i can control, such as the
"going out" envelope.

------
baal80spam
I think I'm getting old. I just don't understand why this needs a web
application and not a desktop one.

~~~
utf985
Why is this being downvoted? It's a genuine question and I'm curious about it
too.

~~~
wnscooke
Maybe because it sounds curmudgeonly, without giving much thought to any
possible answer. If had been made a Mac app I suppose the OP would say, “Why
does this have to be a Mac app?”, or the inverse for a Windows app, more so if
it was Linux only. Thinking about these makes it abundantly clear WHY it is a
web app... so anyone can use it.

------
Summershard
Does anybody know a FOSS zero-based budgeting software? GnuCash or Firefly are
great double-entry systems, but for personal budgeting I prefer YNAB or
Everypocket styles.

~~~
AlanYx
You can simulate various forms of envelope budgeting in Ledger (aka. ledger-
cli) and the similar projects like hledger. There are quite a few of
blog/forum posts out there that help explain how to do this. If you're
specifically looking to emulate YNAB, there are also some posts that deal
specifically with this.

~~~
smichael
Several examples/how-tos are linked at
[https://plaintextaccounting.org/#budgeting](https://plaintextaccounting.org/#budgeting)
.

------
xfitm3
Unless it can pull transactions from my bank this isn't very helpful. It looks
like it can't. I have far too many accounts+transactions to do by hand.

~~~
crummy
It can, if your bank supports Spectre (which apparently is a common API
service for banks). It's a bit awkward, you have to sign up for a third party
to do it, but worked well for the three months or so I used Firefly.

Here are the docs: [https://docs.firefly-
iii.org/en/latest/import/spectre.html](https://docs.firefly-
iii.org/en/latest/import/spectre.html)

(For what it's worth, now I use Pocketsmith, a NZ-made Mint clone that I'm
pretty happy with.)

~~~
a254613e
Works directly with banks too via FinTS - [https://docs.firefly-
iii.org/en/latest/import/fints.html](https://docs.firefly-
iii.org/en/latest/import/fints.html)

------
basilgohar
I've been eyeing Firefly III myself for managing our family's finances, so I'm
glad to see this thread starting and see others' experiences'. In the current
day and age of cloud-hosted apps and everything-as-a-service, happy to see
some self-hosted love on HN.

------
cthalupa
I played around with Firefly and was generally impressed, outside of Laravel
log verbosity defaults running me out of space on my VM in a quick manner,
heh.

[https://docs.firefly-
iii.org/en/latest/import/spectre.html](https://docs.firefly-
iii.org/en/latest/import/spectre.html) was the killer feature, in my mind. Not
having to manually enter all of my data myself made it usable.

Ultimately I'm lazy so I stopped doing much with it, but if you're interested
in it, I highly recommend getting the Salt Edge account to handle importing
everything.

------
Poiesis
If you're still monitoring and have the time @JC5, I was just curious about
your data model.

I see that there tags, categories, and budgets. I understand the differences
between these, and why they are presented as different concepts. How did these
different features evolve? Did you have budgets first, then categories/tags?
Did you ever consider implementing categories as tags and not having a
separate category concept?

Just wondering if what you have now evolved from a simpler model (at least
fewer concepts—maybe not simpler implementation or mental model), and if so
why/how.

~~~
JC5
I started with budgets and categories. Budgets for the money (I had like five
budgets) and as many categories as you want. They are basically the same
thing. Max one category/budget per transaction.

Tags were added later on by user request. Most users use them to categorize
transactions. I don't use them myself. I tried using tags for meta-data like
"expensive" or "wasnt worth it" but never bothered to tag everything.

------
canadev
Thanks for the link. What's the username and password for the demo site?

~~~
canadev
I found it: [https://github.com/firefly-iii/firefly-
iii/issues/2259](https://github.com/firefly-iii/firefly-iii/issues/2259)

demo@firefly / demo

I'd strongly suggest putting that on the demo page itself.

~~~
JC5
Something broke, it's back now.

------
cbsks
For something as important as financial management software, it doesn’t
inspire confidence that there are ads in documentation. Could they find
another way to monetize it?

~~~
JC5
I don’t have to monetize it. It’s a hobby. But the website provides a good
platform to host the docs and I can live with the ads they serve. I assure you
they don’t pay me for the ads in the documentation.

------
juliangoldsmith
Is there any support for OFX or QFX?

Most banks I've dealt with support downloading transactions via QFX, which
makes working with GNUCash pretty easy.

~~~
dddddaviddddd
[https://github.com/firefly-iii/firefly-
iii/issues/965](https://github.com/firefly-iii/firefly-iii/issues/965)

------
dddddaviddddd
I recently switched over to Firefly III as a long-time Mint user unsatisfied
with privacy issues and many feature limitations. I also like that Firefly
encourages manually inputting transactions to improve mindfulness about
expenses, rather than importing them automatically which in my opinion makes
the information less actionable.

------
adrianmonk
On the features page ( [https://docs.firefly-
iii.org/en/latest/about/features.html](https://docs.firefly-
iii.org/en/latest/about/features.html) ), it says it can import data from "CVS
files". Does it mean CSV files?

~~~
JC5
It does, yes. That spelling error should be gone now.

------
boardwaalk
Before people spend time setting this up: Note this doesn't support any other
asset types other than cash.

I would assume that most people here have stocks or bonds or something of some
type.

Most of my assets are investments which makes this fairly useless for me, even
if it does look very nice :-(.

------
xvilka
Would be nice to have something like that but in Go, so deployment would be
way easier on all platforms.

~~~
JustSomeNobody
What platforms don't support PHP that do support Go?

~~~
grenoire
You get immediate executables through Go.

PHP, on the other hand, requires fifty packages and your sister's phone number
before you get segmentation faults from the caching script and give up.

~~~
vorpalhex
Docker/containerd is your friend, especially if you don't want to maintain a
LAMP stack and try to match php versions.

~~~
beatgammit
And Go is even similar. Instead of having to deal with docker/docker-compose,
I can just put an executable somewhere. If I have multiple apps, I just set up
a reverse proxy through my web server and I'm done.

It's a bit telling that I essentially need to run a docker container for
something so simple. Statically compiled binaries are super simple to use.

------
grzesieksocha
Great! Finally I'll be able to move my data from the old YNAB version to a
more reliable place :)

------
ElijahLynn
Is the demo under high load or is it just generally slow responses? 2+ seconds
for many operations and graphs take a while to paint (5+ seconds). I am on
200mbit, low latency fiber.

~~~
JC5
It’s under high load I’m afraid. It’s a very small instance over at AWS and
I’m getting hugged to death.

~~~
ElijahLynn
Gotcha, thanks for confirming. I'll try again post-HN DDoS ;).

------
brechmos
Quick glance and I got excited that maybe Joss Whedon was going to be able to
create another series based on Firefly.

------
Bombthecat
Only thing I miss or can't find is joined account /login. So we see who
entered what in transactions.

~~~
lighthazard
> The ability to share a financial administration with your partner or
> significant other. Unfortunately, this requires a large change in Firefly
> III’s architecture and functionality. As an alternative, you could share the
> login details with each other.

------
Dirlewanger
Lost all interest when I saw you need to register an account to demo it

~~~
JC5
Not necessary. Something broke, you should be fine now.

------
ElijahLynn
Not one screenshot of the UI in 60 seconds and 3 clicks in...

~~~
ElijahLynn
Tried to login with demo [https://demo.firefly-
iii.org/login](https://demo.firefly-iii.org/login) and after submitting just
put me back at the same login form with no messaging.

~~~
ElijahLynn
K, found the error, I speed read `demo@firefly` and entered
`demo@firefly.com`. Probably should make both work since there is no failure
message showing what was entered.

~~~
JC5
Yeah that’s bloody annoying but I haven’t been able to fix it yet. Laravel,
the underlying framework has moved to a new way of reporting login errors and
my code hasn’t been adapted yet. Sorry about the confusion.

------
zeroonetwothree
Doesn't support biweekly transactions for some reason?

~~~
JC5
Like recurring transactions? Just enter weekly and set it to skip 1.

------
gocartStatue
Is that Sonata Admin?

------
sigmos
Have know this a while ago, it’s definitive for someone who needs to manage
their financial.

