One of my favorite parts of GnuCash is the transaction splits, and I end up using these heavily.
For one example, imagine an Amazon order. You order 3 things, partly paid for by CC card rewards, maybe a gift card, and a CC charge for the balance. With transaction splits, it's easy to put each thing you bought into the appropriate expense account with the correct cost, reconcile the CC charge correctly when your statement comes and you import the OFX/QFX data, and track your gift card balance. In GnuCash, that's all one transaction, with many splits. For expensive durable purchases, I'll sometimes also go and add the serial number to the text of the transaction split from when I purchased it, for lightweight home inventory without a separate program or redundant data entry about what/date/cost.
Compare to a simpler personal finance program that just imports the CC charge and lets you tag it as a single expense category (or takes whatever the CC company says the category is), and if you ever need any more information, you're stuck with keeping a separate program or spreadsheet up-to-date.
(You could use GnuCash the same way as the simpler personal finance program, but GnuCash has more powerful features that are there when you want them.)
Splits are also key for couples that maintain distinct finances. If I pay $100 for groceries, only half of that should show up in my monthly expense report, the other half belongs to my SO's expenses.
Most of my GnuCash transactions are actually split transactions for this reason.
We're both from Europe, maybe it's a millennial thing. We both lived with flatmates before moving in together, so we just continued splitting expenses like we were previously doing with flatmates. It happened naturally and seemed logical at the time.
Fast forward a decade and we still do it this way. We must be doing something right because we never argue over money or similar topics. Why change something that works?
While not general to all Americans, there's a minority subset of couples who do not combine household expenses. There's a bunch of reasons for this: if you are divorced, it can simplify some of the processes around alimony. If you had a bad relationship due to finances in the past, some people prefer financial independence, or if the couple have other complications that makes combining household finances complicated (like trusts, or property owned with a different party).
In some circumstances, the US. When calculating your taxable, you can deduct state and local taxes from your income for federal tax purposes. This is generally not worth it, since you would give up deducting your state income tax. Even then, the IRS recognizes that keeping track of what you pay in sales tax is unreasonable, so you are allowed to: a) deduct groceries as if they were taxed at the general rate, even if your state has exemptions for essenyials like food and b) ignore what you actually paid in sales tax entirely, and deduct an estimate based on your income and the tax rate.
You have to put the limit somewhere, anything else than splitting in half seems very tedious. Besides groceries is just one example of many expenses so I believe that differences get averaged out, and if they don't the two of us don't care about it.
My partner and I don't do this any more - especially now that we are married - but for the first couple years we lived together we split the grocery bill using a 1 to 0.77 ratio we derived from our bodyweights.
We just derived the ratio once and never updated it - neither of us were particularly invested in losing, gaining, or tracking our weight - so it seemed an OK proxy metric to handle the fact that we ate noticeably different amounts.
A few years later we've started to consider the fact that we might both be on the spectrum :)
> Besides groceries is just one example of many expenses so I believe that differences get averaged out, and if they don't the two of us don't care about it.
Yes, that is where I was going with my line of questioning. What is the point of all that separating work if you don’t care about it not averaging out?
What I am saying is that when we buy a new sofa we split the expense in two halves, we don't measure each second each of us spend sitting on it so that the split represents EXACTLY our individual usage. Same with groceries, we don't count each grain of rice each of us consume, we are okay with some level of inaccuracy. Anything besides that would be absolute madness.
At the end of the month we still both get a pretty solid idea of our individual expenses no matter who actually paid of an item. For instance my expenses for the month are ¥2200 while last month it was ¥2500, seems like useful data, right? Who cares if one of us made a better deal than they should have on the sofa while the other consumed a few grams of rice more than other?
I am surprised this inaccuracy makes you question the reason of tracking personal finance.
Edit:
> What is the point of all that separating work if you don’t care about it not averaging out?
Maybe that's the source of the confusion, our finances are already separated, there is no extra work separating expenses. There is extra work for expenses we have in common like the sofa or groceries, in which case we do half and half even if that's sometimes inaccurate.
I can imagine that splitting the expenses is symbolic for some couples, more than anything else. Sometimes because history (e.g., didn't feel like an "equal partner" in a previous relationship). And for others, it might just be customary, or seem sensible.
My situation has been different than that, in that I wished my GnuCash setup didn't incidentally quantify some categories of expenses so well. I've adjusted some categories since then. (Though it did make me think of a line of awful dialogue, for the worst rom-com jerk character ever.)
Does splitting here mean each person pays half of the price of the shared item? If so that puts more pressure on the lower earner. One approach would be to put both incomes in a big pot, take all the shared expenses from that pot, and then divide and distribute the rest between the two.
Me and my wife kind of do this. More specifically we contribute to family expenses proportionally to our income and we pay all family expenses from a shared bank account (fed with monthly contributions).
Any personal expense is paid by our personal account.
This guarantees that we do have the same saving rate and this feels to me much more fair that a 50/50 split.
We started with something like this as well. The problem is that the savings and disposable income will also be proportional. If the difference in salaries is large then it could seem unfair. But then again it depends whether you view wealth as an individual or shared affair.
We do have pretty different incomes and working hours. Wealth is absolutelly a shared affair, but we could not get to agree on how to invest the savings. We have pretty different risk tolerance and asset class affinity, so we decided to split proportionally and grant each other freedom with whatever is not necessary for the family needs.
Most likely we'll re-evalute the criteria in the future if absolute value of our savings diverge too much or if our investing choices will have markedly different ROIs.
I’ve found it to be incredibly useful. And prior to that I used ledger for a few years. Ledger was great, but personally I find YNAB to be more useful because the budgeting features are the focus, not the accounting.
Maybe I'm outside the norm, but as a YNAB user of over 10 years, I've never needed this. We split transactions across multiple categories all the time (shopping at Target for groceries, clothing, household goods, etc), but I expect that is very common.
I don't think YNAB philosophy would have you tracking reward or gift card balances, so you'd only track the amount that hit your CC, in this example. In that regard, YNAB certainly isn't a tool to track all of your monetary assets.
Is it common to split a single transaction across multiple accounts?
When I use cash I split the transaction like this (in YNAB):
CASH -$7
LOOSE CHANGE +$0.36
STORE +$6.64
Loose change is an account that represents at least as much money as there is in change in my house, pockets, cars, etc while cash is an exact tracking account.
Have you found value out of this? I just consider cash spent as soon as I withdraw it, as far as the budget goes. Tracking small change sounds tedious and seems line it wouldn’t provide value, but so I’m curious to hear if you think differently.
I do the same as you. I used to attempt to track cash spending but I found that if I wasn't tracking it within 24 hours of it being spent, I probably wasn't categorizing it correctly anyway.
Since my cash expenditures represent well under 1% of my total spending, it wasn't worth tracking in detail.
I used to do this but I started tracking change separately because I want to track budget categories exactly but I also don’t want to have to count a bunch of change every time I reconcile my cash account. The change account is only tracked automatically, it would be too tedious to do manually.
I used to toss coins in the bin. Time spent accounting for then (Where are they now and how much is it, how much more do i need?) cost more time then their value. Now I live somewhere where some merchants only accept cash, so I save them again. It's a hassle though.
The entire purpose of a budget is to compare to your cumulative account postings on a period. If your accounting is garbage, then the budget will be similarly useless.
YNAB does support multi account split transactions, it’s just a combination of the split and transfer types. It’s not meant to support full accounting but it certainly supports that.
Sorry, but YNABs transfers are bordering on hostile to the user. Unless things have greatly changed very recently, then YNAB would double all my auto transfer postings (I auto transfer money biweekly/monthly to vehicle maintenance, property tax, annual insurance bills, discretionary, house maintenance and a few registered accounts like retirement, my kids education etc). YNABs process here proved to require constant reconciliation. Not only that, but further placing postings for capital gains would make it throw a tizzy.
YNAB is basically completely useless as far as anything beyond an extremely extremely rudimentary single user budget.
I tried this out and switched to ledger-cli instead. All of the features listed above are possible and the the flexibility is incredible. The hardest part is data entry. For accounts that provide API access I wrote curl/jq/awk parsers and for accounts that you can only get via download, I wrote short csv parsers in awk. I have ~ 15 accounts to keep track of and various loans/securities and I use ledger-cli to keep track of cost basis, interest vs principal on loans and my mortgage, all expenses, etc.
Took some time to write the transaction parsers, but updating everything takes about 5 min/month now and I have a complete financial picture without sending any data to something like mint.
I envy you, this has been my dream for years. But obscure payment gateways make this a task for the chosen few in this country. If somebody could point me to a workable solution (on Linux / cross platform) for Germany it would be highly appreciated.
“Every financial system is broken in its own way” (ex-coworker who had worked in financial services)
I use `aqbanking-cli` for grabbing transactions from my banks' FinTS/HBCI API and generate a CSV out of that. That CSV then goes through a bit of Python that splits up the entries into transactions. Those get rendered out as `beancount` transactions (but `ledger` works as well, I used that before I switched to beancount) and appended to my actual ledger.
I then use `fava` (a beancount web UI) to fix mistakes, and have another piece of code (this time written in Go, but could be Python/whatever as well) that takes transactions that are generated from my brokerage account and enriches them with data parsed from my brokers' PDF reports (since the FinTS/HBCI info doesn't contain stuff like ISINs or taxes/fees separately).
This is for my personal finances, but I used the same system (minus the brokerage stuff) when I managed the finances of a hackerspace in the middle of Germany for a few years.
Ok. But written in Haskell? Why would you write this kind of stuff in anything but python - it’s trivial after all, and it should stay trivial through all layers…
There are companies that offer APIs to access bank accounts as a service. Plaid.com is one of them, although you might need to search around for another one that supports your bank.
At one point, there was a decent standard called "OFX" which financial institutions were supposed to support. It let you use an app like GNU Cash or QuickBooks which could automatically connect to your bank account. That died apparently and was replaced by some API/standard called "Open Banking". It's shittier in every way since it seems to require a middleman now (like Plaid) whereas with OFX you could just query an endpoint easily.
Neat thing about gnucash in germany at least is that most traditional banks(but not the fintechs) support hbci/fints and there is a plugin(?) for this. Paired with the auto-assign its very easy to import transactions
I did not, mostly because the parsers are custom to how I want things displayed. Here is a simplified example for Chase, though:
BEGIN{
FS = ",";
}
{
if(FNR > 1){
date = gensub(/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/, "\\3-\\1-\\2", 1, $1);
print date, $3
print " liabilities:chase"
if($5 != "Payment"){
print " expenses:" $4, " $", $6 \* -1.0
}else{
## This exists because I have an offset in the account
## I use to pay the card with. If the amount in my residual
## account != 0, I know there is something wrong
print " liabilities:chase:residual $", -$6
}
}
}
Suppose this script is called 'parse.awk', you would then run:
awk -f parse.awk myfile.csv
I've been doing this for a couple years now and so far I haven't had file formats change on me. Most of the complexity I have experienced so far is when the regex to parse line-items into the appropriate ledger account is non-trivial. It started off as a way for me to learn awk and double entry bookkeeping and somehow turned into something useful.
In the US, every bank account and credit card I've found will let you download OFX or QFX files of transactions, and use the GnuCash import features (to match up with transactions I've already added, and to add any I've missed).
There's also a way for GnuCash to sync data with some financial institutions automatically, but I prefer to save the data interchange files long-term anyway.
Sounds like this UK Open Banking isn't entirely an open standard for open interoperation, but maybe a little closer to a cabal?
> UK Open Banking isn't entirely an open standard for open interoperation, but maybe a little closer to a cabal?
That's correct, "open" is a sham, there's nothing open about it. You need to either have regulatory approval or piggyback off a gatekeeper's (TrueLayer, Plaid, etc) regulatory license to even get access, and when you do, you realize how terrible the data quality is and that it's near-impossible to build anything serious on top of it.
Unfortunately USAA has disabled OFX and QFX. I hope this doesn't become a trend. I can't believe getting programmatic access to finances can be so difficult in this day and age.
I was using Mint connected to my RBC account and loved it, but it stopped working forever about 2 years ago.
Now I just do it all on spreadsheets which isn’t as bad as I thought, but Mint was still nice and actually pinged me when I overspent in a category. Now I have to remember (taking away cycles) that I can only spend $X, Y times a month for lunch, beers etc.
Yes people have asked. One they removed access they rolled out a Quicken partnership, so I assume this is some decision made by management as part of a business deal. But I'm only speculating based on the timing.
I bet its a new plan for revenue extraction. quietly remove the feature, then upsell a "premium package" that includes exporting your own data in that format.
Same experience here and with all due respect to their work. I could understand accountants using it but for the general public it forces you to use accounting concept that unnecesary (could be done internally) for managing your personal finances.
In another context this also happens with CRMs where marketing and sales people end up using spreadsheets and from time to time uploading information to the CRM with some push.
> for the general public it forces you to use accounting concept that unnecessary
Strong disagree on the unnecessary part, as far as I know there is one correct way to count money and a billion wrong ways.
Fortunately the correct way, double entry accounting, is actually fairly easy. People were already using this method 400 years ago. It also scales down very well to the level of an individual and scales up to the level of a megacorp.
It's a skill that takes 30 minutes to acquire and pays dividends your entire life.
It took me several years to learn, and I still encounter transactions from time to time that take me one hour to come up with the correct splits.
Not everyone has the same level of financial education, nor the same intuitive mental model around what's credit and what's debit, and what goes where.
This is not my experience, I know accounting but transferring that knowledge (and interest) to people that just want to simplify the registration of a basic movements in a seamless way makes them to look at other tools. It is the UX at the end beyond if you are right on the concept.
ActualBudget (https://actualbudget.org/) supports open banking via GoCardless (https://gocardless.com/). GoCardless (previously nordigen) deal with meeting the Open Banking standards and connecitng to all the banks and provide you with a fairly straightforward API for it.
It looks like automatic importing of transactions isn't supported yet[0]: "There are a couple ways to get transactions into the system. For now, automatic transaction downloading is not available but it will be available very soon."
What I really want is some system that lets me just click "Import", and it goes out to my various CC/bank sites and pulls in the data automatically. Or, imports on a schedule 2x/day or something. The thing I want to avoid is having to log in/download/import these files manually from like 7 different sites. I want that because I handle this stuff on a random basis, when I have a few free minutes, and the time it takes to get my records up to date the manual way is about the same amount of time I have overall to do it. And I find reconciling everything on a fixed schedule, say at the end of the month, is much harder than doing it on the fly, because a lot of times I will not remember what a charge was even for if I wait 30 days to process it.
Open Banking and open-source client-side software is a poor fit (btw, the "open" is a sham, there's nothing open about it).
Open Banking is implemented as a set of REST APIs using oAuth offered either by the banks directly (if you have the necessary regulatory approval) or by a gatekeeper such as TrueLayer/Plaid/etc (and I believe you can piggyback off their license, so no regulatory approval necessary).
Consuming oAuth APIs relies on guarding a client ID & the associated secret which would be impossible in an open-source app (or any client-side app for that matter, since extracting those is merely a reverse-engineering problem), therefore out-of-the-box Open Banking support is impossible.
However, nothing prevents them from developing the integration and let the end-user provide their own client ID/secret from their own accounts, and I believe most of these Open Banking providers have a free dev plan that can nevertheless connect to real accounts and would be enough for this.
In Germany, we have HBCI/FinTS, it's basically a standardised protocol to do "home-banking", and it works really well. I use an open source Java app, Hibiscus [0], and it connects to all my accounts and downloads the transactions. I can also make transfers in the software and they're pushed to the respective banks.
It's almost what I imagine client-server Open Banking could have been.
There's also the EBICS protocol, but that is more for B2B, server-server communication I believe.
In the EU and UK, banks are required to impose onerous security and authentication requirements on third party software before granting account access. The rules are designed to protect consumers from insecure or malicious software but unfortunately a side effect is that open source projects are quite unlikely to be able to comply. The most we can hope for is usually that a bank lets you manually download statements as OFX. HSBC does that for example but some other banks/ credit card providers only give you QIF or CSV.
One commenter mentioned aqbanking, which is open-source and can navigate various kinds of 2FA shenanigans via the FinTS protocol. For example, it communicates to my card reader via USB, and relays the resulting TAN back to the bank server.
That thread seems to be attacking the wrong question. The controls are on people, not the software. Individuals should be getting access, and gnucash should just be implementing the protocols for access. Gnucash shouldn't have any secrets in it in the first place.
Not that that would change anything, I doubt banks would give individuals access either.
I used gnucash religiously for few years after we moved to the USA. With limited finances and having no clue where money typically goes in a new place, gave me quite a bit of anxiety about our financial future here. Gnucash allowed me to have a very precise understanding where money comes from and where it goes. Yes, it took valuable time to keep it going, but gnucash with double entry system, ability to import statements and often automatically reconcile transactions, made it doable.
If it helps anyone, I wrote a blog post[0] (based on this comment[1]) explaining how double-entry accounting works.
I have recently been thinking about building my own program that implements double-entry accounting in a more approachable form for individuals. I’m not sure if pure accounting concepts are ideal for the average person for keeping track of their budget like how they are essential for businesses. My bias says yes, but perhaps a greater amount could be handled in the background to present a more intuitive interaction for those unfamiliar with accounting concepts. Currently, I prefer using ledger[2] to GnuCash, but I appreciate that both exist.
I continue to be confused how people use these kinds of programs. They're cool, yeah, but how do you keep track of your credit card(s), bank account(s), possibly your significant other's as well, subscriptions, fees, automated payments, cash in/out, taxes, varying income, investment returns, savings, balances on platforms you may use like wise/revolut (for travel) in different currencies, automated "fees" like interest on savings, loans, which may change every now and then, etc?
I dont see any good way to manage this stuff, maybe just by monitoring what goes in and out of a main account. I would love if there was a protocol that all these services supported, but there sure as hell isn't.
At that point, does something like GNU Cash become just another inaccurate representation of in, out and have?
Edit: Maybe you just update it once a month from statements?
You have to be a "personal accounting hobbyist" to really make your ledger match up with reality. If you have even moderately complex finances, you will have to take input from several different sources, do a lot of preening of transactions that were imported a bit incorrectly, reconcile against external sources of truth like bank statements, and in general spend time keeping your accounts straight.
How much time you need to spend to do a good job can vary widely. It depends on your data sources, your tolerance for error, and how well your use cases match up with your software's assumptions.
Balance that cost against the benefits, which are subjective -- how much do you value easier tax preparation? How much do you value peace of mind from having your financial state clearly articulated? How much do you value understanding your in and outflows, making a budget, monitoring activity for potential fraud?
> but how do you keep track of your credit card(s), bank account(s), possibly your significant other's as well, subscriptions, fees, automated payments, cash in/out, taxes, varying income, investment returns, savings, balances on platforms you may use like wise/revolut (for travel) in different currencies, automated "fees" like interest on savings, loans, which may change every now and then, etc?
I do things like that.
All those accounts can be represented. Many of those things are Scheduled Transactions.
When you Reconcile a statement from a bank or something, it'll even prompt you for recurring interest, in case you don't already have a transaction for that (because, e.g., the interest transaction was already there when you imported the OFX/QFX for that statement).
Investments like stocks and funds are tracked by shares, you can easily enter dividend reinvestment, and you can pull data for the current value in whatever primary currency.
You can also mix many world currencies in the same file, and see the totals according to exchange rates, and you can even define your own units and exchange rates for some purposes (which I've done in the past for metals and cryptocurrencies).
You can enter transactions as you go, and when you periodically Import, any transactions you didn't enter will be added. You can check this when you Reconcile a statement.
You can do all of this and more with something like gnucash, and also foreign exchange fees, tax accounts,etc. I ran a small business off this for a while some years ago without much trouble, mostly because I wanted to understand what was going on. You could also do invoicing and AR/AP which is t needed for home finances.
Process was pretty easy. Some entries manual or automatic during the month. At whatever period you want download OFX/QFX from bank accounts, CC accounts, etc. and import. Or CSV files or whatever you can get from your banks. When you get statements, reconcile those accounts.
Double entry is the only way to really keep track of things and catch errors, but you control granularity so in some sense amount of work. So in your scenarios, you would have expense accounts for interest fees per bank, loans, income accounts for different sources etc. the number of accounts you have is not a reflection of the institutions (eg banks) but the the things you want to keep track of.
If you want things accurate, you pretty much have to add a reconciliation step somewhere, tools like gnucash will let you see what has been reconciled and what hasn’t yet.
> They're cool, yeah, but how do you keep track of your credit card(s), bank account(s), possibly your significant other's as well, subscriptions, fees, automated payments, cash in/out, taxes, varying income, investment returns, savings, balances on platforms you may use like wise/revolut (for travel) in different currencies, automated "fees" like interest on savings, loans, which may change every now and then, etc?
I use a phone app (there are many out there) for my needs instead of desktop software, but in my case I log every single bit of income/expense ASAP - if I buy groceries, I pull up the app and categorize it (takes like 20 seconds). Sometimes my bank is kind enough to have their phone app alert me of new changes in account balance, but that's really flaky, so I check the balance on their website/app occasionally as well and log the changes.
Since I log just my own data, the approach scales wonderfully well (since it doesn't need to scale much). If I ever want to have a look at more data, I export the statements from my bank and either just open them up in LibreOffice, or maybe do some light Python code.
I do the same (ledger, not GnuCash). A few minutes each day. I used to outsource (part of) the work to my daughter when she was ~8yo (and paid her for that) to teach her that work is where you get money from.
I did this when I was still by myself, but a) having family and b) having more and more micro transactions (like coffee, transit, lime scooters…) and c) more and more accounts (amazon, paypal) means I had to declare time bancruptcy meanwhile
LPT: If you do switch to importing use CSV, not QIF. A lot of (i.e. all but one of my) credit card companies have two "description" fields, a short one and a long one. The OFX usually only has the short one, leaving you with often cryptic entries; things from Stripe and PayPal often get truncated before the name of the vendor upstream of them, making them impossible to decipher.
How can you NOT keep track of “keep track of your credit card(s), bank account(s), possibly your significant other's as well, subscriptions, fees, automated payments, cash in/out, taxes, varying income, investment returns, savings, balances on platforms you may use like wise/revolut (for travel) in different currencies, automated "fees" like interest on savings, loans, which may change every now and then, etc?”.
There’s a lot of people who would absolutely panic at the thought that they have all their money flowing around and they can’t even keep track of it.
Also, there’s an argument that if your finances are so complex that you can’t keep track of it (and youre not wealthy enough to pay someone to keep track of it) maybe that in itself is the problem, and that you need to simplify your finances.
Also, is it really that hard? Is it harder to note that you spent money buying something, or transferred money internationally than to actually spend that money buying the thing or transfer it internationally?
And recurring expenses are fairly easy to keep track of with even the most legacy software solutions.
I use GnuCash to track all of my family accounts. I feel better not letting any third party have my financial data and it served me as a forcing function to learn about accounting.
I does take less than 20 minutes each months to cleanup and import transactions from my accounts, without any automation and with some checking for data correctness.
I don't mind the lack of automation (yet), I set aside time to go through expense classification and to look at the past months.
Reports are kind of dry but helpful. The pain point is that they are not easily shareable
You automate all the recurring things (this is built into Gnucash), enter the non-recurring things (takes a minute or two a day if that day even had any transactions) and reconcile against the bank's statement/app/website monthly to make sure its representation stays accurate.
Once you've entered a transaction once, its autocomplete handles those going forwards so entering a new transaction is as quick as typing the first couple of letters of the shop name, pressing tab a few times, then entering the amount.
> You automate all the recurring things (this is built into Gnucash
Is it? When I last looked at GnuCash (which, admittedly, was like 7 years ago) you could not setup automatic categorization of transactions. You couldn't say, while going through imported transactions, "Every transaction where the payee is utility company should come from the Utilities account". The idea was that GnuCash was using some kind of Bayesian scheme to learn how to categorize your transactions automatically, but you had to input your transactions manually 3 or 4 times before it started working. Which, for me, seemed like a huge waste of time since 90% of my transactions could be automatically categorized by simple keyword matching against the payee or description.
I'm not talking about importing transactions, that's not a feature I use because it'd take longer than entering manually if you did it daily. I'm talking about the scheduled transaction editor, where you enter e.g. your rent manually once then schedule the same transaction to happen monthly. This should still work if you also import the non-recurring ones.
I do this. Sometimes I add the info the same day, or just do it all on the weekend. Probably takes 10 minutes a week. I can then take that info and compare to any budgets or predictions and see where things are going right or wrong.
I’ve had everything balance down to the penny for 20 years now. If you have some attention to detail and make it a habit, it’s not really that difficult or time consuming.
It’s also kind of like paying cash. It makes you more aware of what you are spending.
I track everything as only three accounts regardless of where they are. Debit, Savings, Investments. Credit charges are just uncleared debit charges until I pay the bill.
I use tags to categorize recurring charges and on the 1st of the month I will sit down and pre-enter all of last month's recurring charges into the next month, as well as check the statement to make sure that last month's were really what I expected them to be.
I enter new charges on the day that they happen. It's 5 minutes a day instead of an hr or three at the end of the month.
What I end up with is that I know where everything has been going, and I have a good forecast for where it's going to go in the near future. If I need to answer a question like 'how much of a rent hike can I tolerate' or 'how much car can I afford' I have a good basis for deciding it. I also have a single 'available spending money' number that I can refer to if I need to, but honestly im a casual minimalist and not buying things is a great way to keep your finances afloat with minimal stress.
I just update it monthly-ish from CSV (or occasionally OFX) files I can download from my bank, credit-card companies, and brokerage.
You can save the mapping of columns <-> GNU Cash fields for each one, and it takes me about 10 minutes for my most heavily used CC account. GNU Cash supports guessing the balancing entry, which speeds things up quite a bit.
The only issue I have is that you can't enter splits from the import dialog, so I leave split transactions unbalanced then go through those manually. My only regular splits are my mortgage payment (Interest, Principle, and Escrow) and deposits (I usually deposit multiple checks at a time, but they show up as a single entry on the CSV I get from my bank).
I'm a recent convert to YNAB. I tried multiple times over the years, but always gave up after only a few days.
The key for me and my wife to get it to work was getting into the groove of entering your transactions and reconciling daily. It is a bit obsessive, but we've been able to completely overhaul our finances with it.
Basically every morning I start my day by opening up YNAB and my bank, and for our personal finances, just making sure everything matches. For my business finances, I actually manually input all expenses (from receipts, invoices, etc) then once a week, I will go through and reconcile with online banking (I usually miss a transaction or two).
Do you not link to your credit card/bank (respect if you don't want to, of course) - I use YNAB and only check it once a week or so and mostly just edit the names of new merchants and double-check categories of the new transactions.
In our personal budget, we link everything we can, because we spend a lot more smaller items randomly, so we can't manually input everything.
For unlinked credit, we just create a budget item for that card and we try to budget them out properly, but it isn't as easy, and we lose tracking into the spending.
Yes, uploading statements is the way I do it. I try to do it once a week and it takes barely any time at all. Lately I'm not so good at that and end up doing it every few weeks, so it might take 1-2 hours. Most of that time is spent tracking down one or two expenditures to see how they should be categorised if it's not clear from the face of the statement. Recurring payments or payments to frequent payees are generally correctly categorised by GnuCash without any intervention by me.
I found that, to be really effective, you need to import the transactions from your bank somehow. I use YNAB to have it automatic, but you can also manually export/import CSVs from your bank (I used to do that before they supported EU banks).
> Maybe you just update it once a month from statements?
In my experience, this is the only reliable way. Most banks also support exporting transaction data as CSV, but the data quality is usually too poor for automatic account assignments.
If some people have some recommendations, my wife is asking me for an app to basically input our family expenses. It should be fast, painless and very simple. Open the app, select the date (default today), select the category, the shop, amount and payment method. Done. Both of us should be able to input the data (so web based).
At the start, nothing more in the app. She would be happy to do the data analysis using her laptop.
I was thinking about a stupid CRUD app with an SQLite database, but I do not want to reinvent the wheel.
If some of you have ideas, we do not need banking integration.
You can set up GnuCash like that. Example usage for recording a grocery trip:
1. Double-click on "Expenses" -> "Groceries" in the account tree.
2. In the blank entry that appears at end end of the list of earlier transactions, edit the date if necessary (it will default to today's date).
3. Next to that date (click or press Tab), enter a description, such as the shop name. With text completion.
4. Next to that, enter the payment method (with completion and default). (Note that this will also add the transaction to the GnuCash account for your bank account, credit card, etc.)
5. Next to that, enter the amount.
6. Press Enter to commit the transaction.
You can also leave some of these accounts open as tabs, if you want, rather than find them in the account tree each time.
1) Imports from our credit cards automatically or from a CSV/Quicken/etc. file
2) Supports entering transactions manually when you can't or don't want to link to a bank
3) Supports reconciliation of the actual account balance with the in-app balance
4) Supports budgeting, but if you just want to track categories then just assign the amounts you spend to each budget at the end of the month and the system will be happy.
There are lots of pretty basic workflows that it doesn’t handle gracefully at all.
Before I gave up on YNAB as being complete shit:
-you had to email support to unsubscribe. What the fuck is that?
-it didn’t support carryover surplus properly, which fucked your budget every time expenses carried over due to, for example, holidays, or just cause you paid on a different date.
-it didn’t properly support multiple physical accounts with transfer requirements
-it couldn’t be made to understand that certain postings must come from certain accounts
-it couldn’t split postings to multiple accounts (it could transfer raw amounts on a schedule, but that’s a bullshit hack, and their scheduling options are shit tier)
-it had no, non-bullshit hack way to represent annual payments which should have a monthly accrual to save
And on and on and on and on.
It’s clear that the developers of this app simply do not have even a rudimentary understanding of a plethora of accounting concepts, or even a basic understanding that different transactions have different period requirements, and it leads to an app that is simply impossible to mangle into working for anything beyond extremely basic budgeting that must be monthly based.
- There's a cancel subscription button in Settings
- It rolls over surpluses, it doesn't rollover deficits. This is documented and an intentional design decision to get people to "cover" the money. You can roll over negatives in "Ready to Assign" and in Credit Card balances, if absolutely necessary.
- I don't know what you mean about multiple physical accounts with transfer requirements.
- Without knowing what "certain postings" are, I assume you're referring to the fact that Payee association is only based on the text in the transfer and no other signals
- It can split postings, I'm not sure what you mean. You can have a transaction that is subdivided as two transfers to two accounts. You have to use the category split button.
---
I do agree that there are some things it's missing, but the only one I've found interrupts my flow is the lack of flexibility in goal setting (some times of goals can only recur monthly).
I highly recommend YNAB. It pulled my financial life together a decade ago. Synced apps on the phone and web. It also introduced me to envelope budgeting, which I found to be super useful.
If you want to do investment tracking, I don’t think it’s the best for that.
Here here for YNAB. I would have preferred something FOSS, but the mobile app makes it much simpler to record transactions as they happen rather than saving receipts and doing it at home.
I've been working on an app for iOS. You can essentially add transactions, categories and accounts.
- It's a document based app, the file format is open (JSON zipped), so you can store it on iCloud Drive, Dropbox or anywhere else, thereby giving you and your wife access via cloud sharing.
- No Signup, No Account, No Ads
I've been using it for a few months to track all my transactions and account balances.
It's still a WIP right now. Planning to add a few features more before making it available on Apple App Store.
I used it for a while and I found that it is not worth my time. It's a good piece of software but it's too much for my needs.
A well done spreadsheet is way easier to handle in the long run. For a company or someone with complex finances it may be the right tool but it's not for most people who just want to track their income and expenses..
There are also many services that connect directly to your banks accounts, retrieve the data, categorize everything and shows you fancy charts with everything you need.
Some people are talking about OFX, and yes, there are tools for a lot of banks (for example) that convert their various export formats to OFX. However, I prefer it a different way: CSV.
When loading a CSV, GnuCash lets you map each column to the GnuCash-equivalent field. Column mapping configurations can be saved for later reuse.
One nice addition is that you can select columns that contain the _accounts_ related to a transaction. It's pretty easy to have ChatGPT write a script that takes a CSV and categorizes transactions into accounts using some matchint logic.
Splits are a bit trickier as you have to use multiple rows, but doable if you enter a sample transaction first and export it to GnuCash CSV format to see how it should look.
I've been using GnuCash for over a year now and I still don't know the answer to the following: is it possible to transactions tag transactions with custom tags, and then breakdown reports on those? I mean actual tags, not accounts.
Someone on the Beancount thread explained his workflow using tags link transactions to IRS form entries. I would like to try the same on GnuCash, but haven't yet figured out whether tags even exist (haven't had the time to check since)
I have the same need, and now I'm trying out a system where I put a "label" or "tag" in the Memo or Notes field (e.g. #SummerHoliday2023) that I then can create a filter for and generate a report for.
> Someone on the Beancount thread explained his workflow using tags link transactions to IRS form entries. I would like to try the same on GnuCash, but haven't yet figured out whether tags even exist (haven't had the time to check since)
I don't use tags, but GnuCash does have some built-in reporting features for tax forms.
1. You have to have assigned an account to a tax field (Edit -> Tax Report Options). It's what controls the "tax-related" checkbox when you edit an account.
2. Then you can go to Reports -> Tax Schedule Report & TXF Export to generate a report for the last tax year.
Ok thanks for that, but that has two problems. First, it's still "account based". I can't label a single transaction. Second, it's not versatile enough, it's US specific.
I quickly researched this a couple of months ago and came to the conclusion that using separate accounts was the only easy-to-understand way to do it. So now I have accounts like:
Hosting Expenses
[SomeTag] Hosting Expenses
It's nice because its compatible with all the built-in reports, including graphs, though it takes a little while to configure presets for them all filtered by the right accounts.
Also curious to hear if anyone knows a better way.
> using separate accounts was the only easy-to-understand way to do it
This can't possibly be right... If I'm going on holidays, I don't want to have to open a new "holidays" account; holiday expenses are still expenses. If I accepted this, and I wanted to separate holidays in 2021 from holidays in 2022 by using different accounts, you can imagine how many one-off accounts id have laying around. No, this is confusing the concepts of an account as an accounting concept, with the concept of a generic aggregation segment.
For personal finances, I use Tiller HQ. It's a wrapper around plaid or yodlee and automatically feeds transactions into Google Sheets or Excel. I like it because I own my data and can easily manipulate it enmasse in familiar ways.
I wonder how full it'll be. The python bindings aren't complete. For instance it's impossible to add scheduled transactions. Which I'd investigating doing for tax depreciation on assets. I did eventually find the scheme functions and looked at adding the necessary functions. But not gonna lie Lisp is rough when you've never worked with it before.
You could and should discuss on the mailing lists. Agree scheduled transactions are not visible from bindings, and it could be a feature request. If you wanted to so depreciation of assets you could easily do your own calculations via scheme or python.
The inability to conveniently version control/differentiate/combine its database caused me to drop it after a data loss (not caused by GnuCash, but HW problems), when I had only a few month old backup and a corrupted current GnuCash savefile.
I have tried beancount (like ledger but in python) since, and I'm all into plain text accounting since. Also the UI of GnuCash always felt clunky and a bit incomprehensible at places.
I store the .gnucash file in git, and after editing things in Gnucash I run a script that exports[0] it to a hledger file in the same directory and commits both. So `git show` gives me a readable view of what changed, but the accounts are still usable by non-nerds.
FWIW, I started playing with something that felt like more of an 'app' experience with Beancount with 'Beancolage' so you could have plaintext accounting integrated alongside a reporting UI: https://github.com/seltzered/beancolage
It's still an early concept though, but at the end of the day it's a vscode-like experience so aspects like git are just an extension away.
It's for the UI, yes, since they're not my accounts, I'm just tech support for them ;-) I've seen there is an hledger-web, but there's a bunch of reports and workflows already set up in Gnucash and switching would involve learning new things and I'd rather spend as little time as I can on accounting and taxes. (OTOH adding a script to enable "git log -p" took like ten minutes.)
Also note that your GnuCash file is just a single gzip'd XML file, and not too big. You could store it as-is in Git, or you could have a script/filter to gzcat it first, so you could store deltas/diffs and maybe use less space.
While it is true (i didn't have that kind of backups for some reason back 10+ years ago), getting the intact bits of that xml from a corrupted zip file is not trivial. Also diffing/manually editing xml is not great fun in my experience.
I agree version control would be nice. I guess you could use the XML storage format and then use git? Personally I use the sqlite format and just back it up every time I make changes.
The plaintext alternatives like ledger and beancount seem like they lend themselves more naturally to version control.
MoneyStats is an excellent alternative and well-maintaine analogue to this app although I applaud all devs working in this very unreasonably niche area (balance/cashflow forecasting) when it should be the standard philosophy and UI and overall workflow in terms of personal finance/tools
I love Gnucash, have been using it for my personal accounting for 20 years, but the stock and funds part is horribly complicated. Yet I have not found anything better.
I used gnucash for a while, but it didn’t quite scratch the itches I needed scratched. Because of that I switched to Lunch Money and have never looked back.
Lunch Money is a beautifully designed finance tracker / planner. And it’s also run by a lovely solopreneur who truly cares about the product!
You're criticizing its UI based only on its name (and where the name doesn't really mean what you think it does)?
I've used it, so I can tell you that there are definitely some very powerful features hidden away in menu items you didn't know were even there.
But the ledger UI, which you use all the time, probably blows away most software you've used.
(On the occasions I've thought "I should write my own", one of the first objections I think of is that it would take me a lot of work to make a UI that works as well.)
Agreed, data entry in GnuCash (back when I used it, about 10 years ago probably) was a pleasure. Very streamlined experience. Nowadays I use ledger with Emacs, so it's hard to beat that, of course.
GNUCash is great, it definitely had a learning period for me.
My biggest gripe is not with GNUCash but with the damn banks. The fact there isn't any API to download.u transactions is infuriating. My bank makes me go through so many clicks to download one file and I have many accounts to pull.
It's so frustrating to just simply get my data.
Also, the ofx format doesn't support splits. So there's simply no way to import transactions that are already auto-split (think interest charges).
For one example, imagine an Amazon order. You order 3 things, partly paid for by CC card rewards, maybe a gift card, and a CC charge for the balance. With transaction splits, it's easy to put each thing you bought into the appropriate expense account with the correct cost, reconcile the CC charge correctly when your statement comes and you import the OFX/QFX data, and track your gift card balance. In GnuCash, that's all one transaction, with many splits. For expensive durable purchases, I'll sometimes also go and add the serial number to the text of the transaction split from when I purchased it, for lightweight home inventory without a separate program or redundant data entry about what/date/cost.
Compare to a simpler personal finance program that just imports the CC charge and lets you tag it as a single expense category (or takes whatever the CC company says the category is), and if you ever need any more information, you're stuck with keeping a separate program or spreadsheet up-to-date.
(You could use GnuCash the same way as the simpler personal finance program, but GnuCash has more powerful features that are there when you want them.)