186 comments

[ 3.0 ms ] story [ 134 ms ] thread
On tax day here in US. To keep in mind for next year.
The major version 3 was just recently released: https://github.com/Gnucash/gnucash/blob/maint/NEWS
Thanks for mentioning this! I was a GC user for quite a while on linux, but the register rendering (fonts) was so bad on macOS I abandoned it, checking back for updates every so often. Looks like this is better now.
FWIW: I just tried the 3.0-1 macOS version and it crashed when trying to configure/save. The save dialog was non-native and seemed to have some weird "offset" where clicking the mouse would select a folder/file not under my cursor, but offset by like 50px.
Blog post author here. Nice find.

I just updated to 3.x (my screenshots were based on 2.x) and 3.x's UI is a pretty substantial improvement. Reports generate faster, fonts look better and the app itself doesn't look like it was made in 2003. This is coming from a Windows 10 perspective.

I've been using GnuCash for a couple years now. It works well once you set it up and get a feel for its interface. It has the features I need for my small side business. I would recommend it.
Hey might I ask you about the num column in the BAS account template?

Are you supposed to keep that globally unique or just for each verification you log? Because if it's only a local sequence for each verification you make then there's bound to be overlap between account views.

And if it's globally unique then I'd like GnuCash to automatically increment it.

I don't know about the BAS account template, but my accounts have the num column as well. I thought it was used for ordering transactions that occur on the same date. Personally, I just stopped using it because it rarely matters for me the order of multiple transactions in the same day.

Looking at this page on gnucash.org now (1), it's referred to as just "optional Num (such as a check number)". Hope that helps.

[1] http://gnucash.org/docs/v2.4/C/gnucash-guide/txns-registers1...

I think it's an open field for you to use however you want. E.g. If it's a Bill and you use the bill functionality, that column gets auto-populated for you using the "Bill ID". Likewise for sales-receipts, it gets populated with the Receipt ID that you filled in when creating the sales receipt. If you leave them blank when creating those items, an auto-incremented ID gets filled in. At least for Receipts and Bills, GNUCash keeps separate sequences of unique IDs.

So, you can use it to match it against a bill, invoice, whatever is applicable to that entry.

Also, had a quick look in the account XML regarding Bill/Receipt ID. It get's stored as ID, even though the bill/receipt has a unique GUID to identify it. I would assume that means it need-not be unique.

I switched to using a spreadsheet. From that I create a P&L report. I understand the cash flow much better vs. when I was using a software package. I do miss seeing graphs and such, however.
Cash flow forecasting is one area where all the bookkeeping systems fall down.
I don't think most single owner businesses do cash flow forecasting. Do you?
If cash is inconsistent they should. I have expenses (travel) that can vary quite a bit. So yes.
It does require commitment to keep track of the transactions regularly, but ultimately gnucash is really a great help for me as well.

I don't keep a detailed track of every petty cash expenses (just input an adjustment for the "cash" asset account each month based on what is left in my wallet), but based on the monthly bank statements most of the expenses are already covered anyway.

I highly recommend GnuCash. Not only do I use it for my personal and business accounting needs, I also use it in my role as the Treasurer of a Charity set up to keep our local library open. It provides proper double entry accounting and the ability to split transactions into different categories which enables me to use it very successfully to handle the special accounting requirements of grant spending.
Yeah, and the basics aren't even hard to learn/use, after the person understands the concept of double-entry. I know someone who has no particular expertise of accounting nor computing and who uses GnuCash to manage the money of an art group (receiving money from multiple entities, keeping track of expenses and paying out interpreters), and almost never needs help.
Unless you enjoy doing your books this is no way to run a business. Hire a bookkeeper and a CPA and use a popular SaaS tool like Xero.

Doing your own books is one way to get burned out on being an entrepreneur. Please don’t do this to yourself. Outsource and delegate. Your mental health (and the compliance risk) aren’t worth it.

I have a really bad personal experience of that. Mental health should be way more important than saving some money on doing your account yourself. I hope everyone here follows your advice!
While I take your point, I often see people who don't really understand accounting avoid the topic entirely by fully outsourcing the preparation of their financial statements. This often leads to disaster because I've noticed that if you're not really on top of your outsourced service provider, they get sloppy/lazy and make lots of mistakes.
Outsourcing your financials is another way to get burned as an entrepreneur.
Everything you don’t do yourself is a great way to get burned, but that’s no way to run a business. Intelligent outsourcing and delegation is essential. Read “The E-Myth”
I know it can deal with currencies, but does anyone know how well it fares with requirements of non-US countries? What accounting system does it use?

Is it suitable for a small business in a European country, where (I presume) the accounting/IRS and tax system requirements are more stringent?

I'm interested in using it in Portugal but AFAIK small businesses and freelancers here use different, commercial local software.

I'm using it in Sweden and GnuCash already has a BAS-12 account template built in. It's pretty much complete and there is no reason to require BAS-17.

I recently started using it so I actually have one unanswered question. Was going to connect to their IRC to find out.

The num column seems to be manual and I'm not sure if it's supposed to be a globally unique value or just a sequence for each transaction (verification) you make.

Sorry if I'm talking out of my ass but I don't know the correct business english to use in these circumstances.

I'm using it in Sweden as well. I wrote a Python script to populate the accounts from a list of accounts I received from my auditor/tax consultant, as such I don't know exactly what flavour of BAS it is.

I use a letter prefix for my transaction sequence numbers and GnuCash doesn't seem to understand it or put any value in it at all. This is definitely a weak point in my eyes and I'd love to have GnuCash support categories for transactions and strict sequence numbers.

Num is a sequence value per account. I'm pretty sure it started off as a check number field, for US checking accounts.
Assuming you have an accountant, you should be able to ask them for a listing of the necessary accounts. That's what we did when creating the Portuguese localization of another software.

GnuCash should do the accounting itself just fine, but in my experience accountants don't like to see reports that aren't exactly like they are used to, so you might lose a lot of time adapting its reports to the format they're expecting.

Wow, I had no idea this existed. It is sorely needed. Excited to try it out.

There are so many options over the years that either end up abandoned, (Microsoft money), or bought and abandoned or destroyed by Intuit.

I'm still using Microsoft Money sunset edition to this day. The perfect product with graphs, no annual fees, autocomplete, and all your data safely offline.
My personal setup for tracking finances (not taxes, just expenses and incomes) is:

- Expense IQ (Android)

- Google Sheets

I'll take a look into this one, maybe I can replace GSheets with it, or get something extra from it.

I ended up making my own setup instead of GnuCash because I tried it and it feels like wearing one size too small shoes. My finances is also something I can work as hobby without PMs on my head and keep myself motivated to work on it for years (now three or four). If you want to have side project doing your own finances is nice choice.
I just want thank the GnuCash devs for their hard work over the years. It’s helped me get insights into my personal finances and helped me learn double-entry book keeping.
I'm a big fan of CLI accounting software (Ledger, Beancount and hledger) for my personal finances. Allows you to use a plain text file for recording your financial data. If you live a large percentage of your life in a command line environment, and you like your life scriptable, check it out. I personally use hledger, but would recommend that folks check out http://plaintextaccounting.org/ for a great overview of all cli accounting packages.
I love the command line, and really wanted to love Ledger, but found that manual transaction entry for it (even using Emacs) was far inferior to Gnucash, which does far more powerful autocompletion on previous entries. This makes Ledger impractical for manually entering thousands of transactions, which I had to do.

I also tried some GUI interface to Ledger that was supposed to be better in this respect, but couldn't get it to work.

Ledger can import GnuCash databases, so in theory you could do the the insertion in GC and processing in Ledger :)
I believe I remember seeing some CSV to Ledger-cli tools if you can get the data into that format.
I agree that entering large numbers of manual transaction can be clunky, but for the occasional single transaction it can be pretty quick. For larger numbers of transactions, I've created a rules file that hledger uses to parse the downloaded CSV file from my bank to create a fairly detailed journal entry. (https://github.com/simonmichael/hledger/wiki/Convert%20CSV%2...). The real added benefit for me is using git not only for my journal file, but also for the CSV files. It gives me an immutable record of transactions from my bank. I had a revelatory experience reading adept's methods for tracking his financials. Version control for everything. https://github.com/adept/full-fledged-hledger
https://github.com/egh/ledger-autosync has been real handy for me with transactions.

