Hacker News new | past | comments | ask | show | jobs | submit login

I'm a big fan of CLI accounting software (Ledger, Beancount and hledger) for my personal finances. Allows you to use a plain text file for recording your financial data. If you live a large percentage of your life in a command line environment, and you like your life scriptable, check it out. I personally use hledger, but would recommend that folks check out http://plaintextaccounting.org/ for a great overview of all cli accounting packages.



I love the command line, and really wanted to love Ledger, but found that manual transaction entry for it (even using Emacs) was far inferior to Gnucash, which does far more powerful autocompletion on previous entries. This makes Ledger impractical for manually entering thousands of transactions, which I had to do.

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


https://github.com/egh/ledger-autosync has been real handy for me with transactions.

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

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


I agree that entering large numbers of manual transaction can be clunky, but for the occasional single transaction it can be pretty quick. For larger numbers of transactions, I've created a rules file that hledger uses to parse the downloaded CSV file from my bank to create a fairly detailed journal entry. (https://github.com/simonmichael/hledger/wiki/Convert%20CSV%2...). The real added benefit for me is using git not only for my journal file, but also for the CSV files. It gives me an immutable record of transactions from my bank. I had a revelatory experience reading adept's methods for tracking his financials. Version control for everything. https://github.com/adept/full-fledged-hledger


Ledger can import GnuCash databases, so in theory you could do the the insertion in GC and processing in Ledger :)


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

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

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


I believe I remember seeing some CSV to Ledger-cli tools if you can get the data into that format.


Shameless plug: I've compiled hledger to JavaScript and you can run it in your browser on https://hledger.alhur.es/


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

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

Other notes:

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

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

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

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

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


derp, meant to say "Plus, recategorizing/restructuring things..." is usually a quick matter of just search-and-replace. And syntax highlighting (e.g. https://packagecontrol.io/packages/Beancount) also enables autocomplete.


Seems like alot of work to replace a spreadsheet!


These ledger programs don't really do the same job as a spreadsheet. You could do it in a spreadsheet, but it would be very difficult and error prone.

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

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

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

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


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

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

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


Thanks for the perspective!


I really want to use it for my business. I couldn't get it working on Windows or Raspberry PI.


The hledger implementation [0] has Windows binaries available, and it's mostly compatible with the original.

[0]: http://hledger.org/download.html




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: