More importantly, the importers (for all my banks and financial services) let me import and reconcile all transactions, but also archive all documents (including PDF, text files, etc) in one, well organized directory: each file is saved into a folder that corresponds to my account structure such as Asset:Current:Cash, Liability:Mortgage, Income:Salary, Expenses:Health:Dentist. It's great to rely on fava (example: https://fava.pythonanywhere.com/example-beancount-file/incom...) to check your accounting (with all files listed in the journal by date, with tags and links and other neat features) and still be able to browse documents in your file browser.
As a longtime beancount user- it should be easy to install- there are packages for most OSes, they mostly work, the maintainer, Martin Blais is amazing and indefatigable, and the community is active and friendly and technical.
But the "how to get going" part is where I find the real difficulty lies.
There is a conceptual friction in double-entry accounting, which beancount enforces. If you do not have prior exposure to it, even if you are financially and mathematically inclined- grokking double entry can be a life-changing practice. It is the Iyengar Yoga to the 7 minute workout that is just tracking transactions as per GnuCash or Quicken or whatever.
One has to have the appetite to consume a worldview. As someone living in that world, FWIW, I highly recommend it. I would not undersell the conceptual work required. It is not for everyone.
But if the approach speaks to you, reach out on the mailing list and people will help with the mechanics.
A thousand times yes! the abstraction of double-entry accounting is absolutely central to understanding the modern economy and why (large) economic agents behave the way they do. It’s also essential for understanding fiat money, which is more or less just numbers in a double-entry ledger.
The documentation says to type "pip install beancount". That doesn't seem hard, so I'm guessing you're having some other problem? If you post on the mailing list, people will help you.
Wow, your setup sounds very similar to what I've converged on. Except I wrote a fairly substantial pipeline that preprocesses the data before giving it to beancount and Fava.
Maybe I missed something, but it seemed like beancount wants everything to live in One Giant Journal file. I really wanted a pipeline where each bank statement PDF would output one file with a corresponding list of transactions (this stage can run completely in parallel and I use "ninja" to make it very fast).
Then another process can run over these files looking for matches (+$X, -$X), and spit out "transaction groups", where each transaction group is a set of transaction ids that sum to zero. And then a different interactive tool lets you categorize transactions and spits out transaction groups with embedded "expense" transactions. It's all non-destructive; each tool only adds data, and nothing ever modifies existing files. Then a final step can combine all these files and spit out a beancount file for Fava.
How does this compare with the way beancount's importer does it? How does its importer handle transfers and categorization? Is it destructive or non-destructive?
To each their own, csv for me has been the easiest thing moving forward every month or three.
I did do a historical net worth calculation and the only data I had going back far enough was PDFs, so through a mix of bash scripts and pdftotext, I was able to get a number for each month back about 10 years. But I ended up just putting that monthly balance for each account in a google sheet so I could sum and plot it there. Now I just stick the month-end balance for each account in a sheet to keep this updated.
Yes, in my experience CSV/XML/etc export is spotty. Some institutions don't have it at all, and even when they do the time range can be limited or hard to time-window reliably.
For example, I can't get CSV about my pay stub and all the places money flows (taxes, insurance, etc). So I use PDF as the best way to get all the data.
Parsing PDF is a huge PITA, since PDF is really designed only for layout and not to encode semantic document structure. But if you want the greatest amount of visibility, nothing is as authoritative as the actual statements.
Yeah, I guess I don't really look at paystubs often and my banks support good csv export for like 2+ years, so I'll always have it when I need when I refresh those sheets. I do year-to-date in those sheets to make them not huge.
Regarding taxes, I do a tax year calculation using my W2's and returns to compute an effective tax rate and figure out ways I can improve my situation re taxes -- but my budgeting basically only starts once the net money hits a bank account which has worked pretty well.
Thanks for the reference. But a single transaction can span multiple financial institutions. Say you pay off a credit card. One half of the transaction comes from the credit card statement, the other half comes from your bank. The two halves sum to zero.
My understanding is that the whole transaction has to live in one file with Beancount. This doesn't seem amenable to having each bank statement generate a single Beancount output file.
But I could be wrong. I don't know how Beancount's importer works.
Conceptually this is one transaction; from a book keeping (and beancount) perspective it is, or can be, two.
Often (in the US) the dates are different- debit from the bank on day X, post to credit card on day X + 1 or X + 2. For my stuff I want the dates in beancount to reflect the dates on the respective statements, so that the balances, which are date-specific, match.
So I capture these as two transactions. I do it as- debit the bank, credit the "ether", then debit the "ether" credit the credit card.
Beancount just wants the postings within a literal transaction to sum to zero. If this conceptual transaction is split into two literal transactions, with some fictional bridge account in between, they can live in different beancount files.
I use beancount, and a somewhat custom importer and categorizer. (happy to expand on those but this comment is about the multi-transaction).
I have the categorizer send such transactions to a temporary "limbo account". So I have two transactions:
# This TX is imported from checking acct statement:
2020-05-15 * "ACH Payment BankA credit card"
Assets:BankA:Checking -500
Equity:Limbo:CreditCardPayments
# This TX is imported from credit card statement:
2020-05-16 * "Payment applied THANK YOU"
Liabilities:BankB:CreditCard 500
Equity:Limbo:CreditCardPayments
In both cases the second posting is added by the automatic categorizer based on the description.
After doing a bout of imports, I look at the Limbo account, which should always sum to zero. Sometimes the two TXs don't appear on the same day, so occasionally there's a temporary balance there but that's fine.
I use the same to match up my direct deposits (one end from paystubs import, other from checking account), wire transfers between banks/brokerage, etc. I tend to put them in different subaccounts of "Equity:Limbo" so that I can more easily spot any discrepancies.
Edit: Should've first read the previous reply that says the same thing!
Can I ask how you parse PDFs? I'm curious both in terms of reading the PDF data (Python library?) and parsing it (regex?)... and do you have to deal with OCR as well?
"each file is saved into a folder that corresponds to my account structure such as Asset:Current:Cash, Liability:Mortgage, Income:Salary, Expenses:Health:Dentist"
- People are starting to make Fava extensions for things like envelope budgeting, portfolio tracking, etc. Usually these are announced on the mailing list: https://groups.google.com/forum/#!forum/beancount
> People are starting to make Fava extensions for things like envelope budgeting
I've been hearing about making extensions for envelope budgeting for years, with little progress. I haven't checked in the last 2 years though - any progress on this?
To be frank, it was fairly annoying that the author kept declaring it as "not too hard" and yet no one came up with one.
Hold up. Did Gnucash get better reporting or did he make his own? Last time I used Gnucash, which admittedly was 10 years ago, but for a business, I found reporting and the lack of budgeting lacking. The latter could be solved by envelopes (but I find hacky), but the former only by learning Guile, something I was and am not up to. Alternatives like Money dance have a more complete solution, certainly for personal use, in my view.
I guess I'm asking what happened in the past decade to Gnucash ;) 2014 is the last time I really used it, and reporting had then not really changed.
I'm not sure how much it's changed since 2014. I think the "budgeting" system is still probably as bad as it was back then, though (and by bad I mean not really applicable for personal use, probably good for businesses). That's why I wrote this budget plotting script.
It supports imports from QIF and OFX/QFX files, CSV files, MT940 and MT942 files and DTAUS files. It also has an "online banking" integration thing, but I have no idea what kind of bank has username/password logins that would work with this.
Personally, I don't mind manually entering the stuff, because you'll need to classify everything into the correct accounts anyway.
> We don’t care about how much money we’ve spent at Amazon
That's like, your opinion man. While I'm sure that's one perfectly valid approach, I find a lot of value in knowing where my money has gone beyond categories.
To make it more concrete, how much I spend at Amazon my Rewards Visa determines whether the 2% bump in rewards is worth the cost of Prime. (I know - most people find enough value in the videos or not thinking about shipping. But I find that I simply spend more at Amazon when I have Prime, so I avoid having it!)
To counter myself, my own software is probably too granular and I waste time on those little details of where I've spent money. I could stand to simplify a bit.
na, the problem is the data doesn't commonly exist in the model. If I buy a book from a local independent bookstore, that's a debit on checking and a credit in the 'Books' account. If--perhaps due to coronavirus--I buy the sequel on Amazon, that again results in a transaction from checking to books. The payee data isn't there.
I think you can do it via vendors but the small business feature set is somewhat cumbersome.
And that's definitely an important shortcoming in GnuCash. I don't know of a great way to deal with transactions that go beyond "categories". You could use the description field + custom reporting, but that seems a bit error-prone. Luckily, I haven't run into many cases where I felt like I needed something like this.
You can track these kinds of things in GNU Ledger (cousin of GNUCash)
The expense category is still something like `Expenses:Books:SciFi`, or whatever. The payee for the transaction is then `Amazon`. If you prefer to make the payee the specific retailer that's selling to you, using Amazon as a platform, you can do that, and instead "tag" the transaction with `:Amazon:`.
You can also track points as a byproduct of the transaction, but that's another rabbit hole.
"Simple" is not an adjective I'd associate with GnuCash. Maybe it is if you're coming from a background in accounting or have a penchant for numbers. It's pretty complicated, and I wouldn't recommend it to someone who just wanted to keep an eye on their budget. A simple spreadsheet will suffice. Or any number of more user friendly tools.
That being said, GnuCash is a powerful double entry book keeping system which can almost certainly handle all your bookkeeping needs. But simple, it is not.
This is commonly stated, but I found it relatively straightforward once I saw the extended accounting equation (https://en.wikipedia.org/wiki/Accounting_equation) and knew every entry needed a corresponding entry to make the equation balance.
For some reason the (Income - Expenses) part gets left off in many introductory explanations of the accounting equation. I think that leads to a lot of confusion about how to treat Income and Expense accounts in programs like GnuCash for newcomers to double entry accounting.
I agree this is important to understanding double-entry accounting. Keep in mind that the Income - Expenses gets elided because the Retained Earnings go towards Equity
I wish somebody did an explainer of all this, not just for dummies, but for us European dummies. I've approached this topic multiple times, and I always get confused by all these Liquidities, Equities, Accounts Payables, Accounts Receivables, Commodities, and how come any article trying to explain any of that starts talking about stock trading.
It is not that hard, I followed a Youtube tutorial and about a week later things clicked in place for me. I am glad I put the effort because I feel that I've gained a skill that will change my approach to money for the rest of my life.
Given the typical audience of HN.. if you already know how to program you already know how to use something that's way more complicated than GnuCash.
GnuCash is very simple if you already know double-entry accounting... and learning double-entry accounting would probably be the work of a weekend or less for anyone who knows how to program. Not hard.
I also wasn't super sure about sticking "simple" in the title, but while writing this article and going through the GnuCash setup steps, I actually started to feel like it was appropriate.
As another commenter mentioned, I think that the "complicated" part of using GnuCash is understanding double-entry bookkeeping, which is why I devoted so much time in the article trying to explain it in concrete terms. My intention here isn't necessarily to steer people to GnuCash itself (I'm learning about a lot of alternatives from these comments), but to simplify the core underlying concepts. Not sure if I achieved that, but I tried!
I've been a longtime GnuCash user, and really it's as simple as you want it to be. You can, for example simulate the Spreadsheet approach with 3 accounts: Checking, and two hidden accounts: Income and Expenses. Make Checking the default tab, hide a few columns you're basically done. And if you decide you need a more complicated model, all those extra features are there and available on your schedule.
Probably the biggest hurdle IMO is the single user nature. Even the SQL backend requires a global lock.
The first time I tried to use GnuCash was many years ago. I began by opening up the documentation and reading the overview, which, it turned out, began with a fairly lengthy history of the practice of double-book accounting. I later found that this choice, which isn't necessarily a negative, did a fair job of representing GnuCash as a whole.
I agree with it being simple. I used it when I needed to learn about accounting for my day job. I used it for 2 or 3 months for my personal expenses. I could not continue because I got lazy. But I learned a lot about accounting from using it - certainly helped me with my day job.
+1 for keypass. The apps aren't quite as polished, but they do what I need, and I can store my encrypted password file in my Dropbox folder so that I've still got it if any single company in this small chain folds.
It works really well across all of my devices and operating systems (and will continue to do so as those systems change).
I’m glad keepass exists, but I’m happy to support polished software in this domain. I like paying for software I think is really good and focuses on a narrow problem.
I've looked at YNAB before, I keep wanting to try a finance tracking tool - but I can't ever decide which one is worth my time. What's so good about YNAB? It seems to be marketed at a certain segment that I'm not in. At least, based on their homepage line:
> Stop living paycheck-to-paycheck,
get out of debt, and save more money.
As for 1Password, given your username I'm assuming you've tried Bitwarden? What is better about 1Password?
I actually hadn't heard about bitwarden (thanks) - I'll check that out.
I'm not in YNAB's target market either, but the value they provide is useful even if you're not struggling month to month with finances. You get really good control over your money and a much better understanding of how you're spending it and where.
Being really aware of that makes it easier to actually leverage it more because you know exactly what you can put where so you can be closer to zero in your checking account (push more towards investments, etc.).
It also makes it easier to change behavior and know exactly what knobs you can turn with your finances.
Only downside with it is that the auto-import sucks (I suspect because the bank APIs suck). I move all transactions through one credit card and I manually create transactions in YNAB when the card is charged. I use the Apple Card which has really good software so it's easy to notice transactions and make sure things line up.
My username is also from when I was 13 and really excited about linux :-), now mostly on macOS - I haven't really lived up to it.
I don’t export - when a transaction is made I open the YNAB app and quickly add it.
I resisted doing this for a long time because I thought it would be awful, but it’s actually easier than dealing with import issues and reconciling later.
I'll give the opposing opinion that YNAB's auto-import works well for me (I use it with a local credit union, 2 credit cards, and an online savings account). In fact, I used my own homebrew budgeting software for over a year before I found that YNAB exists and does everything I needed from my own software plus imports from banks automatically which was my biggest pain point with my own solution (it involved painful csv exports every month). I have been happy with YNAB for a year and a half at this point. Your luck may depend on which bank(s) you want it to work with. I believe their bank import api provider was recently acquired by Plaid so they are now using Plaid (as I understand it).
They are using Plaid, and yeah, it varies wildly by bank.
FWIW, I don't know that having a bank that doesn't play nice with Plaid is a deal-killer. There is a school of thought among many YNAB users that you should not use the auto-import, or even csv/ofx/whatever import, because manually entering transactions takes only a few minutes a day, and gives you much better awareness of your outflows. I can see some merit to that, insofar as tightly controlling your spending is kind of YNAB's whole thing.
Even with auto-import, you still have to "approve" each individual transaction that is imported, at which time you can assign it to a category (or approve the auto-suggested category). So that works for me in terms of being aware of spending on a regular basis. And if you manually enter some transactions as you spend, it automatically matches them up with your bank's version of those transactions as you import so you don't end up with duplicates. So it's okay to use it in a hybrid mode where you sometimes enter transactions manually and sometimes wait for them to show up automatically.
I've been using YNAB for about 6 months now. I was not living paycheck to paycheck when I started - but I have made significant improvements to my financial well being since I started using it.
Previously I had been using Mint to keep track of my spending, but I never felt in control, it was only useful as a reporting tool of what had already happened.
YNAB is all about giving every dollar a job and setting priorities for your life. It's the envelope system in digital form if you are familiar with that. With Mint and similar systems, I'd just be looking at my pile of cash in my account and thinking "yeah I can easily afford a new gaming PC!".
But I wouldn't be taking into account my 6 month auto insurance bill coming up in 2 months that would require a bunch of cash. YNAB let's me see that easily - it was painful in the beginning as I was "catching up" in all these categories, but now I feel so much more comfortable with my money and how it can be put to good use.
I used to use GnuCash, and recently started using YNAB.
In a nutshell, I would describe the difference as, "GnuCash (and Mint, Quicken, Moneydance, etc) are for monitoring your finances. YNAB is for controlling your spending."
The more mainstream personal finance apps have all sorts of tools for tracking investments and assets and all that good stuff, and a lot of rich reporting functionality. They also generally have some version of budgeting, typically with a fairly straightforward, traditional approach.
YNAB, by contrast, is really just about budgeting. I'd argue that it's not just an application, it's a whole budgeting method that happens to come bundled with an application to help you in implementing it. When you sign up to YNAB, what you're really doing is subscribing to (founder) Jesse Meacham's personal spin on Dave Ramsey's philosophy of money management. You might as well subscribe to his podcast while you're at it. In fact, I'd suggest listening to a few episodes of his podcast before even signing up for the free trial. If you don't like his way of thinking about money, you probably won't get a whole lot out of YNAB, either.
And YNAB really doesn't even try to be anything else. You can stick your 401(k) balance in there, but YNAB's own documentation encourages you not to bother. All you'll get out of it is that it will show up in one of the reports. It only has three reports, by the way, and they're all spartan and minimally customizable.
I've tried a ton of online apps before eventually writing my own. YNAB can be used to help track spending very well. The budgeting aspect is more to help with self control. For example.. Say you want to tighten down on things a bit, and you notice you spend $230/mo on going out to eat. You can set the budget to $200/mo which basically makes the number red instead of green if you go over.
I would place Lunch Money above YNAB right now. It tracks money in a bit intuitive way, and is easier to use in my opinion.
> I'd be curious if anyone has used this and also used YNAB (and can compare them).
I'm a long-time user of both. YNAB wins hands-down in budgeting and basic usability.
When I got married, we integrated finances. I had been using GnuCash for years by then. Its interface was an immediate non-starter, even though as an application it's more powerful than YNAB (e.g., stocks and retirement planning, mortgage amortization, business expenses, easier splits--at least in my opinion). If it had a better budget and reporting system, I might have been able to swing it--but it didn't and doesn't, and that was that. The other killer feature YNAB offered was a mobile application.
Financial apps have to reduce friction. Interpersonal first (although that's a tall order for software), but also in delivering fast entry and a big-picture view of what you're doing with your money. GnuCash really isn't designed for any of that. And that's honestly fine for what it is, although I wish the database were easier to wrap your head around—it should be possible to build a cleaner and/or web UI around it than it seems to be.
As it is, I'm not really content with YNAB either, but if that's what it takes to get our internal financial reporting in order, it's a lot better than nothing.
I tracked my finances for a while with GnuCash and found myself in the category he describes here:
> If you’re happy with just knowing that your credit card balance is less than a certain amount each month, that’s great! You don’t need GnuCash.
I'm curious what fraction of people track personal finances versus those who don't. I don't know if I'm in a big majority, small majority, big minority, small minority, or what.
Do you track your personal finances? If so, in how much detail? Maybe it would make an interesting Ask HN.
I'll bite here... I used to track my finances and balance my checkbook. But, it took hours of my time. The best thing I ever did was create a separate account for my disposable income. My bills account gets the exact amount it needs and everything is payed automatically. The rest of my income goes into my fun account and I rest easy knowing I can spend until it's gone and my bills still get payed.
After that worked well for me, I now put small amounts into various savings accounts, like "tires", "vacation", or "emergency". I use an Ally account with "buckets".
I don't balance anymore, and haven't for 20 years. Just a quick glance at recent transactions to make sure I recognize everything.
It's also amazing how quickly some of those savings accounts add up when I'm not thinking about them much.
We have our "Expenses" account that salaries go into. We have our "Offset" account that has our emergency fund in it and offsets the interest for our mortgage. And finally we have a "Goals" account that we use to save up for big ticket items like a new car, holiday, or something.
We take 10% of our respective incomes each into a personal, "off the books" account and we do whatever we like with that.
I do, each bill or bank transaction being its own entry. I'm sure I belong in minority of people who do this. It's all manual labour too without any imports from banks etc. (never tried).
I do it for two reasons. Occasionally I found a problem with double-billing that I would otherwise miss, but mostly it is to be able to check where my money went and plan realistically.
Before I started using GnuCash I had no clue how much I spent monthly. I was fine with the fact that the my savings account seemed to grow over time.
Then one day I got mad at a random fee from my bank after realizing how much they charged me over the years. I closed my account at this bank, decided that I will be more careful with my spendings and started tracking everything with GnuCash.
I tracked every single expenditure in GnuCash for a year, mostly out of curiosity. But in general I don't worry too much about budgeting because I'm naturally a bit frugal. However, I do a yearly summary of assets in order to track long-term/retirement trajectory. I can also use that to get a single number showing me how much I spend each year.
I use ledger to document my personal finances, and I've been using it for about a year.
I do it less for budgeting, and more for a method of centralizing information. I have 4 credit cards that I use regularly, from 3 banks, I'm a w-2 employee with a 401k and benefits, and I file my own taxes. It's hard to keep track of everything, when the relevant data is behind login walls, in occasionally proprietary formats.
I wrote a bunch of scrapers and parsers for obtaining this data, and translating it into a ledger transaction format. Once it's there, I can do all the reporting and whatnot to my heart's content. Writing all of the infrastructure has been a labor of love, with a non-trivial emphasis on labor. I balance out about once a month, but since automating the various transformers, I pretty much never have to debug balances any more, which is a godsend.
It tracks down to a pretty excruciating level of detail, enough that I compute (for example) how much it costs my employer to employ me, my average monthly spread in my checking accounts (between when cc bills, rent are due and when income comes in), average costs of travel-vacation-days, and how that's changed over seasons.
At this point, it mostly "just works", and it's easy to append to my records. The next fun part will be getting useful and actionable insights out of it, and applying them to my life and decisions.
It's very nice to feel "in control" about these things; I don't really worry about money any more.
I did for a couple of years - actually wrote my own small CLI app to take care of my very basic student needs :D
At some point I dropped the habit, more out of laziness than anything else. I still have a budget spreadsheet with a rough plan for my monthly finances, I just don‘t track the actual expenses anymore. Reading this makes me think I ought to start again...
I've sporadically tracked my finances for the past 14 years (started using commercial software on OS X before getting fed up of some of the software and writing my own open source finance app to learn Objective C / Cocoa back in 2009 to do it which I still use), and over the past 6 years have been tracking it rather meticulously, which I find helpful for two reasons:
1. I'm a contractor now, so need to do tax filings, and having detailed finances helps with that.
2. I find it quite interesting (but not always that useful!, although it sometimes is) what my expenditures are each month, i.e. how much I spend on electronics/gear vs holiday vs other, compared to potential savings.
I do. I started because I would find myself surprised by the occasional credit card bill that was larger than I expected. It made life easier later when I started seriously putting money in investments, and then much easier when my mother died---she had put my name on all of my parents' accounts so I inherited two more, different bank accounts, two retirement accounts and some honest-to-gosh stock certificates. By the time I got everything cleaned up, I had a love affair with GnuCash and a checking account number that starts with seven zeros.
I track transactions in and out of accounts that I get statements for, with a "cash" expense for withdrawals (I know someone who would track his pocket change in spreadsheets.), and broadish categories for income and expenses (my Books expense account is ... large).
I wish I had created some kind of asset account when we bought a house; instead I just treat the mortgage like rent and have this great big windfall followed by an equal expense when we moved. :-)
I've tracked my finances for as long as I can remember. It's become even more important since getting married.
We track every penny. About once a month we sit down and categorize every purchase we made the last month. We only keep receipts if the purchase was for a non-obvious category (e.g. buying both diapers and groceries at Target) so that we can split each transaction between categories.
For some banks, we manually download transaction data in whatever nice format they provide. For others, we use a syncing service that works with the app.
It's been so great throughout our marriage to know that we're both in charge of the money and make decisions together.
That said, I've talked with many people who don't like that level of detail. At first, it was baffling to me that people didn't know the details of their finances, but as I've grown, I've realized that there's plenty more than one good way to manage your money.
Full disclosure: I actively work on and sell budgeting software.
I was a ledger user for years, then some things happened, it got out of date, and I haven't gone back. But I tracked it in great detail. Every transaction, updated prices on stocks every month. It was really nice, and I had a tmux configuration that automatically loaded an emacs buffer with an org file holding all my ledger entries, and other panes containing various reports (uncleared balance, balance in cash/credit card accounts, total balance, monthly reports, etc.).
I will do it again, but haven't. I'm presently using YNAB because it's easier for my wife and I to share. I use it to a similar level of detail, but don't track my stocks and retirement accounts with it. IT's been very helpful for us to know how much money we have and where it's all going. Last year was very expensive and we ended up in some debt, so this is also helping us get things back on track. It's hard to get out of debt (especially if it's become a habit to rely on credit) without knowing this kind of information.
I’ve been tracking my finances on and off for a few years, but finally made the habit stick around Christmas last year. I do it not so much to know what I’ve spent already, more to know how much I can spend in any given category.
I’m using YNAB, which has honestly changed the way I think about money. Historically I’ve always taken the approach that there’s no point having money and not spending it, impulse buying things, and then being screwed when an unexpected bill comes in. Or the need to eat just before payday.
YNAB pushes you into allocating money at the point it comes in, anything from rent and groceries to a pot for renewing my Amazon Prime subscription when it comes up. Somehow the act of allocating the money seems to trigger the same mental reaction as actually spending it used to, and I’ll now often find myself with more money left over to go into savings at the end of the month because I actually didn’t need to spend most of what was allocated to my generic “fun money” bucket.
I track All non-cash transactions and any large cash transactions.
I did it from when I first started working full-time so I could get some idea of savings/spending &c.
It was "meh" usefulness, but pretty easy since I could auto-import the transactions and it takes me maybe 1hr per month to categorize everything.
Now that I'm married its incredibly useful. "Can we afford X?" "How much are we spending on Y?" "I feel like I've been overspending on Z, how bad is it?" are the sorts of questions that can be answered very quickly.
Neither my wife nor I are in "charge" of spending, but I keep the books (because I had been before getting married). These money discussions could very easily become divisive if we didn't have easy-to-access data.
I've been tracking my finances, with varying levels of details, since 1997.
I started with Microsoft Money, and tracked everything including cash and credit cards charges, for 10 years. It took a while to enter the info and I wasn't really using the info at that detail, so I changed up and also migrated to Moneydance, since Microsoft Money sunset in 2009.
I started over with Moneydance, and instead of recording cash to such detail, I just recorded it as a transfer from checking to "Wallet - Cash" and then balanced that every month by assuming all my cash went to restaurants. Not 100% accurate but mostly correct and way faster.
After a 2-3 years of Moneydance I decided to migrate again to GnuCash, for the various benefits of open source software. This time I also lightened up my recording to condense credit cards purchases down to one monthly entry. Which again saves a lot of time. I glance over my monthly bill to make sure the charges are correct but don't split out by category anymore.
So that's where I am now. Been using GnuCash for the last ~10 years, only record large categories of expenses and basically check credit cards bills for accuracy and keep my checking/savings accounts up to date. I only update retirement/investment accounts once a year, at the end of the year.
I am fortunate to be able to live below my means so I don't have to stress over balancing various accounts to the dollar. I just need a general idea of my position.
The only level of detail you need to track your finances to is subtracting your expenses from your income each month. As long as you spend less than you earn, you don't need to worry more than that.
If you'd like be saving more money than you currently are, then you can drill down into each side to look for things to improve.
The UI is still excellent. It is the only reason I have Windows installed on a spare computer. Despite never being updated, the principals of personal finance haven't changed that much.
I'm in the same boat! One Windows laptop in the house dedicated to MS Money. With 27 years of financial history, and counting, it still does everything I need it to. Once a year I export it into Excel to do some forecasting and analysis. I'd really love if there were a reliable and future-proof way to get at the data. Sunriise[0] is the only way I know to export raw data but it has a few issues and the source code isn't public.
Quicken died for me ten ir so years ago, as did many other personal finance software applications. It is the syncing between devices that’s imperative these days, and this is where Quicken is failing, especially when your database gets larger: it syncs, but as your database grows its latency becomes ever more apparent.
Quickbooks Online, which I have been using for a little over a year, does syncing exceptionally well; but at the cost of a polished UI.
Ideally I would love to be able to access my Quickbooks desktop database using iOS or web, alas that’s not doable.
I've been playing around with ledger[1] recently. On one level, it is the simplest of tools requiring only a command line and a text editor. But once you wade into the documentation[2] you will begin to see it quite differently. Its capabilities are staggering...
I looked in to switching from GnuCash to Ledger about 5 years ago, and found that it would have been too painful to use for manually inputting the thousands of transactions I had because it just didn't have the nice auto-complete and GUI nicities that GnuCash had.
I'm a hardcore command-line and keyboard-only power user, so I would have absolutely loved to have made Ledger work for me rather than use the mouse-heavy GnuCash interface, but couldn't, and went back to GnuCash with my tail between my legs.
I'd still rather use it, so maybe I'll give it another try some day.
Assuming GnuCash can do some sort of plain text record dump, I would probably try to cobble something together to convert that to an acceptable ledger format. Maybe with AWK or something similar...
This is exactly what made me switch away from ledger. I thought that a command-line/plaintext only workflow would be great, because that's what I usually prefer. However, a GUI + autocomplete just ended up being way more useable for me in this case.
As you imagine, the fact that it's text-only has been both a burden and a blessing.
Burdens:
- inserting transactions takes a long time, when you're starting out. will always take a long time if you never "automate"
- it's easy to make little mistakes and not catch it until the next time you compile or make a report.
blessings:
- git, sed, grep, awk all "work as advertised"
- you can automate the boring things, as they get more boring, and you can learn a lot along the way
at this stage, I have a combination of awk and python scripts (maybe 500 lines total, but a lot of it is regex) that convert my financial institutions' transaction export csvs into ledger transactions. I pretty much copy paste that into specific ledger files. The next step that I'm currently automating takes a concatenated `git diff` and interactively categorizes expenses/splits/assigns to the correct ledger file.
I also blew a ton of time (maybe 40 hours) on scraping those csvs from bank websites, workday, and fidelity (basically, a puppeteer script for logging in, downloading all the files available). Getting past google auth for workday was hard. But learning these things has been fun.
With all this automation, I spend maybe 20 minutes every weekend importing things over from the banks. I'd do it every month, but I'm still a control freak with it.
Doing this has been super fun! And it also has yielded a lot of insight into my finances. Above all, it gives me a feeling of "control" over my finances like no other. Itemizing deductions takes an hour, just as a throwaway example.
I switched from GnuCash to ledger about 8 years ago and never looked back.
I have a script that pulls my bank account using aqbanking [1] and icsv2ledger.py [2]. The latter can match transactions to templates and set transaction accounts and payees automatically. It also supports autocompletion of account names when a transaction is not matched by a template.
For cash entries, I use ledger-mode in Emacs. (I also use Org mode, so I spent a lot of time in Emacs anyway.) ledger-mode also supports autocompletion.
I only use the command line for reporting and have aliases for the most common reports. These mostly revolve about showing my current budget.
> I looked in to switching from GnuCash to Ledger about 5 years ago, and found that it would have been too painful to use for manually inputting the thousands of transactions I had because it just didn't have the nice auto-complete and GUI nicities that GnuCash had.
Similar problem, except I use KMyMoney. I wrote a program to convert my KMY file to Ledger format. So I still enter transactions in KMyMoney but have the power of Ledger as well.
I strongly recommend people give ledger a try, especially if you're a UNIX-nerd who gets a lot of use out of sed/grep/awk.
It's totally changed the way I think about finance, for my person and for businesses. It also means I can have very informed conversations with accountants! :)
Double-entry accounting as a domain is super interesting, and Ledger's intersection of that domain with UNIX hackery is a joy to experience.
The plaintext accounting ecosystem as a whole is pretty great. Only thing however is that literally none of them comply with the XDG Base Directory Spec. So to have hledger with a web-ui and auto-importing for example means like 3-4 dotfiles littering the home directory.
I never understood the point of these personal finance apps. When I run out of money I just withdraw a some more out of our familys multimillion trust fund.
I was an avid GnuCash user for a year or two in grad school, keeping track of my finances using GnuCash Mobile on my android phone. Then I bought a new phone and exported my finances database. When I loaded it into my new phone, I found the xml had been corrupted.
That was a sad day because I'd like to use an offline finance tracker on my phone.
BTW GnuCashMobile is not GnuCash, it's some third party android app.
My partner and I have been tracking all our spending for the last five years with hledger (ledger reimplemented in haskell) and some custom import and management scripts inspired by "Full-fledged hledger" [1]. More recently we added Plaid [2] for auto-importing from financial accounts. I love having a plain-text history and being able to ask complex queries.
One unexpectedly-sweet benefit is that your spending is a high-granularity record of where you have been and what you have been doing, encoding some signals you might not have thought to write in a diary. Things like "that was when we were saving for our down payment" or "I was going to coffee shops every day trying to finish my dissertation" or "that was when we had a pandemic." I enjoy looking back through our ledger the same way I enjoy going way back in my gmail history.
+1 for full-fledged hledger! I just got it set up last week, and putting together the small scripts for parsing all of the CSVs was (to me) a fun programming exercise that reaped huge visibility into how I spend my money :)
It's hugely valuable to have all of your financial data in one, human-readable place. Not only to you, but to whomever might be executing your will ;)
This all seems too complex for most people. I use Google Sheets, I import a year-to-date csv from my bank and credit card every month, categorize each transaction, then use QUERY to aggregate expenses by category. This data I feed into a rough budgeting sheet which I use for expense trimming. This monthly maintenance takes maybe 30 minutes.
And I have another sheet to compute net worth - retirement and brokerage accounts hold funds for which I can get a price using the GOOGLEFINANCE function, so the numbers change over time and I know pretty much down to the penny what my net worth is after I sorta manually enter in a couple bank balances.
I'd definitely agree that this is overkill for most people. In your case, though, I think that you could put the same amount of work into GnuCash and get the same results without writing any code. Plus you'd have a GUI with built in reports and whatnot. Not sure if that matters to you.
In the article, I briefly touch on skipping manual transaction logging and just importing statements from your bank / credit card. And I gloss over this, but it looks like GnuCash offers similar functionality for automatically updating stock prices https://wiki.gnucash.org/wiki/Online_Quotes - not sure if it's a pain to set up or not, but it's probably not as easy as just calling a google sheets function.
Seems like you wouldn't have any reasons to switch over given that you've already got a nice system going, but just wanted to point out that you can use GnuCash in a way that's not quite as... rigid as the way I use it :)
I don't really want a GUI - or the GUI I want is a spreadsheet.
I have some charts and graphs embedded with the data - like net worth over time, brokerage over time, etc. My worry with a baked system is it doesn't have the data in a way I want in a chart, whereas with this system, I can pretty much create whatever I want from the raw data in the sheet...
I haven't used, because I use personal capital and they both used Yodlee, and my biggest gripe about personal capital is yodlee isn't keeping up with 2fa style logins from banks
Online quotes is fairly easy to set up. First you set up the ticker symbol in the prices menu, then you set an account for the stock, make the type "Stock" and set the currency to the symbol in question. From then on, you can just 'get new data' and stuff mostly updates automatically.
However, stock symbol APIs break on the regular, so there can be times when this process is broken until a fix is published and you upgrade.
When I was using Google sheets I was really looking at this company Tiller to auto-fetch my transactions. I never actually tried them out, but the service looks pretty compelling: https://www.tillerhq.com/
I've been using Tiller for a few months and really enjoy the flexibility of using spreadsheets to manage my finances. Some of the sheets aren't incredibly flexible because there are a lot of macros updating them behind the scenes, but Tiller is constantly developing new analyses, and it's very easy to extract data for your own custom sheets. Also, data entry (mostly for transaction categorization) is a breeze, which is a huge plus for me, and the ability to easily add custom categories is huge.
As far as I can tell, everything there was made simply because somebody out there thought it's important for a Free version of said software to exist. That's pretty cool. There's gnucash of course, but also a gnutrition calorie/macro/micro tracker, a flight simulator, some sort of comic saving software... the list goes on. Fun!
Most banking services - at least mine already provides reports and graphs along with simple budgeting features for free with online banking. I prefer to use that, as that is where most of the data lives anyways.
I tried GnuCash and generally liked it. However, it was a little more complicated than I wanted. In addition, I wanted to be able to access via the web, when I was away from my computer. (cause at the time, I thought it was only available locally)
I also wanted my life partner (my lovely wife) to participate. This was going to be the hard part. Behavior modification. So I built a very simple "tracker".(php/codeigniter/mysql) Date, description, category, spender, cost, that could be accessed anywhere.
I asked my wife to start tracking spending. As we had just bought a new house and 1 1/2 year old. She was extremely resistant to the idea. Six months after using the "tracker" she told me that she didn't plan on doing it more than 2 days before she gave up. However since starting it 3 years ago she and I have increased our "frugalness" and really looked where we should spend money (vacations, artisan food and not items to impress other people… such as fancy cars.)
I think part of the trick is not necessarily import or export or "api"ing data. The trick is doing a manual entry for each transaction. Kind of like a spending journal, food journal or just a journal. There still seems to be power in manually entering a transaction, although it might not be by pen and paper.
> The trick is doing a manual entry for each transaction. Kind of like a spending journal, food journal or just a journal. There still seems to be power in manually entering a transaction, although it might not be by pen and paper.
This was a big realization for me. I tend to prefer getting the "robots" to do things for us (in other words, automate things). Developing an intuition of what's happening with your money is hard when you use an automated tool though.
The process of managing the ledger bi-weekly really adds something more for me. Working on each entry to determine a category, writing down amounts, noticing how many entries I've entered into a category each session, and looking at it in aggregate afterward gives me some greater sense of how my financial life works. I can almost picture writing the transactions in GnuCash before I even do it.
I get what you mean about it being complicated though. I learned the bits I needed to get by and mostly stick to that. So that works for me. In the long run, the double-ledger manual style is what I think is most important.
>The trick is doing a manual entry for each transaction.
I would second this for anyone whose goal is to spend less money. I think some people keep track of purchases just to see all spending and may not care about reducing spending. In that case, importing data can save time.
I built my own budgeting app and I strongly modeled it after Google Inbox. After importing transactions, you then need to get to “uncategorized zero”, which is identical to inbox zero. I like that it’s much less tedious than manual entry but you still see and work with each transaction. After a transaction has been fully reconciled, it disappears. It’s very analogous to managing email.
It’s running on a raspberry pi in our house and my wife and I both use it. One feature I am adding is a “hey what’s this?” flag that tells the other person to reconcile/categorize the transaction that the other person has more context on.
I’ve been using Gnucash for my personal finances for a several years now, and really love it - it’s not dead simple, and requires an understanding of double entry bookkeeping, but where it really shines is flexibility. A couple of examples are as follows:
1. Expenses in the future - If I book a bunch of plane tickets for later in the year today, I can book those expenses in those months in which I’m traveling (pre-paid asset until then) there-by seeing when I’m incurring those expenses vs. the cash flow of those expenses.
2. Corporate expenses - I can book expenses that I will be re-imbursed for as receivables and not have them run through my “income statement” (nothing like putting some business class plane tickets on your personal card to make things look weird)
3. Loans - whether it’s an auto loan on your car or simply a loan to a friend it’s great to be able to see your entire balance sheet (and remember that some items are outstanding!)
4.variable granularity - decide how detailed you want to get for some accounts you may decide you don’t need that much detail (because you track it some other way - like your 401k) and you can just track your total balance at month end (+/- deposits)
5. Track illiquid investments in your net worth (not saying the marks are right, but at least you have a placeholder value for them on your balance sheet (your home - private company stock etc.)
6. Privacy - it’s your data - no sharing it with anyone else
These are great examples, thank you for putting this list together. I use mint to track transactions + a running spreadsheet of account balances. These are exactly all of my gripes with my current system.
Credit card payments end up with two records of the payment, one from the credit card and another from your bank.
There's no way to merge records in GnuCash, ideally you would be able to mark them as the same record, but keep them both to keep the import logic happy.
How are you doing this? The OFX import tool has a bayesian matcher that will update and reconcile existing records, and classify them based on past behavior.
The big challenge IMO is that each transaction has a date, but sometimes the ends disagree on when it happened. E.g. you transfer money from checking to a brokerage, it takes multiple days but you have to choose one date for that transaction.
Still not sure I follow. If I make a payment on a credit card, it shows up as a transaction from asset checking account to the liability credit card. It shows up on both accounts already. When I later import OFX transaction files, it sees the payment in the OFX and matches it up to the existing transaction: https://lists.gnucash.org/docs/C/gnucash-guide/importing-fro...
Apparently not all import assistants do this for some reason.
I manually input my checking account since it is almost entirely payments towards other GnuCash accounts. When I import the credit card payment from my CC company, GnuCash matches the OFX payment record with the existing entry and automatically reconciles it. So I don't get double payments.
"For my stocks and non-money assets, I opt not to track them super closely in order to avoid having to update the values of each stock every time."
GnuCash's Price Editor can fetch values automatically. It used to be able to use Yahoo finance, but they cut that off a while back. There is a replacement, but I cannot remember what it is at the moment (and am on the work laptop).
GnuCash is actually pretty easy to use, once you get used to the double-entry system and how it handles some things. I have a moderately complex situation (and it's been stupid complex in the past), and I don't spend more than a few minutes a month on it (unless I'm trading stocks; it can take more time to set up each stock's account for proper tracking).
You need to setup an AlphaVantage API key. See here: https://wiki.gnucash.org/wiki/FAQ#Q:_Why_doesn.27t_online_qu.... I set it up a few years ago and it seems to keep work. If I break my setup messing around, I'll just copy the values directly from my investment site into GnuCash.
This is definitely one of the clumsier parts of GnuCash. Still works though.
> GnuCash's Price Editor can fetch values automatically. It used to be able to use Yahoo finance, but they cut that off a while back. There is a replacement, but I cannot remember what it is at the moment (and am on the work laptop).
It's possible to get Yahoo! data through web scraping, but it's certainly less convenient than it used to be.
IEX also has an open API for querying historical data.[1] I don't think it has as much historical data as Yahoo! has, and it's changed a bit since the last time I thought about putting together a backtester.
Shameless plug, our product, Domestica, is better for personal finance tracking as it uses the envelope model of categorization. It also includes to do lists, meal planning and more--in the cloud or self hosted.
In the first pie chart [0], am I the only one having a hard time with colours in the legend? For example, the second colour in the legend is #ff851b [1], but that doesn't appear in the pie chart. Going by the amount (33.69%), it must be the segment with colour #ffa85f [2].
Like many people here, I tried GnuCash. I enjoyed it, but when I would import data from my bank, it would crash. That, and not having any real way of categorizing my expenditures was annoying. The other thing that annoyed me was not being able to select multiple items
I recently moved to KMyMoney and everything just clicked. I found the interface to be nicer, especially combining the filter functionality with the ability to select multiple things and tag them appropriately.
I appreciate the article trying to explain Double-Entry bookkeeping, and I would suggest people look into KMM as an alternative to GnuCash.
I think I may have misspoken. What I meant to say was that, at least for me, KMM is a little easier to view both accounts and categories, and search within them.
A more accurate phrasing would have been "Filter all the payers that contain this string, and allow me to select them and see how much money was transferred to/from them."
I've been using YNAB. I want to switch out because YNAB is too expensive. What I miss with open source alternatives is the mobile app. I don't like to link my bank accounts, so I enter expenses manually whenever I buy anything. The mobile app is critical for that to work.
YNAB (web version) has a pretty excellent web-first experience. And I'm not sure that I want a total web experience if half of my battle is recording transactions at the time they occur, right in the store. This is super convenient, no reason to keep receipts and enter them when I get home.
For the same reasons I am still using the classic version of YNAB (paid once). But unfortunately the Mac version is not compatible with Catalina so I am also forced to search for a new app.
I have recently been experimenting with the mac app "Buckets," which seems conceptually similar to YNAB. It costs $50, but offers a full free trial with no feature or time limits.
Downsides are the data import process, which can be complicated, and the lack of a mobile app.
YNAB can sometimes feel expensive. And while I could use an OSS solution like Gnucash or ledger, I don't have the time to deal with the tech support needed to be able to share my setup with my spouse. Likewise, we extremely value the mobile experience. To me, YNAB is cheap and well worth the money.
You might want to try "Every Dollar" which is free and has a mobile experience. It's not open source, of course, but it might fit what you're looking for.
This is exactly why I pay for YNAB. As I'm going through all of these free options I'm wondering what support there is for sharing the information with my spouse and how much manual wrenching I'll have to do to make that work and what my less-technical spouse will have to put up with to work with it.
YNAB is drop-dead simple and available on all of our different platforms. Money well spent.
Thing is, I have very limited usage. I don't really use or want the budgeting facilities. I just want a simple app to keep track of expenses. I even considered building my own little apk (I use android) which will just sync from mobile via dropbox (just like YNAB classic used to do).
322 comments
[ 2.5 ms ] story [ 362 ms ] threadMore importantly, the importers (for all my banks and financial services) let me import and reconcile all transactions, but also archive all documents (including PDF, text files, etc) in one, well organized directory: each file is saved into a folder that corresponds to my account structure such as Asset:Current:Cash, Liability:Mortgage, Income:Salary, Expenses:Health:Dentist. It's great to rely on fava (example: https://fava.pythonanywhere.com/example-beancount-file/incom...) to check your accounting (with all files listed in the journal by date, with tags and links and other neat features) and still be able to browse documents in your file browser.
But the "how to get going" part is where I find the real difficulty lies.
There is a conceptual friction in double-entry accounting, which beancount enforces. If you do not have prior exposure to it, even if you are financially and mathematically inclined- grokking double entry can be a life-changing practice. It is the Iyengar Yoga to the 7 minute workout that is just tracking transactions as per GnuCash or Quicken or whatever.
One has to have the appetite to consume a worldview. As someone living in that world, FWIW, I highly recommend it. I would not undersell the conceptual work required. It is not for everyone.
But if the approach speaks to you, reach out on the mailing list and people will help with the mechanics.
Cheers.
I was able to write a plugin to get data from the Milan stock exchange in a few hours, which was very nice. The vim plugin is also pretty ok.
I've never used the import features, the manual inputting of transactions into a text file doesn't take too long.
Maybe I missed something, but it seemed like beancount wants everything to live in One Giant Journal file. I really wanted a pipeline where each bank statement PDF would output one file with a corresponding list of transactions (this stage can run completely in parallel and I use "ninja" to make it very fast).
Then another process can run over these files looking for matches (+$X, -$X), and spit out "transaction groups", where each transaction group is a set of transaction ids that sum to zero. And then a different interactive tool lets you categorize transactions and spits out transaction groups with embedded "expense" transactions. It's all non-destructive; each tool only adds data, and nothing ever modifies existing files. Then a final step can combine all these files and spit out a beancount file for Fava.
How does this compare with the way beancount's importer does it? How does its importer handle transfers and categorization? Is it destructive or non-destructive?
- It's an additional step and unnecessary when you're already downloading PDF statements, which you probably should be doing regardless
- Data is often unavailable for export after a few months or a year or two (depending on the bank), far earlier than PDFs
- If you have PDF scans (especially from earlier days) then you need to parse the OCR anyway
- If you're using official APIs (instead of writing a scraper or or downloading by hand) then you may need to pay extra
I did do a historical net worth calculation and the only data I had going back far enough was PDFs, so through a mix of bash scripts and pdftotext, I was able to get a number for each month back about 10 years. But I ended up just putting that monthly balance for each account in a google sheet so I could sum and plot it there. Now I just stick the month-end balance for each account in a sheet to keep this updated.
For example, I can't get CSV about my pay stub and all the places money flows (taxes, insurance, etc). So I use PDF as the best way to get all the data.
Parsing PDF is a huge PITA, since PDF is really designed only for layout and not to encode semantic document structure. But if you want the greatest amount of visibility, nothing is as authoritative as the actual statements.
Regarding taxes, I do a tax year calculation using my W2's and returns to compute an effective tax rate and figure out ways I can improve my situation re taxes -- but my budgeting basically only starts once the net money hits a bank account which has worked pretty well.
Actually, beancount supports include directive. See includes section [1] of the language syntax document
[1]: https://docs.google.com/document/d/1wAMVrKIA2qtRGmoVDSUBJGmY...
My understanding is that the whole transaction has to live in one file with Beancount. This doesn't seem amenable to having each bank statement generate a single Beancount output file.
But I could be wrong. I don't know how Beancount's importer works.
https://github.com/redstreet/beancount_reds_plugins/tree/mas...
Often (in the US) the dates are different- debit from the bank on day X, post to credit card on day X + 1 or X + 2. For my stuff I want the dates in beancount to reflect the dates on the respective statements, so that the balances, which are date-specific, match.
So I capture these as two transactions. I do it as- debit the bank, credit the "ether", then debit the "ether" credit the credit card.
Beancount just wants the postings within a literal transaction to sum to zero. If this conceptual transaction is split into two literal transactions, with some fictional bridge account in between, they can live in different beancount files.
I have the categorizer send such transactions to a temporary "limbo account". So I have two transactions:
In both cases the second posting is added by the automatic categorizer based on the description.After doing a bout of imports, I look at the Limbo account, which should always sum to zero. Sometimes the two TXs don't appear on the same day, so occasionally there's a temporary balance there but that's fine.
I use the same to match up my direct deposits (one end from paystubs import, other from checking account), wire transfers between banks/brokerage, etc. I tend to put them in different subaccounts of "Equity:Limbo" so that I can more easily spot any discrepancies.
Edit: Should've first read the previous reply that says the same thing!
https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
Beancount user here, even if you don't bother with any finance tracking, organizing financial documents following the folder structure is useful - see "Filing Dcouments" in https://docs.google.com/document/d/1e4Vz3wZB_8-ZcAwIFde8X5Cj...
Shameless promos:
- People are starting to make Fava extensions for things like envelope budgeting, portfolio tracking, etc. Usually these are announced on the mailing list: https://groups.google.com/forum/#!forum/beancount
- The sublime plugin is great but I have a really useful improvement to search by org-mode headlines that never seemed to get merged - see https://github.com/norseghost/sublime-beancount/pull/14
I've been hearing about making extensions for envelope budgeting for years, with little progress. I haven't checked in the last 2 years though - any progress on this?
To be frank, it was fairly annoying that the author kept declaring it as "not too hard" and yet no one came up with one.
discussion: https://groups.google.com/forum/#!topic/beancount/RXvOvHHdse...
I guess I'm asking what happened in the past decade to Gnucash ;) 2014 is the last time I really used it, and reporting had then not really changed.
I'm not sure how much it's changed since 2014. I think the "budgeting" system is still probably as bad as it was back then, though (and by bad I mean not really applicable for personal use, probably good for businesses). That's why I wrote this budget plotting script.
Personally, I don't mind manually entering the stuff, because you'll need to classify everything into the correct accounts anyway.
That stuff is the OFX/QFX setup. Basically it logs in and fetches those files for you. Banks are notoriously bad at this however.
That's like, your opinion man. While I'm sure that's one perfectly valid approach, I find a lot of value in knowing where my money has gone beyond categories.
To make it more concrete, how much I spend at Amazon my Rewards Visa determines whether the 2% bump in rewards is worth the cost of Prime. (I know - most people find enough value in the videos or not thinking about shipping. But I find that I simply spend more at Amazon when I have Prime, so I avoid having it!)
To counter myself, my own software is probably too granular and I waste time on those little details of where I've spent money. I could stand to simplify a bit.
I think you can do it via vendors but the small business feature set is somewhat cumbersome.
The expense category is still something like `Expenses:Books:SciFi`, or whatever. The payee for the transaction is then `Amazon`. If you prefer to make the payee the specific retailer that's selling to you, using Amazon as a platform, you can do that, and instead "tag" the transaction with `:Amazon:`.
You can also track points as a byproduct of the transaction, but that's another rabbit hole.
That being said, GnuCash is a powerful double entry book keeping system which can almost certainly handle all your bookkeeping needs. But simple, it is not.
Assets = Liabilities + Equity + (Income - Expenses)
For some reason the (Income - Expenses) part gets left off in many introductory explanations of the accounting equation. I think that leads to a lot of confusion about how to treat Income and Expense accounts in programs like GnuCash for newcomers to double entry accounting.
GnuCash is very simple if you already know double-entry accounting... and learning double-entry accounting would probably be the work of a weekend or less for anyone who knows how to program. Not hard.
As another commenter mentioned, I think that the "complicated" part of using GnuCash is understanding double-entry bookkeeping, which is why I devoted so much time in the article trying to explain it in concrete terms. My intention here isn't necessarily to steer people to GnuCash itself (I'm learning about a lot of alternatives from these comments), but to simplify the core underlying concepts. Not sure if I achieved that, but I tried!
Probably the biggest hurdle IMO is the single user nature. Even the SQL backend requires a global lock.
I'd put YNAB along with 1Password (and probably Fastmail) in the class of best single purpose pieces of software that I pay for.
I’m glad keepass exists, but I’m happy to support polished software in this domain. I like paying for software I think is really good and focuses on a narrow problem.
> Stop living paycheck-to-paycheck, get out of debt, and save more money.
As for 1Password, given your username I'm assuming you've tried Bitwarden? What is better about 1Password?
I'm not in YNAB's target market either, but the value they provide is useful even if you're not struggling month to month with finances. You get really good control over your money and a much better understanding of how you're spending it and where.
Being really aware of that makes it easier to actually leverage it more because you know exactly what you can put where so you can be closer to zero in your checking account (push more towards investments, etc.).
It also makes it easier to change behavior and know exactly what knobs you can turn with your finances.
Only downside with it is that the auto-import sucks (I suspect because the bank APIs suck). I move all transactions through one credit card and I manually create transactions in YNAB when the card is charged. I use the Apple Card which has really good software so it's easy to notice transactions and make sure things line up.
My username is also from when I was 13 and really excited about linux :-), now mostly on macOS - I haven't really lived up to it.
I resisted doing this for a long time because I thought it would be awful, but it’s actually easier than dealing with import issues and reconciling later.
FWIW, I don't know that having a bank that doesn't play nice with Plaid is a deal-killer. There is a school of thought among many YNAB users that you should not use the auto-import, or even csv/ofx/whatever import, because manually entering transactions takes only a few minutes a day, and gives you much better awareness of your outflows. I can see some merit to that, insofar as tightly controlling your spending is kind of YNAB's whole thing.
Previously I had been using Mint to keep track of my spending, but I never felt in control, it was only useful as a reporting tool of what had already happened.
YNAB is all about giving every dollar a job and setting priorities for your life. It's the envelope system in digital form if you are familiar with that. With Mint and similar systems, I'd just be looking at my pile of cash in my account and thinking "yeah I can easily afford a new gaming PC!".
But I wouldn't be taking into account my 6 month auto insurance bill coming up in 2 months that would require a bunch of cash. YNAB let's me see that easily - it was painful in the beginning as I was "catching up" in all these categories, but now I feel so much more comfortable with my money and how it can be put to good use.
I used it first too and I think it may actually be worse than nothing.
It's both infested with a ton of ads and makes you think you understand where your money is going without really understanding it.
In a nutshell, I would describe the difference as, "GnuCash (and Mint, Quicken, Moneydance, etc) are for monitoring your finances. YNAB is for controlling your spending."
The more mainstream personal finance apps have all sorts of tools for tracking investments and assets and all that good stuff, and a lot of rich reporting functionality. They also generally have some version of budgeting, typically with a fairly straightforward, traditional approach.
YNAB, by contrast, is really just about budgeting. I'd argue that it's not just an application, it's a whole budgeting method that happens to come bundled with an application to help you in implementing it. When you sign up to YNAB, what you're really doing is subscribing to (founder) Jesse Meacham's personal spin on Dave Ramsey's philosophy of money management. You might as well subscribe to his podcast while you're at it. In fact, I'd suggest listening to a few episodes of his podcast before even signing up for the free trial. If you don't like his way of thinking about money, you probably won't get a whole lot out of YNAB, either.
And YNAB really doesn't even try to be anything else. You can stick your 401(k) balance in there, but YNAB's own documentation encourages you not to bother. All you'll get out of it is that it will show up in one of the reports. It only has three reports, by the way, and they're all spartan and minimally customizable.
I would place Lunch Money above YNAB right now. It tracks money in a bit intuitive way, and is easier to use in my opinion.
I'm a long-time user of both. YNAB wins hands-down in budgeting and basic usability.
When I got married, we integrated finances. I had been using GnuCash for years by then. Its interface was an immediate non-starter, even though as an application it's more powerful than YNAB (e.g., stocks and retirement planning, mortgage amortization, business expenses, easier splits--at least in my opinion). If it had a better budget and reporting system, I might have been able to swing it--but it didn't and doesn't, and that was that. The other killer feature YNAB offered was a mobile application.
Financial apps have to reduce friction. Interpersonal first (although that's a tall order for software), but also in delivering fast entry and a big-picture view of what you're doing with your money. GnuCash really isn't designed for any of that. And that's honestly fine for what it is, although I wish the database were easier to wrap your head around—it should be possible to build a cleaner and/or web UI around it than it seems to be.
As it is, I'm not really content with YNAB either, but if that's what it takes to get our internal financial reporting in order, it's a lot better than nothing.
> If you’re happy with just knowing that your credit card balance is less than a certain amount each month, that’s great! You don’t need GnuCash.
I'm curious what fraction of people track personal finances versus those who don't. I don't know if I'm in a big majority, small majority, big minority, small minority, or what.
Do you track your personal finances? If so, in how much detail? Maybe it would make an interesting Ask HN.
After that worked well for me, I now put small amounts into various savings accounts, like "tires", "vacation", or "emergency". I use an Ally account with "buckets".
I don't balance anymore, and haven't for 20 years. Just a quick glance at recent transactions to make sure I recognize everything.
It's also amazing how quickly some of those savings accounts add up when I'm not thinking about them much.
We have our "Expenses" account that salaries go into. We have our "Offset" account that has our emergency fund in it and offsets the interest for our mortgage. And finally we have a "Goals" account that we use to save up for big ticket items like a new car, holiday, or something.
We take 10% of our respective incomes each into a personal, "off the books" account and we do whatever we like with that.
Simple.
I do it for two reasons. Occasionally I found a problem with double-billing that I would otherwise miss, but mostly it is to be able to check where my money went and plan realistically.
Then one day I got mad at a random fee from my bank after realizing how much they charged me over the years. I closed my account at this bank, decided that I will be more careful with my spendings and started tracking everything with GnuCash.
I do it less for budgeting, and more for a method of centralizing information. I have 4 credit cards that I use regularly, from 3 banks, I'm a w-2 employee with a 401k and benefits, and I file my own taxes. It's hard to keep track of everything, when the relevant data is behind login walls, in occasionally proprietary formats.
I wrote a bunch of scrapers and parsers for obtaining this data, and translating it into a ledger transaction format. Once it's there, I can do all the reporting and whatnot to my heart's content. Writing all of the infrastructure has been a labor of love, with a non-trivial emphasis on labor. I balance out about once a month, but since automating the various transformers, I pretty much never have to debug balances any more, which is a godsend.
It tracks down to a pretty excruciating level of detail, enough that I compute (for example) how much it costs my employer to employ me, my average monthly spread in my checking accounts (between when cc bills, rent are due and when income comes in), average costs of travel-vacation-days, and how that's changed over seasons.
At this point, it mostly "just works", and it's easy to append to my records. The next fun part will be getting useful and actionable insights out of it, and applying them to my life and decisions.
It's very nice to feel "in control" about these things; I don't really worry about money any more.
At some point I dropped the habit, more out of laziness than anything else. I still have a budget spreadsheet with a rough plan for my monthly finances, I just don‘t track the actual expenses anymore. Reading this makes me think I ought to start again...
1. I'm a contractor now, so need to do tax filings, and having detailed finances helps with that.
2. I find it quite interesting (but not always that useful!, although it sometimes is) what my expenditures are each month, i.e. how much I spend on electronics/gear vs holiday vs other, compared to potential savings.
I track transactions in and out of accounts that I get statements for, with a "cash" expense for withdrawals (I know someone who would track his pocket change in spreadsheets.), and broadish categories for income and expenses (my Books expense account is ... large).
I wish I had created some kind of asset account when we bought a house; instead I just treat the mortgage like rent and have this great big windfall followed by an equal expense when we moved. :-)
We track every penny. About once a month we sit down and categorize every purchase we made the last month. We only keep receipts if the purchase was for a non-obvious category (e.g. buying both diapers and groceries at Target) so that we can split each transaction between categories.
For some banks, we manually download transaction data in whatever nice format they provide. For others, we use a syncing service that works with the app.
It's been so great throughout our marriage to know that we're both in charge of the money and make decisions together.
That said, I've talked with many people who don't like that level of detail. At first, it was baffling to me that people didn't know the details of their finances, but as I've grown, I've realized that there's plenty more than one good way to manage your money.
Full disclosure: I actively work on and sell budgeting software.
I will do it again, but haven't. I'm presently using YNAB because it's easier for my wife and I to share. I use it to a similar level of detail, but don't track my stocks and retirement accounts with it. IT's been very helpful for us to know how much money we have and where it's all going. Last year was very expensive and we ended up in some debt, so this is also helping us get things back on track. It's hard to get out of debt (especially if it's become a habit to rely on credit) without knowing this kind of information.
I’m using YNAB, which has honestly changed the way I think about money. Historically I’ve always taken the approach that there’s no point having money and not spending it, impulse buying things, and then being screwed when an unexpected bill comes in. Or the need to eat just before payday.
YNAB pushes you into allocating money at the point it comes in, anything from rent and groceries to a pot for renewing my Amazon Prime subscription when it comes up. Somehow the act of allocating the money seems to trigger the same mental reaction as actually spending it used to, and I’ll now often find myself with more money left over to go into savings at the end of the month because I actually didn’t need to spend most of what was allocated to my generic “fun money” bucket.
I did it from when I first started working full-time so I could get some idea of savings/spending &c.
It was "meh" usefulness, but pretty easy since I could auto-import the transactions and it takes me maybe 1hr per month to categorize everything.
Now that I'm married its incredibly useful. "Can we afford X?" "How much are we spending on Y?" "I feel like I've been overspending on Z, how bad is it?" are the sorts of questions that can be answered very quickly.
Neither my wife nor I are in "charge" of spending, but I keep the books (because I had been before getting married). These money discussions could very easily become divisive if we didn't have easy-to-access data.
I started with Microsoft Money, and tracked everything including cash and credit cards charges, for 10 years. It took a while to enter the info and I wasn't really using the info at that detail, so I changed up and also migrated to Moneydance, since Microsoft Money sunset in 2009.
I started over with Moneydance, and instead of recording cash to such detail, I just recorded it as a transfer from checking to "Wallet - Cash" and then balanced that every month by assuming all my cash went to restaurants. Not 100% accurate but mostly correct and way faster.
After a 2-3 years of Moneydance I decided to migrate again to GnuCash, for the various benefits of open source software. This time I also lightened up my recording to condense credit cards purchases down to one monthly entry. Which again saves a lot of time. I glance over my monthly bill to make sure the charges are correct but don't split out by category anymore.
So that's where I am now. Been using GnuCash for the last ~10 years, only record large categories of expenses and basically check credit cards bills for accuracy and keep my checking/savings accounts up to date. I only update retirement/investment accounts once a year, at the end of the year.
I am fortunate to be able to live below my means so I don't have to stress over balancing various accounts to the dollar. I just need a general idea of my position.
If you'd like be saving more money than you currently are, then you can drill down into each side to look for things to improve.
The UI is still excellent. It is the only reason I have Windows installed on a spare computer. Despite never being updated, the principals of personal finance haven't changed that much.
[0] https://bitbucket.org/hleofxquotesteam/dist-sunriise/wiki/Ho...
I've tried GnuCash and Skrooge, can't ever get the direct downloads to work for more than two months without breaking.
Quickbooks Online, which I have been using for a little over a year, does syncing exceptionally well; but at the cost of a polished UI.
Ideally I would love to be able to access my Quickbooks desktop database using iOS or web, alas that’s not doable.
[1] https://www.ledger-cli.org/index.html
[2] https://www.ledger-cli.org/3.0/doc/ledger3.html
http://furius.ca/beancount/
I'm a hardcore command-line and keyboard-only power user, so I would have absolutely loved to have made Ledger work for me rather than use the mouse-heavy GnuCash interface, but couldn't, and went back to GnuCash with my tail between my legs.
I'd still rather use it, so maybe I'll give it another try some day.
As you imagine, the fact that it's text-only has been both a burden and a blessing.
Burdens:
- inserting transactions takes a long time, when you're starting out. will always take a long time if you never "automate"
- it's easy to make little mistakes and not catch it until the next time you compile or make a report.
blessings:
- git, sed, grep, awk all "work as advertised"
- you can automate the boring things, as they get more boring, and you can learn a lot along the way
at this stage, I have a combination of awk and python scripts (maybe 500 lines total, but a lot of it is regex) that convert my financial institutions' transaction export csvs into ledger transactions. I pretty much copy paste that into specific ledger files. The next step that I'm currently automating takes a concatenated `git diff` and interactively categorizes expenses/splits/assigns to the correct ledger file.
I also blew a ton of time (maybe 40 hours) on scraping those csvs from bank websites, workday, and fidelity (basically, a puppeteer script for logging in, downloading all the files available). Getting past google auth for workday was hard. But learning these things has been fun.
With all this automation, I spend maybe 20 minutes every weekend importing things over from the banks. I'd do it every month, but I'm still a control freak with it.
Doing this has been super fun! And it also has yielded a lot of insight into my finances. Above all, it gives me a feeling of "control" over my finances like no other. Itemizing deductions takes an hour, just as a throwaway example.
I switched from GnuCash to ledger about 8 years ago and never looked back.
I have a script that pulls my bank account using aqbanking [1] and icsv2ledger.py [2]. The latter can match transactions to templates and set transaction accounts and payees automatically. It also supports autocompletion of account names when a transaction is not matched by a template.
For cash entries, I use ledger-mode in Emacs. (I also use Org mode, so I spent a lot of time in Emacs anyway.) ledger-mode also supports autocompletion.
I only use the command line for reporting and have aliases for the most common reports. These mostly revolve about showing my current budget.
[1] https://wiki.gnucash.org/wiki/AqBanking [2] https://github.com/quentinsf/icsv2ledger
Fun fact: The second program I wrote was a database in Turbo Pascal to keep track of my loose change.
Not so fun fact: I lost my GnuCash files after I made the switch. Ten years of accounting gone. :(
Similar problem, except I use KMyMoney. I wrote a program to convert my KMY file to Ledger format. So I still enter transactions in KMyMoney but have the power of Ledger as well.
It's totally changed the way I think about finance, for my person and for businesses. It also means I can have very informed conversations with accountants! :)
Double-entry accounting as a domain is super interesting, and Ledger's intersection of that domain with UNIX hackery is a joy to experience.
That was a sad day because I'd like to use an offline finance tracker on my phone.
BTW GnuCashMobile is not GnuCash, it's some third party android app.
One unexpectedly-sweet benefit is that your spending is a high-granularity record of where you have been and what you have been doing, encoding some signals you might not have thought to write in a diary. Things like "that was when we were saving for our down payment" or "I was going to coffee shops every day trying to finish my dissertation" or "that was when we had a pandemic." I enjoy looking back through our ledger the same way I enjoy going way back in my gmail history.
[1] https://github.com/adept/full-fledged-hledger [2] https://plaid.com/
It's hugely valuable to have all of your financial data in one, human-readable place. Not only to you, but to whomever might be executing your will ;)
And I have another sheet to compute net worth - retirement and brokerage accounts hold funds for which I can get a price using the GOOGLEFINANCE function, so the numbers change over time and I know pretty much down to the penny what my net worth is after I sorta manually enter in a couple bank balances.
In the article, I briefly touch on skipping manual transaction logging and just importing statements from your bank / credit card. And I gloss over this, but it looks like GnuCash offers similar functionality for automatically updating stock prices https://wiki.gnucash.org/wiki/Online_Quotes - not sure if it's a pain to set up or not, but it's probably not as easy as just calling a google sheets function.
Seems like you wouldn't have any reasons to switch over given that you've already got a nice system going, but just wanted to point out that you can use GnuCash in a way that's not quite as... rigid as the way I use it :)
I have some charts and graphs embedded with the data - like net worth over time, brokerage over time, etc. My worry with a baked system is it doesn't have the data in a way I want in a chart, whereas with this system, I can pretty much create whatever I want from the raw data in the sheet...
I haven't used, because I use personal capital and they both used Yodlee, and my biggest gripe about personal capital is yodlee isn't keeping up with 2fa style logins from banks
However, stock symbol APIs break on the regular, so there can be times when this process is broken until a fix is published and you upgrade.
https://directory.fsf.org/wiki/GNU
As far as I can tell, everything there was made simply because somebody out there thought it's important for a Free version of said software to exist. That's pretty cool. There's gnucash of course, but also a gnutrition calorie/macro/micro tracker, a flight simulator, some sort of comic saving software... the list goes on. Fun!
That list also mentions GNU Health and GNU Med for hospitals. I'm curious as to whether they're actually used, and if so, who uses them.
I also wanted my life partner (my lovely wife) to participate. This was going to be the hard part. Behavior modification. So I built a very simple "tracker".(php/codeigniter/mysql) Date, description, category, spender, cost, that could be accessed anywhere.
I asked my wife to start tracking spending. As we had just bought a new house and 1 1/2 year old. She was extremely resistant to the idea. Six months after using the "tracker" she told me that she didn't plan on doing it more than 2 days before she gave up. However since starting it 3 years ago she and I have increased our "frugalness" and really looked where we should spend money (vacations, artisan food and not items to impress other people… such as fancy cars.)
I think part of the trick is not necessarily import or export or "api"ing data. The trick is doing a manual entry for each transaction. Kind of like a spending journal, food journal or just a journal. There still seems to be power in manually entering a transaction, although it might not be by pen and paper.
This was a big realization for me. I tend to prefer getting the "robots" to do things for us (in other words, automate things). Developing an intuition of what's happening with your money is hard when you use an automated tool though.
The process of managing the ledger bi-weekly really adds something more for me. Working on each entry to determine a category, writing down amounts, noticing how many entries I've entered into a category each session, and looking at it in aggregate afterward gives me some greater sense of how my financial life works. I can almost picture writing the transactions in GnuCash before I even do it.
I get what you mean about it being complicated though. I learned the bits I needed to get by and mostly stick to that. So that works for me. In the long run, the double-ledger manual style is what I think is most important.
I would second this for anyone whose goal is to spend less money. I think some people keep track of purchases just to see all spending and may not care about reducing spending. In that case, importing data can save time.
This article also agrees with your suggestion. She suggests it's th that knowing you are going to have to write down your purchase helps you think before automatically spending: https://www.nytimes.com/2018/11/28/smarter-living/budget-mon...
It’s running on a raspberry pi in our house and my wife and I both use it. One feature I am adding is a “hey what’s this?” flag that tells the other person to reconcile/categorize the transaction that the other person has more context on.
1. Expenses in the future - If I book a bunch of plane tickets for later in the year today, I can book those expenses in those months in which I’m traveling (pre-paid asset until then) there-by seeing when I’m incurring those expenses vs. the cash flow of those expenses.
2. Corporate expenses - I can book expenses that I will be re-imbursed for as receivables and not have them run through my “income statement” (nothing like putting some business class plane tickets on your personal card to make things look weird)
3. Loans - whether it’s an auto loan on your car or simply a loan to a friend it’s great to be able to see your entire balance sheet (and remember that some items are outstanding!)
4.variable granularity - decide how detailed you want to get for some accounts you may decide you don’t need that much detail (because you track it some other way - like your 401k) and you can just track your total balance at month end (+/- deposits)
5. Track illiquid investments in your net worth (not saying the marks are right, but at least you have a placeholder value for them on your balance sheet (your home - private company stock etc.)
6. Privacy - it’s your data - no sharing it with anyone else
Credit card payments end up with two records of the payment, one from the credit card and another from your bank.
There's no way to merge records in GnuCash, ideally you would be able to mark them as the same record, but keep them both to keep the import logic happy.
The big challenge IMO is that each transaction has a date, but sometimes the ends disagree on when it happened. E.g. you transfer money from checking to a brokerage, it takes multiple days but you have to choose one date for that transaction.
They're separate records whichiwould like to keep... but as a single merged ledger entry.
Apparently not all import assistants do this for some reason.
GnuCash's Price Editor can fetch values automatically. It used to be able to use Yahoo finance, but they cut that off a while back. There is a replacement, but I cannot remember what it is at the moment (and am on the work laptop).
GnuCash is actually pretty easy to use, once you get used to the double-entry system and how it handles some things. I have a moderately complex situation (and it's been stupid complex in the past), and I don't spend more than a few minutes a month on it (unless I'm trading stocks; it can take more time to set up each stock's account for proper tracking).
This is definitely one of the clumsier parts of GnuCash. Still works though.
It's possible to get Yahoo! data through web scraping, but it's certainly less convenient than it used to be.
IEX also has an open API for querying historical data.[1] I don't think it has as much historical data as Yahoo! has, and it's changed a bit since the last time I thought about putting together a backtester.
[1] https://iexcloud.io/docs/api/
https://about.domestica.app
[0] https://www.csun.io/images/gnucash/expenses_piechart.png
[1] https://www.color-hex.com/color/ff851b
[2] https://www.color-hex.com/color/ffa85f
I recently moved to KMyMoney and everything just clicked. I found the interface to be nicer, especially combining the filter functionality with the ability to select multiple things and tag them appropriately.
I appreciate the article trying to explain Double-Entry bookkeeping, and I would suggest people look into KMM as an alternative to GnuCash.
A more accurate phrasing would have been "Filter all the payers that contain this string, and allow me to select them and see how much money was transferred to/from them."
Downsides are the data import process, which can be complicated, and the lack of a mobile app.
https://www.budgetwithbuckets.com
You might want to try "Every Dollar" which is free and has a mobile experience. It's not open source, of course, but it might fit what you're looking for.
YNAB is drop-dead simple and available on all of our different platforms. Money well spent.