My "entry" work is modifying some categories that it gets wrong.

I don't fully understand your situation, so I'm not expecting it necessarily solve your entry problems. I'm only raising awareness.

Instead of GnuCash, I use KMyMoney. It saves everything in XML.

To use Ledger, I essentially use KMyMoney for entering transactions, and wrote a Python script to convert the XML into a file Ledger can read.

You may want to see if that's possible with GnuCash?

Yeah, I've particularly liked the approach suggested by Beancount - you in some ways treat your finances like a software project - meaning you keep the plain text ledger file, importers, and documents structured and all in a git repository. The repo gives you a feedback loop of how often you're keeping up with your finances. Plus, recategorizing/restructuring things

The learning/migration curve is hard. But eventually you get rewarded once all the data is in and can leverage web-based frontends like fava https://github.com/beancount/fava to visualize and filter things. Or just write your own script for a custom report.

Other notes:

- It took me about a year from committing to organize my finances this way to now having a regular import-review-commit workflow. Your situation may vary but it took me a while since I didn't organize finances at all before aside from earlier attempts of using mint. Beancounts documentation ( https://docs.google.com/document/d/1RaondTJCS_IUPBHFNdT8oqFK... ) is great but is dense and spread out a bit, thankfully their email list ( https://groups.google.com/forum/#!forum/beancount ) is pretty active and helpful.

- The ledger file will get big, but it's easier than having multiple files. Use syntax highlighting & more importantly code folding. And no you don't have to be an emacs/vim nerd to do this (i'm using sublime FWIW).

- There's migrators from mint/etc. but those aren't perfect because the data from mint isn't always perfect. I went through the exercise of categorizing many transactions from earlier years. It's a masochistic option but really wanted some historical data. Ultimately you'll find yourself refactoring/re-categorizing things over time, and because it's in a git repo you won't be afraid to be ruthless about this.

- Writing your own importers is part of the learning curve. You might find some odd ones on github but you ultimately want to write your own - the examples in beancount's source code are a good starting point. You don't have to do it for everything, just the ones that are too unwieldy for tracking manual transactions.

- I'm still wrapping my head around how to leverage beancount to function as a budgeting / forecasting tool. Several friends use YNAB (there's also financier.io) instead for those needs.

Seems like alot of work to replace a spreadsheet!
These ledger programs don't really do the same job as a spreadsheet. You could do it in a spreadsheet, but it would be very difficult and error prone.

A spreadsheet is more of a general calculating device. I have rows and columns and I can do arbitrary calculations on rows, columns and various cells. A ledger is a tool for double entry accounting. You have transactions against accounts and you are trying to validate that the transactions are consistent. There are other kinds of reports you can do, but your main purpose is to ensure that there haven't been any errors.

I find double entry accounting weirdly soothing. "Fun" is not really the word to use, but it's a bit like fishing when you don't really expect to catch anything ;-). For most people double entry accounting for your home finances is overkill -- you probably don't care if you make mistakes because the consequences are pretty small. But it's kind of neat/cool/zen to do it anyway.

If you are running a company, or you have a large portfolio of stocks/bonds/etc, or if you are dependent on transactions in FOREX, then double entry accounting is usually a necessary tool. The downsides for screwing up can be massive (especially if you get your taxes wrong!) I have personal experience with the government handing me huge penalty fees for mistakes that my employer made with various things (stock options, etc). I never reconciled the books and so never noticed the errors. Perhaps that's why I find double entry accounting soothing now :-)

As a programmer, I find ledger/hledger/beancount to be the most convenient way to do things. My text editor is already an extension of my hands. I can use any version control I want. I can write my own reports using any language I want. I can write code to automate transactions and I can do it in any language I like. ledger and the like are really just file formats coupled with a validator and a few canned reports. Like I said, you could do it with a spreadsheet, but without the constraints of the file format/validation it will be pretty easy to make a mistake. Also it would be a pretty huge piece of code to write using spreadsheet macros (not that this ever stopped anyone before ;-) ).

This. It's overkill for most people, but I wanted it anyway. I've made plenty of financial mistakes over the years despite having finances tracked in systems like mint. And for better or worse I'm not much of a spreadsheet person and wanted a fast experience when chugging through manual changes/updates.

Ultimately, I'm looking forward to making some custom reports where I force myself to learn the math behind finances, and try to add some visualization ideas I haven't seen yet.

Also, the other thing about doing plaintext over a spreadsheet is that I feel like I can be more liberal about adding comments for certain transactions - if anything it makes things feel a bit more personal than trying to cram in comments within a spreadsheet or an off-the-shelf app.

I’ve been a fan of GnuCash, especially double accounting and multi-currency. But the lack of having an online version limited me. I couldn’t share anything. My CPA couldn’t take a look at it etc.

Advice there?

I keep my GnuCash file in an encfs-encrypted Dropbox Folder. As long as you don't try to edit it from two devices simultaneously, this works quite well.
I'll second the opinion for Dropbox. GnuCash has lock files, so you can open read-only if it is being edited by another person to avoid conflict.
There is self-hosted PHP app named Firefly III [1] that supports double-entry bookkeeping system. If by "sharing" you mean "logging on your account at different computer/phone" then it should work. There are user accounts, but only to use same installation without sharing data.

[1] https://firefly-iii.org/

Disclaimer: I'm just a happy user, who reported some issues and pull-requests.

This deserves more attention. Thanks for Firefly.
How do you deal with multiple currencies and expenses?

I find duplicating expenses accounts (national currency + USD for international shops) very tedious.

Such a great product:

+ Free

+ Cross platform

+ You own/control your data

+ extremely flexible

+ true double entry (unlike mint etc)

+ great for an individual power user or keeping very simple corporate books

- a little longer to pull financial data as you need to download CSV files etc from each financial institution

- some reports can be a bit clunky/annoying to customize

- Not sure i would use this for a complicated business with lots of employees or huge volumes of transactions

GnuCash is wonderful! I have since switched to ledger-cli (via Emacs ledger-mode) but I gotta thank GnuCash for getting me into the good habit of tracking all my finances with precision detail.
Does anyone have a good experience working with accountants using GnuCash?

My accountant got me using Quickbooks years ago, and I he does my books from my QB file. This is such an easy way to work. I really love the idea of GnuCash, and I've tried it out a couple of times, but I really don't want to have to find another accountant just because of a software change.

I have been using it for a couple of years now after refusing to pay QB Online $40+ per month.

The GUI needs some work but it is functional. Navigation to find things is not always easy for daily tasks. I have not looked at the recently released V3.0 yet.

I even looked into helping with the programming by adding a report that I wanted but the tools they used seemed very complicated to me.

Although it does not connect directly to your bank, you can download and bulk import transactions.

However, I continue to use the software.

Something that's not specifically mentioned is that, as far as I can tell, the author is a single freelance developer. Most people don't need a bookkeeping system, a simple budget application is enough to handle personal finances. It's been a while, but the last time I looked, GnuCash's budget system wasn't fully thought out.

The other aspect to this is that as the situation starts to become more complicated, doing it yourself stops making sense. Adding in children, a house, employees, etc, increases the chances of making a mistake and then having to go through an audit, which is expensive and time consuming. It's a better strategy to find tax accountant (local) and work with him to make sure the IRS has no need to investigate you.

This depends entirely on how your business is structured. I'm pretty sure the way GnuCash recommends handling business accounts is to have a completely separate GnuCash file for your business, then pay yourself under the Income category with that business and use that as a normal salary income. The complete separation makes tracking everything much easier.
While I am a single freelance developer, things wouldn't change much with a family.

Also GnuCash has heaps of documentation on dealing with employees / payroll. I think it would be pretty easy to pull off with a couple of employees. Not sure about beyond that, but honestly, it's a non-issue.

Worrying about that would be like worrying about how to operate at Google scale when you haven't even developed your product yet.

For the record I still goto an accountant every year. I just bring him the reports that GnuCash created. Unless you hire a personal bookkeeper you're always going to be responsible for totaling up your own income for taxes no matter what you use.

> While I am a single freelance developer, things wouldn't change much with a family.

