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.
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) to import OFX/QFX files. For some banks it can automatically pull the data using 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.
I was using Tiller (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) to pull CSV from US banks via Plaid’s (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.
Glad you like ledger-autosync! I agree, its very annoying to have to download OFX files. I wish more banks supported the OFX protocol, or really any sort of automated download. I should probably look into plaid and see if it might work.
I have been looking for something like this for sometime. Right now I'm using YNAB with manual imports from bunq csv exports but I will give it a try and try out the bunq integration with firefly.
Does Firefly also support the features of YNAB, if you know by any chance?
Do you know of a way to do cross-account budgeting in ledger CLI (or any of the similar tools)?
This was discussed for beancount a few years ago[1] and basically means that I want to distribute the money for a budget across multiple accounts but last I looked (over a year ago) there was no tool that provides this feature.
ledger-cli is my current tool and all-time favourite. The only thing I'm missing (and thinking of spending a weekend to write) is a self-hosted web UI for data entry. Not that I needed - Emacs is a more productive data entry UI than anything that was ever done in a web browser. But my wife wants to help me retype receipts, and I need something ergonomic that's focused on just that: adding trivial transactions.
hledger has a web interface, and it mostly speaks ledger. Looks like most of the stuff it doesn't understand it'll still cleanly parse and then ignore.
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.
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!
Self-hosted means you control your data, though it certainly leaves you open to more attacks if it's open to the internet, but you can always protect it by hiding it behind a VPN. Having financials available everywhere is very convenient, and not having data on a mobile device (but accessible on your mobile device) is great for privacy-concerned people.
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.
> 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.
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".)
It does work for modelling flows, but the meaning of balances gets a bit wonky. Income is revenues - expenses in the debit/credit model, but in the plus/minus model it's -revenue - expenses (hledger's income statement report flips the sign on revenue accounts, so you get the net via the normal equation).
A different way to do double-entry-lite might be to retain plus/minus, but have that operate on the account's normal balance -- pay for expenses by decreasing an asset or increasing a liability. Transactions still balance even if they don't sum to zero -- it makes sense that an IOU balances out the coffee you just got. You do need to understand the four basic account types (explicit equity accounts are arguably not relevant to most individuals), but that's something that's needed anyway. You still don't need to explicitly learn about debits and credits, but if you do it's much closer from here than from the flow-based approach.
Flow is easy, but I feel that in the end modeling the effect on balances is simpler.
For what its worth, I'm an accountant in my day job and our software doesn't differentiate between debits and credits. Debits are positive and credits are negative. You get used to it seeing it all the time.
I am used to it. Mostly. It still throws me for a loop sometimes, like just now when I had to figure out how p/l would be calculated based on the flows.
- Firefly III enforces splits to make sense. Source must be the same for deposits, destinations for withdrawals. It's technically possible to mess up but I never met people who were careless enough to do so.
- Yep. That's always tricky to get right.
I'm halfway between going full accountant (never go full accountant) and basically human. I'm pretty happy with the results so far.
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!
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.
I did make an attempt to switch from GnuCash to Firefly III, but had to switch back. As loathed as the GnuCash GUI is, Firefly III simply did not come close to the speed with which I could enter transactions in bulk via the keyboard. Plus, I was too used to GnuCash's data model and way of doing things.
The reason I was drawn to FF III in the first place was because of its aesthetic appeal and visualization features. The graphing and reporting abilities of GnuCash are not to my taste.
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...
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.
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.
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/
[2] https://hledger.org/
[3] http://furius.ca/beancount/
[4] https://beancount.github.io/fava/
[5] https://github.com/quentinsf/icsv2ledger
[6] https://github.com/beancount/smart_importer/blob/master/READ...
[7] https://github.com/siddhantgoel/awesome-beancount/blob/maste...
Note: corrected the entry for ledger-cli, its primarily written in C++ with some emacs lisp scripts.
I'm currently using 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) 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.
Currently I’m using plaid2qif (https://github.com/ebridges/plaid2qif) to pull CSV from US banks via Plaid’s (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.
Does Firefly also support the features of YNAB, if you know by any chance?
This was discussed for beancount a few years ago[1] and basically means that I want to distribute the money for a budget across multiple accounts but last I looked (over a year ago) there was no tool that provides this feature.
[1] https://groups.google.com/forum/#!msg/beancount/ddi5fOuAFoU/...
ETA: https://hledger.org/hledger-web.html
Dead Comment
https://postimg.cc/gallery/2chl5bji2/
Edit: sent email with details to listed address on landing page.
Self-hosted means you control your data, though it certainly leaves you open to more attacks if it's open to the internet, but you can always protect it by hiding it behind a VPN. Having financials available everywhere is very convenient, and not having data on a mobile device (but accessible on your mobile device) is great for privacy-concerned people.
Edit: PHP is actually in a pretty good state right now, so I think it's a poor criticism, but probably a common one.
- 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.
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.
(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".)
A different way to do double-entry-lite might be to retain plus/minus, but have that operate on the account's normal balance -- pay for expenses by decreasing an asset or increasing a liability. Transactions still balance even if they don't sum to zero -- it makes sense that an IOU balances out the coffee you just got. You do need to understand the four basic account types (explicit equity accounts are arguably not relevant to most individuals), but that's something that's needed anyway. You still don't need to explicitly learn about debits and credits, but if you do it's much closer from here than from the flow-based approach.
Flow is easy, but I feel that in the end modeling the effect on balances is simpler.
I'm halfway between going full accountant (never go full accountant) and basically human. I'm pretty happy with the results so far.
And more importantly is it possible to import data from GnuCash? Last time I tried it I failed.
The reason I was drawn to FF III in the first place was because of its aesthetic appeal and visualization features. The graphing and reporting abilities of GnuCash are not to my taste.
After some time, I settled down to converting from Gnucash to Ledger using PieCash (https://github.com/sdementen/piecash), and visualizing the ledger file using LedgerWeb (https://vifon.github.io/ledger-web/). A bit of a workaround, but can be scripted and works fine for me.
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.
[0] https://akaunting.com/features
[1] http://www.softaculous.com/demos/Akaunting
[2] https://github.com/akaunting/akaunting
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.