Plain Text Accounting
plaintextaccounting.org
plaintextaccounting.org
The common denominator, however, is CSV. Every service lets you download historical data as CSV, which can be imported by hledger and turned into journal files and then into visual reports.
It’s a bespoke setup and super nerdy and is a bit of a pain, but it’s literally the only solution that works for us.
To add on for others, importing the data can be done with CSV, but the software itself has a lot of tools that let you automate your imports so you can categorize expenditures into accounts. This is all done via plain text file formats so it's very easy to get the end result you want using any combination of text processing tools you like.
For my (extremely simple) accounting needs for my book writing, I looked at some of the packages, got turned off by the subscriptions, and realized I could do what little I needed just by opening a separate bank account, and doing all the costs & revenue through that. The bank takes care of the storage, and you can download a CSV of the whole year and import that into a spreadsheet. Some massaging and then give it to the accountant.
Obviously for a real business, you need something more, so I'm not saying this would work for everyone.
I'm not a programmer, so I had to install and learn a lot of tools along the way, but now there's literally nothing I want to do with my financial data that I can't. It's all just text files, python, git, csv, and json. I haven't encountered a single problem that I wasn't able to solve with just a bit of time and searching through stackoverflow or github.
Also, your accountant doesn't need every transaction; just the categorized totals are good enough. He/she doesn't mind entering a FEW numbers in by hand.
Or more people are feeling the cost of living squeeze and/or have been laid off and are trying to figure out their finances.
I've been thinking that there's some similarities between a network of double-entry accounts and joined semi lattices (like CRDTs). Is accounting the first widely used joined semi lattice?
proprietary apps can't afford to because 1) no moat and 2) really hard to get at files on mobile, but this ends up being a superpower for OSS if you can convince users to try your thing
better BYO-format structured document editors would help too
The part that really sucks is when it’s “Save Image” and that is treated differently when sometimes you just want the file.
I've been using a self-developed double-entry accounting system for my own business. Generating the "big four" financial statements (income statement, balance sheet, statement of owner's equity, and statement of cash flows) in canonical GAAP form, along w/ a schedule of accounts payable and receivable (for converting from accrual to cash basis), has been enough to get our taxes prepared for almost 20 years.
However, I've found that I prefer GnuCash with the SQLite backend. This allows me to run checks and analyses on my finances with a shell script.
Yes, you could do this with plain text; that's why plain text is great!
I just prefer the SQLite way.
If there's not, I think I'll add it when I have time because it should be a fairly trivial process to convert to PTA format.
The end of the accounting search - https://news.ycombinator.com/item?id=36021197 - May 2023 (129 comments)
For something to involve other media or forms it needs to be a strong clear net win. In my own software work I've coined a private term for it: CLIFMO (for CLIs First, Maybe Only.) Its not a novel idea by any means because I know hundreds/thousands of other engineers prefer it too. But I try to be religious about it.
For example, I've been making a new game lately, and the prototype is 100% text-only, and the final shipping version might be too. (NOTE: If curious, see my bio for details: Slartboz, a sci-fi post-apoc IF adventure.)
My ideal setup would be YNAB, I really liked that program but unfortunately their current price is too high for me. So my plan for now would be to use beancount as normal (possibly with a telegram bot for entry + imports every week or so, with deduplication), as beancount has good existing tooling and is more strict than (h)ledger, and writing a frontend for budgeting on top, as that is not strictly part of the ledger itself. So that frontend would just make a weekly balance of expense accounts, and each could be mapped to a budget.
[1]: https://www.gnucash.org/docs/v3/C/gnucash-guide/basics-accou...
It's quite likely what you're looking for is missing, but have you seen
https://github.com/plaintextaccounting/plaintextaccounting/w... ?
There's also a bit at
2011/03/15 Trader Joe's
Expenses:Groceries $100.00
Assets:Checking
2011/03/15 Whole Food Market
Expenses:Groceries $75.00
Assets:Checking
I don't even need to explain the data structure to you, it is self evident. Any number of sophisticated functions can be built into an interpreter of the ledger data, but all of those complex functions never obscure the basic data which can be edited by hand in a plain text editor if desired. Or you can use ledger-mode in emacs and enter transactions through prompts so you don't have to manually structure the whitespace for it to look nice. However complex you desire, you can use ledger in that fashion, that is the strength of its minimalism.Like I said elsewhere in this thread, I like to use ledger inside codeblocks in org mode (org-babel) in a simplistic application of literate programming. The extremely human readable nature of ledger's data structure is a natural fit for the similarly human readable org format, and in export of an org file into a website, html document, pdf or other media (via pandoc) ledger codeblocks remain human readable, even to someone who has never heard of ledger-cli. This means that an org file tracking a complex project with associated costs at each step (though ledger can track anything with units, including time) can be easily converted into a professional quality document that can be used in any number of contexts.
The professional outward facing document used for conveying information about a project to others can thus originate out of the same org file that is being used to work on the project itself. In other words, your notes are only a step or two away from a presentation in any number of formats.
When you want only the finances from the project file, just tangle it out and treat it like a normal ledger file.
If I were in your shoes, my only question would be: am I happy with the output? If you are, I'd stick with ledger. If you're not, fava is pretty cool.
I've never used PTA software before, but I just tried beancount and I'm really liking it so far. Just set up my checking and savings accounts. The Vim syntax highlighting sealed the deal.
Looking forward to getting back on top of my finances…
She has another script which can generate/update/open monthly year-to-date HTML reports.
At end of year (at least), I handle journal file rotation, apply any desired fixups, commit to version control, and produce some checked/cleaned-up HTML reports.
We also track some shared things in a google spreadsheet. I import from there to my own PTA journal each month, as an end-of-month adjustment.
Another example could be creating a meal plan for a long trip with many meals that you have to bring all the ingredients with you.
Ledger has so many more potential use cases than just as a way to track money, and ledger is so much more useful in org babel than by itself, it is an ideal compliment to org mode for managing large projects with lots of fiddly bits of defined types and units (which honestly can be time too, I kind of prefer it to org mode's clock system).