I disagree with this statement because this claims assumes you keep up to date on tax code changes. Getting married, buying a house, and having a child now add in deductions for mortgage interest, child tax credits, child care tax credits, a first time home buyer's loan, and potential changes to your bracket because of your spouse and how you file. Taxes for an individual with 2 kids, a house, and business are definitely more complicated than taxes for a single individual who lives in an apartment. At some point, you have to ask if this is worth your time as opposed to getting work done, especially seeing as how demonstrated in the past year, the government can radically change the tax code.

> I disagree with this statement because this claims assumes you keep up to date on tax code changes. Getting married, buying a house, and having a child now add in deductions for mortgage interest, child tax credits, child care tax credits, a first time home buyer's loan, and potential changes to your bracket because of your spouse and how you file. Taxes for an individual with 2 kids, a house, and business are definitely more complicated than taxes for a single individual who lives in an apartment. At some point, you have to ask if this is worth your time as opposed to getting work done, especially seeing as how demonstrated in the past year, the government can radically change the tax code.

Those are all questions you would ask your accountant.

But from GnuCash's POV, it's just entering in more transactions per year into their various account buckets.

(comment deleted)
Honestly, all personal budget systems I've tried are crap.

I use two systems:

1. Annual budget spreadsheet. A simple high level of what my planned income is and what my planned expenditures / investments are. If there's anything fundamentally wrong about my plans, it's caught here.

2. GNUCash for transaction history plus 90 days of forward looking planned transactions. If there's a projected account shortfall, I can rebalance accounts, and determine whether this is a temporary cash flow problem or if I need to adjust my annual budget.

This setup works fairly well for me, though a tax accountant will still be useful in navigating things like what is and isn't a deductible expense, what documentation is required, and how to adjust your future plans to become more tax efficient.

My personal budget is extremely simple and very, very effective:

1) Take my desired savings and investments rate off the top with automatic paycheck deposits

2) Spend the rest freely

If I feel like I'm running out of money, I'd have to go back and evaluate my expenses to see where I could improve my spending.

I also do separate auto deposits to a separate account if I'm saving for a big purchase.

The only other categorizing I do is I have a special account for house related expenses.

I found YNAB to align the most with how I think about budgeting. Zero-dollar, category based that only focuses on the amount of money you have now and not to worry about cash forecasting. However, your description sounds like you need a bit more of an accounting and budget application than a strict budget.
(comment deleted)
My wife and I use it so that we aren't forced to put our financial data online with some cloud service.
I am not a freelancer, but as a personal finance tool, I am using YNAB (You need a budget). I've been using it for many years from desktop app to current webapp. I highly recommend it to anyone looking for financial app if you are willing to do some manual work (putting every transaction by yourself).

Budget scheme in YNAB is far different than any other financial tool (personal area) in my opinion. And it has helped me a lot to keep me stable financially.

The price ($60 for desktop app, which no longer available, and $7/month) would be big barrier for new comer, though. It is worth to subscribe :)

  if you are willing to do some manual work (putting every transaction by yourself)
So it won't track your bank transactions automatically? If I have to enter transactions manually what's the point of the software? I could do this on paper..
It does support track the bank transactions. but I don't recommend it, since by entering transactions, you will realize how much you'd spend in your budget to the category.

You could do it on paper. and carry it in your pocket all the way. There's no difference in terms of managing transactions. But you could be easily loose the track of your budget in my opinion. YNAB helps you to keep remind the budget. That is the key for me to keep using YNAB.

I don't use YNAB, but instead a homegrown budgeting site for my family, and always recommend entering everything yourself.

The bank account scrapping can take a few days for a transaction to clear, so you never know what your actual spending looks like for that day/week. And, like you said, it forces you to at least recognize spending.

The way I use it - enter transactions manually as they occur and use the import feature to match things up later, ensuring I didn't miss something.
Came here to also recommend YNAB (just an enthusiastic customer, in no way affiliated).

I was a little disappointed in the annual fee increase recently but I can say with absolute certainty that YNAB has saved me waaaay more money than the cost of that fee.

Top features for me: 1. Operates like Virtual envelopes - shift your allocations around easily. Totally account agnostic keep your actual money wherever you want while still tracking it for a specific purpose.

2. Goals - Create goals for your categories- virtual envelopes that remind you how much you need to add monthly to get to your target level by the desired date. Great for specific savings projects.

3. Credit cards - I used to just spend on card and feel good that I would always pay my balances in full. Now I first allocate to specific categories and when I spend on a credit card, my allocated money from that category view to a virtual envelope for my credit card. I’m accounting for my current spending now rather than a month from now.

Great mobile app too for iOS.

For item #3, it was awkward to me at first, since it was a little bit different concept in desktop app. But sooner, I realize that it was another aid to let people be aware of credit card spending more precisely.
I tried YNAB and it wasn't for me. What I did notice was that the user-community seems to be almost evangelical. I'm not talking about your recommendation but other encounters, including some on Twitter when I mentioned it once.

Is there an organised effort on the part of the YNAB vendor to create a community of ambassadors or do some people just spontaneously love it so much that they can't help but share it with the world?

I think it's latter. I didn't have a budget before using YNAB and it drastically changed my spending and money management habits.
YNAB is a personal finance philosophy. The software that enables that is secondary and could just as easily be a spreadsheet (and v1 was).

There’s a huge education component that YNAB offers of videos, podcasts, and live training sessions. A lot of that material is about how people can change their relationship to money.

For the people it works for, it can be truly life changing to go from living paycheck-to-paycheck to being able to accomplish things with money.

That’s why you see such rabid fans. They’re fans of the lifestyle, and they happen to use the software.

Does anyone have any recommendations on ways to automatically download data from bank accounts / brokerages etc onto disk for easy / scripted importing into GnuCash / Spreadsheets etc (instead of having to click around on the websites and download csvs or whatever daily?).

I have seen some products aimed at developers that will bucket various banks into APIs but not anything aimed at individuals. I have experimented with automating it with puppeteer, but surely there has to be a better way?

Maybe it's a matter of finding and using a modern set of financial insitutions with decent APIs. Does that even exist (in the US)?

At my bank, the best way is to run a cronjob to download a CSV formatted report. Probably needs phantomjs or similar. I think this is the general situation. Banks don't have (open) APIs and I don't think they have any intention of changing that. There's a few startups trying to but none of them are based in the US.
Wait, without an API, how do you automate downloading the CSVs? Specifically, how do you handle authentication?
He stated phantomjs, basically GUI Automation.
But if you run it via a cron job, don't you have to store your login, 2fa etc on the computer you run it on? That's what I was wondering about.
You would have to store login data on your PC somewhere. 2FA wouldn't be possible unless you had some kind of interaction with the script at runtime.
https://github.com/captin411/ofxclient is a good place to start, if your bank supports it. Some banks (like Bank of America) charge you a monthly fee for OFX downloads. In those cases, you can write up a selenium script or something similar to login for you and scrape transactions once a day/week/whatever. That's obviously a fragile solution, however.
Quicken has the Web Connect bank connection option. I have a theory that this is similar to a selenium script where you can download a QFX file, but don't need 2FA to do it. Unfortunately, I haven't found any documentation on how this actually works, though.

I also use the referenced ofxclient which is analogous to Quicken's Direct Connect. BofA is inconsistent with applying fees for using Direct Connect.

If anyone can share, I am very interested!

OFX is supported by GNUCash, but there's a long long tail of UI issues. GNUCash uses aqbanking to speak OFX to banks, but you still need to know a lot of data your bank doesn't publish in any obvious place.

And the aqbanking setup UI is completely separate from GNUCash, and really, really clunky. The good news is once it's set up, the normal import window UI is used. The bad news is there's no zero click process you can background. Some of that is because you may have conflicts between transactions you create automatically and the data source.

I was just thinking about this this week. I've been trying to keep better track of where I spend money for budgeting purposes, so I've been downloading transactions and putting them into a spreadsheet. Currently I export the transactions from Mint, but I'd really like to stop using it if at all possible (for security, privacy, and UX reasons).

I've thought about creating an open source project with scrapers for the major banking institutions so you can export your transaction data into a common format.

Does anything like this exist?

It may not be philosophically compatible with GNUCash, but adding all of your accounts to Mint would bring it all into one site that you can then script against. Mint used to use Yodlee’s APIs to access data from financial institutions, do you could try getting developer access to that if you wanted something more direct.
Check out Tiller! https://www.tillerhq.com/

