18 ms·
Plain Text Accounting
- sundarurfriend 6y agoPrevious discussion (2016): https://news.ycombinator.com/item?id=11164330 https://news.ycombinator.com/item?id=11164330
- smichael 6y agoWelcome again, HN friends! More past discussion: https://hn.algolia.com/?query=plain%20text%20accounting&sort=byDate&prefix=false&page=0&dateRange=all&type=story https://hn.algolia.com/?query=plain%20text%20accounting&sort...
- bergie 6y agoIn a previous startup we used Ledger in git as our accounting system. Was pretty cool to submit expense reports as PRs. Also, we had some CI automations to report company runway to Slack etc
- mrkn1 6y agoThere seems to be a general return to plaintext tools like HN: danluu.com, plumebio.com and lite.cnn.com
- dewey 6y agoI think it has always been popular in the bubble that frequents HN, I wouldn't go that far to say there's a general return to plain text. The rest of the world would still think it looks like the website is broken if it looks like lite.cnn.com
- enriquto 6y ago> The rest of the world would still think it looks like the website is broken if it looks like lite.cnn.com For me it's the opposite. In "regular" cnn.com I obtain an empty page (probably due to my overzealous adblocker), yet in lite.cnn.com I can read the news.
- dewey 6y agoYes, but you are "in the bubble that frequents HN" ;)
- deleted 6y ago[deleted]
- 4TunateSon 6y agoI had no idea that CNN had a "lite" version. Do you know any other major sites that have lite versions?
- enriquto 6y agoPlain text is the universal computer interface. We will always be "returning" to it. We never should have left it, really.
- LargoLasskhyfv 6y agoOh really? In which encoding? ASCII? EBCDIC? UTF1/6/8/16/32, TRON, and gazillionz of other historical artifacts?
- kawsper 6y agoYes.
- EuAndreh 6y agoUTF-8
- zaltekk 6y agoBecause a proprietary or binary format would be easier to recover over time? It’s usually pretty easy to figure out the right encoding for text files, especially when you know their origin (which I expect you would for accounting documents). Additionally, UTF-8 is quite universally accepted these days.
- comeonseriously 6y agoWhy the aggression?
- LargoLasskhyfv 6y agoBecause dogmatic regression.
- qayxc 6y agoI strongly disagree. Plain text is great for data that is just that - plain text. As soon as data isn't text, the idea falls apart quickly. What would be the advantage of storing audio data as text? It would take up more space, be ambiguous, and would require more memory and compute time to load and save. Same applies to many other forms of data that aren't inherently text or supposed to be manipulated manually. Everything is not text and everything is not intended to be manipulated and interpreted by humans directly. This applies to audio and video data, but also to a lot of specialised data formats that are optimised for the algorithms that use them. So no, we won't always be returning to text and "leaving" text formats is a natural and important step for data that's not generated manually for and by humans (i.e. by means of manual data entry).
- mongol 6y agoAccounting rules in Sweden does not allow erasure of history. That is too easy to do with plain text. This can work for personal accounting but not for cases where it is legally required.
- azornathogron 6y agoI suspect most people who use this type of tool keep their accounts files in a version control system. (That's what I do)
- londons_explore 6y agoMaking it technically impossible to erase history isn't something any accounting software today does. You could get close to it by publishing data in a blockchain, but nobody does... So, given that, the requirement must simply be to make erasing history too hard to do accidentally. A simple git commit history would suffice for that. Or just a check when you save the file to see if any lines have been removed. It doesn't seem necessary anyway though - If everyone keeps a record of every incoming and outgoing transaction, then if I alter a transaction retrospectively, it will no longer match the counterparties records, and my modification will be detected.
- sithlord 6y agoA lot of software do make it very difficult, if not impossible for a regular accountant to erase history. To the point, when I was an accountant, if I made a simple error in keying in something, you would have to reverse it out, and then fix it, all of which would show up on the general ledger. For example, say we received cash 5,500 for our software services that we have yet to complete, we would need to debit cash and credit some Accounts Receivable. lets say I make a mistake: Cash.....5,050 Accounts Receivable..........5,050 I would either need to do another journal entry for 450 dollars to both accounts, or reverse out them and do it again, of which it would still be visible
- mongol 6y agoIt cannot be made technically impossible of course. But it can be made impossible using the regular user interface.
- sirodoht 6y agoI've been using ledger [0] in the past 2 years very successfully in keeping track of my personal finances. I've tried with many accounting apps, but the clarity of the plain text, editing it with my preferred editor, and the capabilities of ledger (reading only!) are what kept me (I think). I also wrote an intro for ledger here [1]. [0] https://www.ledger-cli.org/ https://www.ledger-cli.org/ [1] https://sirodoht.com/blog/introduction-to-plain-text-accounting/ https://sirodoht.com/blog/introduction-to-plain-text-account...
- gandalfgreybeer 6y agoThank you for the guide. Found it very helpful.
- sundarurfriend 6y agoThanks for sharing the article. It's nice to get an intro from someone else also new to Ledger, which guarantees it starts from the very basics and makes for a good first step. The other "getting started" guide I found [1], for a contrast, starts with a whole ecosystem of scripts and a system in place for effective ledger use - which will be useful later, when I do want to get a full system going, but I've learnt it's better to start simple and stumble around, until I can put together the pieces of the system myself later (with theirs as a very useful reference). [1] https://rolfschr.github.io/gswl-book/latest.html#the-setup https://rolfschr.github.io/gswl-book/latest.html#the-setup
- sundarurfriend 6y agoYour section on single vs double-entry accounting, specifically: > We can neither create money out of thin air, nor make it disappear. Money has to come from somewhere and go somewhere. reminded me of the excellent "Accounting for Computer Scientists" by Martin Kleppmann [1], with a very useful and easy to remember mental model of this process. [1] https://martin.kleppmann.com/2011/03/07/accounting-for-computer-scientists.html https://martin.kleppmann.com/2011/03/07/accounting-for-compu...
- OskarS 6y agoI can really recommend doing this for your personal finances! Tools like ledger are really powerful, and properly accounting is a great way to save on money. I can very easily go into my personal ledger and (say) get a report on "How much money did i spend daily on groceries last month" or "List all subscription services i pay for and how much they cost each month" or whatever. It gives you a great view into where your money is going and helps you plan for the future. It's very satisfying to run the command "ledger reg -Mn Assets Liabilities", which is "show me my net wealth (i.e. the sum of Assets and Liabilities) for every month in the ledger", and see your personal wealth grow over time. But almost more importantly: if you're a programmer, it's really very fun! Like, i have my own system where I download my bank statement as a CSV and process it in AWK together with an org-mode table of payees that map each line on the bank statement to an account, which then generates a ledger file. Since it's just you using it, you can make it so it works however you like, and it quite satisfying to see it all come together. It's also a great way to learn about accounting. Turns out, I really kinda like accounting! It has many of the same pleasures of programming or math, and seeing everything balance is very satisfying. In short: if you're a programmer who feels like they haven't quite got a handle on their finances, I can't recommend plain text accounting highly enough.
- gen220 6y agoI think myself and many others could have written the same comment. I’ll add that it’s also delightfully easy to get started. As an application, Accounting is kind of like Vim or Excel or other tools with steep learning curves and nirvana at the end of them. You can start by just tracking one bank account by hand which is easy enough and fun, because you’re still learning how this accounting thing works. Pretty soon you’ll be tracking your investments, ISOs, taxes, credit card points, and so on as absurdum. You’ll be the person who finds the bug in your employer’s W-2 generator... It’s a steep time investment, but once you’ve written the automations, it’ll take you maybe 30 minutes each month. And you’ll never experience the feeling of “not being in control” of your finances again.
- wasdfff 6y agoDo banks have anything you can use to automate getting data off their websites? My annoyances lie in generating the csv files. My checking account outputs an arbitrary range of dates, however many transactions fit on pg 1, while my credit card from the same bank outputs csvs by billing cycle. It makes it a little annoying going into the bank website and generating these files across relevant date ranges.
- quirkot 6y agoWant to throw out one of my favorite stats: while conceptually the same, European double entry accounting predates Newton's 3rd law of motion by over 200 years.
- MeinBlutIstBlau 6y agoI remember reading about the monk who invented it and it still blew my mind were using that system to this day.
- djhworld 6y agoI've been using beancount [1] and fava [2] to organise my personal finances for a while now, my beancount file has about 3 years of transactions/financial data in it. I've automated a few things but it's still largely a manual process to update the file, which I do maybe 2-3 times a month. Requires some patience but I think it's worth it. Also the emacs mode for beancount is superb. The main advantage is it's very flexible, you can track investments, bank accounts, credit cards, pensions and even abstract things like digital currency wallets (e.g. Playstation Network) or vacation time. I've even used it to track RSUs from employment etc. [1] https://beancount.github.io/ https://beancount.github.io/ [2] https://beancount.github.io/fava/ https://beancount.github.io/fava/
- philipswood 6y agoI love fava/beancount, but I wish the language had some method of abstraction. I keep repeating myself, but don't see easy facilities for DRY, etc. e.g. When I do a debit card purchase I move currency from Whatnot:Cheque:Pending to the expense account, then later from Pending to Whatnot:Cheque:Current so for EVERY debit card transaction I'm copy-pasting a template and editing by hand. Fava/beancount is so good though, that it's a local maximum - I'm a bit stuck.
- cobby 6y agoSounds like you need to develop a plugin or take a look at existing ones (for example effective date [1] might be helpful) [1] https://github.com/redstreet/beancount_reds_plugins/tree/master/beancount_reds_plugins/effective_date https://github.com/redstreet/beancount_reds_plugins/tree/mas...
- k_marussy 6y agoYou can easily create any kind of abstraction with beancount's programming interface [1]. I find it very comfortable, because I can manipulate the data structure directly (and not just the plain text as in e.g. vim). For example, here is a plugin that I wrote to "delay" a posting of a transaction to another date via an intermediate ("transfer") account [2] and its tests [3] that solves a problem pretty similar to yours (I should someday package my plugins properly and maybe put them on PyPI, but I haven't had the time yet). The beancount documentations also has a list of existing published plugins [4]. [1]: https://beancount.github.io/docs/beancount_scripting_plugins.html https://beancount.github.io/docs/beancount_scripting_plugins... [2]: https://linx.marussy.com/selif/v31rtbi5.py https://linx.marussy.com/selif/v31rtbi5.py [3]: https://linx.marussy.com/selif/tpwlujdk.py https://linx.marussy.com/selif/tpwlujdk.py [4]: https://beancount.github.io/docs/external_contributions.html https://beancount.github.io/docs/external_contributions.html
- jek0 6y agoI use ledger-cli + ledger-guesser [1], which uses use machine learning (brain.js) to classify entries automatically. I've been relying on this for the last 3 years, it works very well. [1] https://github.com/j3k0/ledger-guesser https://github.com/j3k0/ledger-guesser
- sundarurfriend 6y agoThat's a nice tool, this is a feature I enjoyed in Mint-like proprietary tools I used to use previously. What's your workflow with it? Do you run `ledger-guesser <transaction details> >> journal_file.txt`? I'd somewhat prefer typing out the details in an editor, but I suppose I could type a bunch of transactions one per line in a file and xargs that into ledger-guesser. What does it do when your transaction is of a new type that it wasn't trained on? Does it have a confidence threshold below which to tell you "I cannot guess this one"?
- jek0 6y agoI never run it manually. I plug this tool in my scripts that import transactions from banks (and stripe). The scripts extract transaction details (amount, payee, currency), then they use `ledger-guesser` to create ledger entries and add them to the journal. The generated entries are "uncleared". Then I manually "clear" the entries. Review. Commit. (You can also use a tag for reviewed transactions if you already use ledger's "cleared" indicator for something else). For the best results, I have 1 journal per bank account. So I have different training data for each bank account. There's no confidence threshold. When there is a new type of transaction is encountered, the guesser will chose the account with the highest probability. The guesses are made based on the words found in the payee (and date). Unknown transaction have generally a few known tokens. Example: "INCOMING TRANSFER FROM NEW_CLIENT"... The classifier will probably classify that entry as "Incomes:OurLargestClient". In that case I have just to fix that entry to change the client, all the rest is good, it still saves a good amount of typing.
- chromatin 6y agoI have been doing this for years, but for me the biggest downside is the lack of API at my financial institutions to pull data , which leads to a big time suck weekly/monthly logging into sites , navigating their poor UI to download CSVs. Otherwise there is a great ecosystem of tools (and I have automated a lot of my own with Python) for parsing, classification, and import of data into the plain text ledgers.
- Jtsummers 6y agoI found that ledger worked best if you made it a daily habit to go in and record transactions. Also, since I recorded mine in org-mode files I could use something like Beorg to edit it while away from the computer.
- akerl_ 6y agoI’ve ended up using Plaid to solve this. I’ve got some scripts that talk to Plaid to pull transaction data and emit it in ledger format.
- sundarurfriend 6y agoledger-autosync [1] tries to solve this problem, by pulling the data for you from supporting banks. If I understand things correctly, this [2] is the list of banks it can successfully pull data from. [1] https://github.com/egh/ledger-autosync https://github.com/egh/ledger-autosync [2] http://www.ofxhome.com/index.php/home/directory/successfulRequests http://www.ofxhome.com/index.php/home/directory/successfulRe...
- nanna 6y agoLooks US-only?
- nimih 6y agoI've ended up automating most of the data pulling with Puppeteer and a pile of poorly-written JavaScript; every once in a while one of the scripts breaks, but it's pretty rare and easy enough to repair.
- 6y ago
- visviva 6y agoThis is a well-written FAQ. In particular, the "Objections and Concerns" section seemed to predict my questions as I read through each answer (I do not do this type of personal accounting).
- zelphirkalt 6y agoEmacs is already mentioned, but not Emacs Org-mode, so here comes the obligatory Emacs Org-mode comment: I've been doing my personal accounting in Emacs org-mode tables / spreadsheets for 3 years now. I do not need super fancy things in my accounting, but so far it worked great and I am quite sure one can build more complex accountings than mine, as one has the full power of elisp and calc at ones fingertips, when using Emacs org-mode.
- npsimons 6y agoSeconded, although I feel I'm pushing the limits of org-tables. That being said, being able to pull values between tables with "remote(table-name,@Row$Col)" has been a game changer. I may have to look into ledger, but it wouldn't even be on my radar if it wasn't backed by plain text.
- cyrialize 6y agoBig fan of org-mode, although I recently stopped using it in favor of Joplin. I may switch back sometime if I can find a way to mimic Joplin's UI in org-mode (probably with an emacs tree plugin). I love comments like these. The moment I see the words "plain text" in any HN post I always go to the comments and ctrl+f emacs.
- podiki 6y agoWhy not both! Of course, since it is org-mode, you can just do your ledger-ing in there (like any other source block), make reports, comments, etc. Literal programming becomes literal finances. I haven't done this yet, but have played with ledger and org-mode separately. I've seen several articles about this, including on the official docs [1, 2] [1] https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-ledger.html https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-... [2] https://orgmode.org/worg/org-tutorials/weaving-a-budget.html https://orgmode.org/worg/org-tutorials/weaving-a-budget.html
- chadlavi 6y agoI scrolled around for 5 minutes looking for a link to a basic example document and never found one.
- Jtsummers 6y agoYou have to click on some of the links. Check under docs, you'll find details about several different systems that are all under the umbrella of "plain text accounting". It's not one app. They have links to information on ledger, hledger, and BeanCount which all work similarly but are not (entirely) compatible (in particular, I know there's a common subset of both ledger and hledger which covers most personal accounting needs, but they each have some features the other lacks, never used BeanCount). https://plaintextaccounting.org/#docs https://plaintextaccounting.org/#docs
- OskarS 6y agoThe file format for ledger is very simple, it's literally just a list of transations formatted like this: 2021/01/12 Grocery store Assets:Checking Expenses:Groceries $50 This transaction means that you spent $50 at the grocery store. It's double-entry bookkeeping, so the transfers always balance: "Assets:Checking" account is reduced by $50 and "Expenses:Groceries" is increased by $50. This entry is equivalent to the previous one. 2021/01/12 Grocery store Assets:Checking -$50 Expenses:Groceries $50 But this entry is invalid, since it's not balanced (it's the accounting equivalent of a compiler error, and ledger will throw an error when parsing this): 2021/01/12 Grocery store Assets:Checking -$75 Expenses:Groceries $50 A ledger file is literally just a list of these transactions. Accounts are created the first time you use them in a transaction. Transactions can have more than two associated accounts, but they still have to balance. There are many more advanced features, but this (along with some basic understanding of accounting) is all you really need.
- smichael 6y agoGood feedback. It's hard to know where to stop adding to this wall of text, also each tool has its own format. But, point noted, thanks.
- tantalor 6y agoI use Google Sheets for bookkeeping because I found integrating with "plain text" tools on the web was really weak when I started my business in 2016. I wrote this doc describing my method, https://docs.google.com/document/d/e/2PACX-1vS7EzDgEt9_cQ5lcIvQ4LwmhpVyUKNaMt4a9Ya9ziZabbGt0daDXQlA3Gy4ZWxvgEZHx_UpNE5V5LwM/pub https://docs.google.com/document/d/e/2PACX-1vS7EzDgEt9_cQ5lc... The idea is to record every transaction as between exactly two accounts. This is a little tricky with real-world transactions but it can be done, e.g., a real-estate purchase involving 8 accounts.
- joe8756438 6y agoI built a service that incorporates plain text accounting [0] into a larger note taking system [1]. The service has mechanisms for repeating transactions and API access which I use for integrating that data into other systems or sending to my accountant. One of the revelations was that the accounting system could be used for a few different types of commodities: time, effort, inventory, etc. [0] https://tatatap.com https://tatatap.com [1] https://tatatap.com/beans https://tatatap.com/beans
- blackbear_ 6y agoFor those who prefer a GUI, I moved from spreadsheets to GnuCash [1] a few months ago and it's been great so far! [1] https://www.gnucash.org/ https://www.gnucash.org/
- caterama 6y agoYes, echoing the enthusiasm for gnucash! I'm just passing 3 years tracking every credit card purchase over to investment allocations in gnucash. At the end of the day, double entry accounting is double entry accounting and you should be able to move transaction journals between the tools. I haven't tested any of these, but it looks like there are various techniques / tools that make gnucash <-> ledger possible. - https://wiki.gnucash.org/wiki/Ledger-CLI https://wiki.gnucash.org/wiki/Ledger-CLI - https://github.com/icyflame/gnucash-xml-to-ledger-dat https://github.com/icyflame/gnucash-xml-to-ledger-dat - ...
- seanwilson 6y agoFor people that mention software like Ledger, Excel and Google Sheets to do their accounting, what do you do to make sure you don't accidentally delete/duplicate/edit a transaction and how do you import the latest transactions in an automated way? For example, I started using FreeAgent for taxes and the game changing feature for me is the (Open Banking based) transaction feeds where transactions are pulled daily from multiple bank accounts, where you're prompted that you need to explain/categorise each new transaction and the explanations + transactions get locked-in once they become part of a submitted tax return. You can easily change the category of a transaction in the UI but e.g. deleting or modifying a transaction amount will require multiple steps and for you to ignore loud warnings. The automated import takes care of avoiding duplicates and making sure nothing is missed compared to doing it manually. I've done accounting with just spreadsheets before and I hated how easy it would have been to make an accidental edit and not notice. Manually exporting and importing CSV files is fatiguing and error prone as well. I find this similar for invoicing software: you could keep a spreadsheet of who you need to invoice, if you sent it, if it's been paid, sending late reminders etc. but there's a lot of freedom to make mistakes and mistakes here are high impact. Invoicing software automates many of the steps, forces you to follow a set process and gives loud warnings if you deviate or make unusual edits.
- barrucadu 6y ago> what do you do to make sure you don't accidentally delete/duplicate/edit a transaction and how do you import the latest transactions in an automated way? I've never really had a problem with accidental deletions, duplications, or edits - it's a text file, and a transaction is at least 3 lines long (date and two postings), usually followed by a blank line. It's not like a CSV where the entire thing fits on a single line, and all the lines kind of blur together because they're so similar. I commit my ledger file to git weekly, but that's more of a backup than anything else. I manually enter all my transactions, so data import isn't really a problem I worry about (though I know ledger / hledger have ways of doing that).
- Jtsummers 6y ago> For people that mention software like Ledger, Excel and Google Sheets to do their accounting, what do you do to make sure you don't accidentally delete/duplicate/edit a transaction and how do you import the latest transactions in an automated way? I make sure by reconciling my accounts weekly (verifying them against the actual bank/brokerage accounts). I don't import automatically, I found that that led to laziness on my part. The value proposition of this style, for me, was better awareness of my money (not a vague, "I have enough" or I have around $xxxx in my checking account and $xxxxx in my brokerage account). However, there are tools to bring in transactions automatically and I did use them for a bit. There are tools that offer support for OFX, CSV, QIF and others listed on the linked page. I found OFX (not just with this, but in general) to be inconsistent across banks, and, when I did things "automatically", made it semi-automatic. I'd download the CSV of transactions and import them.
- dandare 6y agoCudos to the website for clearly stating WHAT THE WEBSITE IS in the very second sentence. This kind of clarity is unfortunately quite rare. > This site collects FAQs and a directory for the PTA community...
- DarmokJalad1701 6y agoDo programs like these essentially re-compute balances from the entire transaction history any time that it is asked for up-to-date information? Does it cache anything?
- lasftew 6y agoI am not aware of any that does. With modern hardware, and in a personal finance context (a few transactions per day), it is unlikely you will have too much data to handle. The algorithm to compute a balance is O(n) with the number of transactions, or O(nlogn) if the tool allows for unsorted input. If required, you could always close a balance in one file and start with new accounts in a new file, sharding your journal by year, for example.
- smichael 6y agoIt would be good to measure that for the various tools. Things like balance assertions, balance assignments, valuation, may complicate the picture. hledger and beancount users, at least, do often split files by year to keep things in the "pleasantly fast" range.
- npsimons 6y ago> If required, you could always close a balance in one file and start with new accounts in a new file, sharding your journal by year, for example. When I was using double entry accounting down to individual grocery items in GNUCash, I used to do this just for my own sanity.
- smichael 6y agoEssentially yes, with some exceptions: Ledger used to save a parsed/processed file to speed up subsequent reads. It was dropped as not being worthwhile. Long-running UIs, like hledger-ui, hledger-web, and fava I expect, do the parsing only once, though the report calculation is typically repeated on each page load.
- koolk3ychain 6y agoI generally only care how much my net worth has increased. I've found that I taking the time to enter every single receipt and expense outside of my personal business accounting is largely a waste of time. For me, the most meaningful info is a markdown doc where I quarterly asses all of my investment accounts / assets and come to a "current net worth total". I've found a personal correlation between trying to minimize and track minuscule expenses and a decline in my mental health or happiness at work. I'm frugal by nature and trust myself enough to not worry too much about day to day spending.
- reidjs 6y agoSame here. I got started with ledger but found it too tedious to log every expense and didn’t really see any benefit. I already know I spend too much on eating out but it doesn’t affect my net worth in any significant way so I continue doing it. Schwab is able to tie in your other accounts and give you a big picture of your net worth.
- joshuakelly 6y agoA simple solution to this is to apply these principles only to accounts of a meaningful size and to exclude "petty cash". Tracking capital assets with double entry accounting systems has a ton of benefits for someone in your position: * Tracking the cost basis of your capital assets * Tracking fees related to transactions involving capital assets * Calculating taxes * Analyzing allocation of capital assets into categories * Tracking drift from a target
- koolk3ychain 6y agoI literally don't care. I'm going to Acknowledge My Privilege TM (Hacker News Edition) and again state that these types of expenses aren't worth my time to worry about. I pay an accountant to worry about book-keeping and taxes, well worth the $400 a year to cover both my business and personal taxes. I'm not going to adjust tens of thousands of dollars of capital assets because the management fee moved 0.05%... Who do you think I am, Elon Musk? I'm glad you enjoy using your time to do track these kind of things, but I gladly choose not to learn my accountant's job.
- VikingCoder 6y agoOne day I realized I had less than $100 left in my bank account. I'm a software engineer. I know how to write software. So I did the responsible thing - I did not write software. I literally opened Notepad.exe, and started making double-entry accounts of all of my expenses. I broke them down into recurring expenses, surprise expenses, and then discretionary spending. For each recurring expense, I made its own ledger of dates and the expense. I could then predict my future expenses. Given the current date, and knowing when the money would next be due, I could calculate how much I needed to set aside PER DAY, in order to be ready to meet that expense. Once that critical next date passed, I could achieve a steady state, of how much I needed to set aside PER DAY, for that expense. I then started doing double-entry accounting on my main, available cash account, on a daily basis, subtracting the recurring expense daily amount each day. So, I had an actual balance, but then I also knew how much was left for my surprise expenses and discretionary spending. I then went after my surprise expenses, and tried to come up with a rough flow rate for them, as well. And then I gave myself an allowance for discretionary spending. Mathematically, everything I just described was incredibly simple to do. No software required. Having that discipline saved me from going in to debt. I maintained that discipline until my cash crunch wasn't so tight. And now I kind of wish I had the time to write the software. :-/ I also wish I could get my stupid bank to give me "Read-Only Credentials," so I could write software to poll my bank, and not feel so recklessly irresponsible about it. (Having ONE account, with the ability to disperse funds, it feels wildly irresponsible to leave software running with those credentials.) I know there's also the problem where someone receives 17 cents, and then reports "I got 17 cents" in order to establish the ability to make withdrawals from accounts. So then my idea of having the software running with read access could be used as an exploit to steal my money. sigh That's a big pile of BS. Anyone have any recommendations for banks that would HELP ME securely do any of this, or do it for me? I'd really love it if my phone went DING every time I spent money, and it asked me to classify the expense, right then, right there. Way easier than doing it after-the-fact.
- saagarjha 6y agoIt's probably not quite what you're looking for, but Apple Card tells me whenever a purchase is made against it.
- lasftew 6y agoAll PTA tools have in common that they model accounting as a programming language, as opposed to data. This provides for a high degree of epressiveness and flexibility which is hard to achieve with database accounting tools that are typically data-oriented. The basic instructions are open account, close account, and update account (transaction). In addition, a lot of PTA tools support some form of higher-order directives: directives that generate other directives. For example, the availability of prices might trigger the insertion of valuation transactions based on the change of value for a balance position, when processing the balance. Or declarative accrual transactions for a given date might insert "virtual" transactions at specific other dates. The PTA / language-centric view allows to reason about those very easily, as abstractions which result in AST rewrites.
- koeng 6y agoAnyone here tried both ledger and hledger? I read up on the docs, and would like to try one, but wanted to hear any colloquial experiences of usage before I dove in.
- projektfu 6y agoI liked that hledger had a few reports that ledger didn't have, like real balance sheets and income statements. Both integrate well with emacs, but their journal files differ in slightly incompatible ways, so they're not drop-in replacements. Both are very fast.
- ZoomZoomZoom 6y agoI don't know, I've been intrigued by plain text double-entry bookkeeping for a while, it looks like fun, but on the second thought I just don't see any real benefit for a regular person (probably, most IT specialists don't qualify). You get your salary, you set aside 20-75% to pay the bills, some amount you know from experience you need for groceries and other recurring expenses (like public transport and household goods) and if you happen to have anything left it goes to savings. If you're privileged, you'll also have some petty cash left for occasional lunch/night out. When you need to spend some significant unplanned sum you take it out of savings, if you have any. If not, you eat less or go into debt. What's there to track, how much you've spent on potatoes and underwear this month versus the previous? That was the scenario for a disciplined citizen. Most just pay the bills (not necessary all of them) and then just spend what's left on their debit card until there's nothing left. It usually happens before the next salary, of course. No accounting software would help there. UPD: I'm not sure it was the right place to spill my negativity, I fully understand the benefits of being organized with your finances.
- pabl8k 6y agoOnce I had a well-paying job, inverting this was the best thing I did for myself financially: setting up a 50% direct deposit to a high yield savings account (and eventually investing) and only considering the remainder spendable for my day-to-day expenses.
- gen220 6y agoThe benefit is mostly for scenarios with a couple more degrees of freedom than what you describe. If you share your finances with N people (family) or N companies (free-lancer/consultant, etc), the path of least resistance to financial sanity is a well-maintained ledger. If you see this stuff coming in your future, your future self will thank your present self for getting started when things were easier to track. It's also a single source of truth for your entire financial existence. You can use it to track your asset allocation. Which some people in the bracket you describe care a lot about. Of course, you can pay people to do all of this stuff for you. (Accountant, Investment Broker, etc). But there are well-documented costs to these solutions. Basically, you have to trust them a lot, and if you don't speak their language you can't verify their choices. Edit: to be clear, I'm not saying that maintaining a ledger is the right choice for everyone. It's a trade-off, like anything else, I just wanted to explicitly observe the variables that were at play in my decision. YMMV
- yidaman 6y agoAs someone who is building an ERP solution right now, this could serve as the backbone for the accounting subsystem, which is the core of all ERP solutions. It makes creating an accounting solution less scary.
- lcall 6y agoCurrently for finances, I tend to prioritize and "reduce and simplify" and habitually look at all costs as "do I really need this?" as they relate to my long-term goals. But in the future I hope to need more accounting knowledge (doesn't everyone on HN want to start a business? :) ... so I'm glad to hear about all this. One of the "plain text accounting" apps listed at plaintextacconting.org (under "perl", from a prominent OpenBSD person) that uses similar vocabulary to describe it, and mentions looking at ledger somewhat and why he decided to write his own. (I mention it partly as a future reference for myself in case I want to compare them more later, or if someone already has.) Also, a prior HN discussion (which, now I see, they have a link to a list of them at the original post's site; oh well): https://news.ycombinator.com/item?id=12119050 https://news.ycombinator.com/item?id=12119050
- djtriptych 6y agoAnyone have a good recommendation for text-based time accounting?
- dragonwriter 6y agoWould using ledger & friends, with “hours” (and, with preset exchange rates, minutes and seconds) as commodities work for your use case?
- djtriptych 6y agoThat was my first thought, but my brain loves reinventing wheels.
- smichael 6y agohttps://plaintextaccounting.org/#time-tracking https://plaintextaccounting.org/#time-tracking
- chromatin 6y agohledger has provisions and advice on the docs (iirc) for time accounting
- AdamGibbins 6y agoLedger has some built in: https://www.ledger-cli.org/3.0/doc/ledger3.html#Time-Keeping https://www.ledger-cli.org/3.0/doc/ledger3.html#Time-Keeping There's also Timewarrior from the Taskwarrior people: https://timewarrior.net/ https://timewarrior.net/
- jez 6y agoWhat banks / credit cards do people use that have great APIs or tools for exporting transaction level data? The biggest thing holding me back from something like this has been the overwhelmingly boring amount of data entry required.
- drwu 6y agoIn European countries, banks are forced to provide CSV files for the transaction lists. Though the columns are different between banks,the importer function (of gnucash) is usually capable of handling the fields flexibly. The rest ist just batched categorization by searching and applying.
- e40 6y agoWhat are the alternatives? Two of the commercial products listed (Quicken, Quickbooks) are from Intuit. One of the worst software companies out there. Aside from their "Free" Turbo Tax fiasco (easy to find via web search), Quicken was the most infuriating program I ever used. I now use MoneyDance (no affiliation, customer for 5+ years). It's a Java program. It just works. It looks the same after every update. Updates are free for a couple of years. Then I pay for the update, because I like them and want them to succeed. They have a user forum where problems are solved. I no longer swear about my finances, unless it's about my finances. The software I use is now invisible.
- lars_francke 6y agoIt's been a while since I looked at Plain Text Accounting but I want to do one thing I couldn't figure out how to do. Maybe someone here has ideas? Cross Account Budgets[1]. I want to assign every cent coming in to a budget but the budget shouldn't be tied to a specific account as money can come in on multiple accounts but I want to model the "real" situation at the same time and assign the money to a bank account. [1] Described in this old mailing list post: https://groups.google.com/g/beancount/c/ddi5fOuAFoU/m/jp3d0ME5AgAJ https://groups.google.com/g/beancount/c/ddi5fOuAFoU/m/jp3d0M...
- SllX 6y agoYou don’t have to overcomplicate it, just assign an expense to an account as you record it and account for it in your budget separately. If you have two checking accounts that you use for Gas for example, you would credit the appropriate bank account the money came out of at the time of purchase and debit the appropriate expense account in the General ledger. What you see in the Expense account will then reflect how much money you spent on Gas no matter which checking account you used. You can then compare this to what you budgeted for. EDIT: Here’s the appropriate PTA page on how you can use these tools for budgeting, but these are just tools. The General Ledger can reflect as much or as little data as you want it to, and the quality of the reports they generate will be based off that. https://www.ledger-cli.org/3.0/doc/ledger3.html#Budgeting https://www.ledger-cli.org/3.0/doc/ledger3.html#Budgeting
- lars_francke 6y agoThank you. Yes, that's one way of doing it but that's a manual step. I'd like the expense and budget to be combined (been doing that for years in Excel and it works for me).
- ilakast 6y agoI recently started using Firefly-III and I am hooked. I wish I had exported csv data from all my banks, but 3+ years of transactions is still a great insight
- oracardo 6y agoI've been using ledger for the last 5 years. I started playing around with it when I got tired of Mint failing to connect to 1 of my accounts and it lacked support for several others. My primary drive to use Mint was to have 1 place to view all of my accounts. The analytics to show spending on groceries vs restaurants was a nice-to-have. I'd never been fully comfortable with the security model but I didn't have much money at the time. If I had to summarize my favorite features I'd say: 1) Strong support for multiple currencies/commodities including cost-basis,historical-market,current-market price conversions. 2) Advanced reporting options to support various filters, mutations, conversions, outputs. One of my favorite reports is total net worth in CAD converted using latest market prices ledger bal Assets -V -X CAD Another might be top expense accounts in decreasing cost: ledger bal Expenses -H -X CAD --flat -S -T 3) Error detection: by enforcing double-entry accounting it has helped me identify hidden fees. It also helps when I make a mistake balancing a transaction. 4) Better than 2 decimal precision. This helps with crypto where your crypto balances can look something like 1.23456789 BTC
- flukus 6y agoSomething people reading this would probably be interested in is Recutils: https://www.gnu.org/software/recutils/ https://www.gnu.org/software/recutils/ . It combines Human readable and writeable plain text with the ability to handle relational data and programmable manipulation. For databases under ~1GB it combines the best of plain text and sql.
- adchari 6y agoI’m going to chime in despite being a broke college student. I’ve been using ledger for about 2 years now, and daily reconciliation of what I actually spent is more helpful to me than having a budget, or anything else, it forces me to acknowledge how much I spent, and on what. Personally, it short circuits the easy swiping of plastic that leads to a ton of unnecessary spending, kinda like using cash. Ledger has budgeting features, allows me to use multiple commodities (I even wrote a script to get stock prices and help ledger value them). I can’t comment on bigger things, but for my use case, I really enjoy it.
- Havoc 6y agoFeels pretty surreal reading these comments. I’m an accountant by day and toy with tech after hours. I have absolutely zero interest in tracking my finances via ledger - unlike the programmers here apparently. Mirror opposite in a way
- abdullahkhalids 6y agoDo you track them at all using some other tool?
- Havoc 6y agoI don’t track it at all. Living far below my means and couldn’t be bothered to record every single thing. It’s all on the bank statements anyway The value add decision happens when you decide whether to incur the expense at all, not by recording it
- Malaclypst 6y agoPlease stop post it. Plain text accounting is incredible as anything dead simple and plaintext but basically unusable. It's cool as idea, not as a tool.
- indymike 6y agoFor emacs users, check out ledger-mode.
- rockwotj 6y agoI really want to be a good person and track my finances like this, but I just don't have time (or am too lazy) and just need a more automated process.
- jum4 6y agoI use an XMPP Bit to track my spends in cash and then later import it. Anyone else using something similar?
- clamiax 6y agoThis recalls me of a code I wrote: https://github.com/clamiax/sw https://github.com/clamiax/sw It may be worth to dive deep into Ledger concepts.