I tried going down the route of dealing with OFX in GNUCash, and it's just a huge never-ending hassle. Tiller dumps the raw data from Yodlee (the backend that does the gnarly interfacing and cleaning for most PFM sites, besides Mint) into Google Sheets. From there you can use Apps Script or the Sheets API to push the data wherever you want. Sure, it's $5/mo, but well worth it for not ever dealing with bank websites or APIs or OFX formats again.

Looks cool, but wow, you're really handing all your banking data to Google? Does Tiller support raw CSV downloads?

I'm using Plaid's API with a read-only user on my bank account to download the data locally and enter it into SQLite. Then when I want to run reporting on it, I generate a Ledger file. Having it in SQLite lets me run a web interface over it and change the category for each item (Amazon purchases, for instance, which are seemingly impossible to categorize automatically).

Plaid's Bank API [0]

Its free for 25 accounts and connects to most banks [1]. The only bank I've found it doesn't work for is Barclays. I have most of my accounts (credit cardd and banks) hooked up to pull transaction data.

It returns JSON including category of spend. I don't know GNUCash, but you could format that any which way with a little scripting.

0: https://plaid.com 1: https://pastebin.com/WBKLMb1H

I can second Plaid. I use it with a read-only account on my bank, and it works great. I have a daily cron that grabs the data and pulls it into a database on my home network.

It's free (since I only have one use -- me), which is great.

what do you use to manage the transaction data? do you go through to categorize them? have a frontend for viewing?
I pull the transactions into SQLite, and have a custom web frontend I use to categorize them. Then for reporting, I export the whole database into a Ledger (https://www.ledger-cli.org/) file. Works great, although it's a lot of moving pieces.
I’ve slowly built exactly this as one of my side projects over the last few years. An OSX menu bar app that uses a combination of ofxclient and reverse engineered APIs to download balance/transaction info directly to an Excel spreadsheet. This way I get to leverage Excel as my UI for categorization, analysis, graphing, etc.

I’ve been debating for a while what to do with the app next but didn’t think many people would be interested. Is this the the kind of thing you’re looking for?

GnuCash seems to be about 15 years behind the times when it comes to accounting software...

It should hook up to my bank account. It should take photos of my receipts, credit card statements and bank statements and automatically OCR them to add data. It should automatically calculate my taxes for a specific country, and file tax reports with local, state and federal government agencies online, and it should highlight things I might have missed to reduce my tax burden given my specific situation. It should compare my expenses with a typical person to highlight areas I might be able to make savings. It should have a mobile app which works even when offline and syncs later. It should have auto backups to the cloud or remote storage.

If I just wanted a way to add up my expenses by category, I would have used a spreadsheet.

Can you recommend a piece of software that does all of the above?

Can't be 15 years behind the times when there is no better alternative.

Yes, I too would like to know if this exists?

Very much doubt it would be OSS even if it did.

TurboTax, QuickBooks and Mint. They're all owned by Intuit and not open source.
Mint doesn't do nearly any of the things he claims (and definitely not well), I use it daily and have been looking for a good replacement for over a year now.

Do TurboTax and Quickbooks sync so that I can quickly add taxable transactions?

In my opinion, QuickBooks Online will do almost everything painlessly.

The only thing you will complain about is the price if you are a small or one person company.

If I all of a sudden had a couple of employees, I may go back to QB Online. Then the $50 would not mean as much in the grand scheme of things.

Does this scan receipts with OCR and connect them to the credit card charges?

I just want something that will do a better job at giving me a good look at my budget than mint but that doesn't require a serious time investment. I willing to pay with money instead of time.

You know what they say, "scratch your itch".
I think GNUCash is in the Unix mode of "do one thing and do it very well". For me, that "thing" is enforcing double-entry accounting, although there are a couple other things that distinguish it from a spreadsheet for me.

I can see how you might want or expect a piece of software that handles everything, but in the GNU ecosystem, the traditional user-land pattern of use is to have many pieces of software, each of which does one thing, and to use them in turn as needed. This might place more cognitive burden on the user (vs. Windows), and also requires pieces of software you can start, use, and close quickly (again, vs. Windows, and GNUCash is a bit wanting in that regard...) but it also allows you more freedom and flexibility in doing your work.

So, instead of embiggening GNUCash, I would say that your desired actions would better be served by separate pieces of software:

- Bank hook-up: Something from your bank? This one is tough, as there is no widely-used open standard for manipulating your bank account over the internet, AFAIK, so you'd need bespoke software for your bank.

- OCR data ingest: Something like Ocrad with post-processing into a format GNUCash can use. Some lex/yacc wizard could probably do the latter part easily.

- Automatic tax calculation and burden reduction: A FOSS version of TurboTax? This is a good example of why the Unix philosophy is applicable, because my taxes in Canada are simple enough that I can handle them myself. I don't want a big tax-optimisation program tacked onto my bookkeeping software which I won't use.

- Expense comparison: I don't think closed-source accounting software does this, but GNUCash does allow you to make budgets. Collecting the budget for a "typical person" (of your country and lifestyle) is a little out of scope, and might be better served by a market research agency or something. Sadly, there will probably never be a GNU World Census.

- Mobile app and cloud storage: This one is a little tough. You want it to sync up between your mobile device and (presumably) desktop. You could host a Seafile or OwnCloud instance on your desktop, but I'm not sure if that would let you sync them up anywhere. iCloud-style storage would require server infrastructure, and that usually requires an organization running off profit or donations to host and maintain the infrastructure. IMHO, we don't really have a good answer for the issue of "who pays for the servers?" in FOSS. Anyway, we are getting beyond a software/GNUCash issue and into a hardware/infrastructure issue.

Long time GNUCash user, but not exactly a defender here.

> there is no widely-used open standard for manipulating your bank account over the internet, AFAIK,

http://www.ofx.net/about-ofx.html

OFX is widely supported (but not universally). The UI leaves much to be desired.

> I don't want a big tax-optimisation program tacked onto my bookkeeping software which I won't use.

GNUCash generally does a good job of keeping things you don't use hidden or at least unobtrusive. Account reconciliation being one of them. IMO tax calculation is not a viable OSS tool, as it's country specific and changes rapidly. Ubuntu ships 18.04 at the end of April. Do you want to file using tax software from July 2017?

> Mobile app and cloud storage: This one is a little tough. You want it to sync up between your mobile device and (presumably) desktop.

GNUCash specifically has problems here. The code base assumes single user transactions and concurrent modification is unsupported. I use a psql database for cloud storage, but if I lose network connection I get a dialog about someone else using the books and have to discard the stale lock. This is problem whether using files or SQL, although SQL is at least a solid backend to some day support it, while filesync solutions would be pretty much a fail.

> IMHO, we don't really have a good answer for the issue of "who pays for the servers?" in FOSS

IMO, we do: the users. There's no reason you can't charge people for a username / password, although, when hosting financial data the liability could get painful.

OFX may be widely supported in the US, but not the rest of the world. I looked for major Canadian banks on http://www.ofxhome.com/index.php/home/directory/all and could only find ING Direct.
For Europeans, GNUCash supports HBCI / FinTS. I guess Canada falls between the cracks.
You know what it does have? The source on Github. :)
It's open source... make a pull request.
> If I just wanted a way to add up my expenses by category, I would have used a spreadsheet.

Um, have you ever actually done this with accounting data? It becomes a tangled, shitty mess. The formulas used to calculate everything become larger and larger, and the data needs constant casting from text back to numbers.

> It should automatically calculate my taxes for a specific country

It should automatically manage your stock portfolio and give you 26% yearly returns, and it should give you daily backrubs as well.

> It should have auto backups to the cloud or remote storage.

It does! Google drive, Dropbox, Seafile, etc etc.

> It should have a mobile app which works even when offline and syncs later.

Agree, mobile app would be nice.

"It should automatically calculate my taxes for a specific country, and file tax reports with local, state and federal government agencies online, and it should highlight things I might have missed to reduce my tax burden given my specific situation."

Unfortunately, GnuCash's lobbying and political action budget is significantly more limited than [Intuit]'s.

I know nothing about GnuCash. How internationalized is it? Taxes are different everywhere.
How come that no one mentions xero? Been using it quite some time and I was sure it was one of the best solutions out there. Thoughts?