[HN Gopher] Plain Text Accounting, a guide to Ledger and friends
       ___________________________________________________________________
        
       Plain Text Accounting, a guide to Ledger and friends
        
       Author : wslh
       Score  : 267 points
       Date   : 2021-09-05 00:55 UTC (22 hours ago)
        
 (HTM) web link (plaintextaccounting.org)
 (TXT) w3m dump (plaintextaccounting.org)
        
       | stadium wrote:
       | Do these scale for multi-user situations? Access controls,
       | segregation of duties, etc?
        
         | smichael wrote:
         | Some possibilities:
         | 
         | * Use a version control system - keep journal files in eg a
         | github repo; control access, manage pull requests, audit
         | changes in the usual way.
         | 
         | * Use multiple files - the journal can be composed from
         | multiple files, each with different filesystem
         | permissions/accessibility.
         | 
         | * Maintain files on a server, and run a web UI like hledger-web
         | or fava, perhaps behind a login form, to give read-only or add-
         | only access to remote users.
        
       | smichael wrote:
       | Site maintainer here. Thanks for the link! Suggestions are
       | welcome for next time I'm tweaking the site.
        
         | smichael wrote:
         | Here's my quick partial history of Plain Text Accounting (PTA),
         | to catch you up:
         | 
         | - 2003: John Wiegley creates the field with the Ledger command
         | line tool and its file format.
         | 
         | - 2007, 2008: I and Martin Blais create two new "ledgerlikes",
         | hledger and Beancount, with their own
         | technologies/priorities/maintenance styles.
         | 
         | - 2003-present: Community grows; many helper scripts, tools,
         | docs, and other ledgerlikes appear.
         | 
         | - 2016: To grow the ecosystem, organise resources, and reduce
         | support effort, I coin the Plain Text Accounting phrase and set
         | up #plaintextaccounting IRC channel and
         | https://plaintextaccounting.org. (And in all honesty, also to
         | encourage objective comparison shopping and regain a little
         | oxygen for Ledger alternatives).
         | 
         | - 2017: Colin Dean sets up the plaintextaccounting subreddit.
         | 
         | - 2021: The community continues to grow. The IRC chat is
         | bridged with a Matrix room. Ledger has been "done" for many
         | years but may have a new release soon. hledger has been
         | steadily developing, with quarterly releases. Beancount is in
         | process of a big rewrite. There are some other strong
         | ledgerlikes, currently with much smaller userbases.
        
       | globular-toast wrote:
       | My ledger will be 10 years old this year. I don't use much cash,
       | so data entry is handled by reading CSVs from my bank accounts
       | and a machine learning thing I put together to "guess" what
       | account the transaction is in (plus a fast auto-complete thing to
       | correct the guess if it's wrong). I like that it's flexible
       | enough to track all my assets if I choose to.
        
       | mindslight wrote:
       | Does anybody else feel that the hype behind accounting,
       | especially double book accounting, is somewhat overblown for its
       | actual substance?
       | 
       | Every time I dig into accounting and try to learn it more in
       | depth, it seems that the foundation is trivial. And it coasts on
       | a few "clever" implications from the double book assertion
       | (income/expense accounts), almost in spite of how they don't make
       | sense. You can't classify an item as multiple expense categories
       | without growing the semantic model, so why do you even need the
       | concept of an expense "account" in the first place, as opposed to
       | a single entry in your cash account, tagged with categories?
       | 
       | Meanwhile the bulk of the real complexity revolves around tax
       | rules, which always seem to get left out of "accounting" proper,
       | even though they're the overwhelming reason people to go
       | accountants. I actually installed QuickBooks the other week to
       | see what the gold standard looked like, and it ultimately just
       | seemed to be another way to keep basic credit/debit accounts,
       | with little in the way of preparing/optimizing taxes. Its main
       | value add seemed to be in generating paperwork (eg invoices),
       | that while perhaps nice to formalize, would just increase my
       | scope rather than solve my problems. I expected that it would
       | have automatically prodded me into creating a depreciation
       | schedule and things like that, but it appeared I had to set
       | things like that up manually in terms of basic accounts?
       | 
       | I'm asking because I see people talk about accounting as if
       | they're getting a lot of value out of it. But every time I've dug
       | into it thinking there must be something I'm missing, I've never
       | ended up seeing that value.
        
       | rguiscard wrote:
       | I'm using beancount to keep track of accounts in different
       | currencies and stocks. Highly recommended. Tackler seems an
       | interesting contender, though. The only weakness of plain text
       | accounting is the lack of good graphic reporters.
        
       | natchy wrote:
       | I've never seems a timeline-view calendar in the terminal like
       | here: https://github.com/SitanHuang/ledg
       | 
       | What libraries were used to do that? I don't see a package.json
        
         | teraflop wrote:
         | It's not complicated enough to need a library. Here's the code:
         | https://github.com/SitanHuang/ledg/tree/develop/lib/cli/char...
        
       | [deleted]
        
       | jvanderbot wrote:
       | Ledger has proven to be a huge improvement to my house finances.
       | Just download statements, run them through a few scripts, and you
       | have analytics-ready data.
        
       | prog5 wrote:
       | Slightly off topic, but I finally broke down and paid for YNAB
       | this year and it has literally changed my life. It doesn't feel
       | like accounting anymore, it feels like playing monopoly. Use QB
       | for biz, and tried mint for years, both feel like work. YNAB not
       | only tracks historical categories but makes it fun to plan future
       | expenses.
        
         | Tomte wrote:
         | I have used the old "lifetime" version. How is the new
         | subscription software compared to it? Is it much improved? How?
        
           | elastic_throe wrote:
           | The biggest additional feature in the subscription based app
           | is auto-importing transitions. Personally, this is not of
           | interest for privacy / security reasons sharing my banking
           | passwords.
           | 
           | Recently added budgeting to the mobile app. Most of the user-
           | facing improvements have been cosmetic to UI design, colors,
           | and phrasing.
           | 
           | The reports still are not at feature parity with the old
           | YNAB4. Fortunately there's an open-source Chrome extension -
           | _Toolkit for YNAB_ that improves reporting and charts.
           | However, I find it disappointing this functionality isn't
           | built into the App.
        
             | Tomte wrote:
             | Thanks!
             | 
             | Auto-importing isn't really a point for me, since YNAB has
             | always only supported American banks.
             | 
             | I think I'll reinstall old YNAB these days.
        
         | gandhi00 wrote:
         | YNAB is amazing. Couldn't agree more, it changed my life
        
       | jimnotgym wrote:
       | >Most (not all) plain text accounting implementations use signed
       | amounts instead of debits and credits. This makes them "double
       | entry light" perhaps, but it has been a rather successful
       | simplification, intuitive to most newcomers.
       | 
       | They shouldn't do themselves down. I am an accountant and I have
       | used several large systems that do exactly this in the database.
       | It is also by far the preferred way to export a trial balance or
       | gl account from any system to excel. It is the norm in the
       | industry and in no way an innovation of plain text accounting.
        
         | cwp wrote:
         | When you say "it is the norm in the industry" do you mean that
         | accountants are moving away from debits and credits, or is it
         | just that accounting software translates to signed numbers when
         | dealing with non-accounting software such as databases and
         | spreadsheets?
        
       | anyfactor wrote:
       | I really don't know for whom this is for.
       | 
       | For Normal People:
       | 
       | Double Entry even though may sound simple, it is quite a
       | difficult concept to grasp. For the sake of double entry we use
       | counter entries that take months to grasp. For example -
       | Amortization, Allowance etc.
       | 
       | More over double entry method strives for standardization of
       | entries. Having a plaintext non-autocompleting solution without
       | accounting for only handful fixed type transactions....I just
       | could wrap my head around it.
       | 
       | Moreover with online connected mobile solutions that are most of
       | the time free why bother using this when the steep learning curve
       | doesn't yield any marginal benefit.
       | 
       | For Accountant:
       | 
       | Excel is god and whatever accounting software the org is using is
       | an acceptable solution
       | 
       | ---
       | 
       | Even though the FAQs and the previous discussion has addressed
       | this exact same issue. I really don't know what type of people
       | would use plain text command line solutions except for the sake
       | of using plain text command line solutions.
        
         | speleding wrote:
         | Well, my company has been using Ledger CLI for a decade. It has
         | a few large advantages over off-the-shelf accounting packages,
         | the primary one is that it allows us to extend the "Everything
         | is code" approach to everything from ops to accounting.
         | 
         | - For example, instead of someone needing to remember passwords
         | to five different current accounts and credit card sites, there
         | are ruby scripts that download the data, convert them into
         | journal entries and get committed to git. (Commercial packages
         | can read your credit card data too, but there will always be a
         | data source you need that they don't support)
         | 
         | - The scripts get committed and version controlled, but the
         | ledger files themselves go into git as well. So you can bi-
         | sect, revert, merge. All the tools git gives you that are an
         | order more powerful than what an accounting package will have.
         | 
         | - As an organisation grows it will run into weird business
         | specific processes, e.g. some tax or reporting requirement that
         | your off-the-shelf package cannot do. If it's all just plain
         | text files and code then the reporting requirement is one more
         | ruby script away. (I've been a consultant in a previous life
         | and you wouldn't believe the man hours that get lost in
         | accounting departments with people doing these manual chores)
         | 
         | - Filling out quarterly tax statement is again just a single
         | script. Took a bit of time to get it to work but now saves a
         | lot of man hours each time.
         | 
         | There is a disadvantage: your average accountant won't know
         | what ledger is or how to use it. But we have yet another little
         | script that converts the ledger output to Excel for use in
         | audits, etc.
        
           | anyfactor wrote:
           | Ledger CLI in a company in this day and age?
           | 
           | I forgot to mention I studied accounting in uni and after
           | investing/wasting my time into understanding CLI and terminal
           | application I have come to the conclusion that they are
           | simply not for me. Specially if you are not using Linux in
           | all your applications and even that is another issue. I
           | digress...
           | 
           | I am just incredibly intrigued by your organization's
           | practice. Who are the people that are interacting with
           | accounting system? I know it requires a more than capable IT
           | person to feel comfortable using a CLI. So, do you not have
           | assistants or accounts professionals whose main job or one of
           | their main is to do accounting? Or is it all IT or
           | programmers that are interacting with this system.
           | 
           | How large is your organization. That is a question also.
           | 
           | How long did the organization ran for to settle on
           | understanding the basic requirements from the accounting
           | software to commit to creating a CLI solution?
           | 
           | How are you outputting reports that are well formatted?
           | 
           | Audit usually requires a walkthrough process of accounting. I
           | couldn't imagine any auditor not being surprised to see a CLI
           | based software and let alone attempting to understand these.
           | 
           | I have thought about creating my own CLI solution that just
           | appended to my workbook. But it is just not scalable and
           | simple modularity requires going down the codebase which is
           | not something I imagine doing on the weekends.
           | 
           | And that is why the barrage of questions. With CLI
           | applications (not even custom GUI application) the layer of
           | complexities for the sake of simplicity means that the person
           | using it has a ton of highly specific needs that is not the
           | standardized and they also have a very different definition
           | of the word "simple".
        
             | speleding wrote:
             | The company is small (around 20 direct + indirect) but the
             | accounting can get somewhat complex because it has sales in
             | multiple countries, leading to 7 currencies and with two
             | dozen different VAT rates. The fact that ledger can keep
             | tally in multiple currencies was an essential feature for
             | our use case, most commercial packages want to convert
             | everything into a base currency which leads to cumbersome
             | conversions when you subsequently need to pay affiliates
             | and taxes in a non-base currency.
             | 
             | That's small enough that all accounting can be handled by a
             | single person, me, including updating the scripts that keep
             | it all running. They do need regular upkeep as a result of
             | changes in regulations, APIs, etc. It takes me about two or
             | three days per quarter, and a few more days at year
             | closing. There is a script that generates a pretty Excel
             | workbook from the ledger output with a familiar looking
             | dual ledger balance sheet and another one with a profit and
             | loss statement, any accountant should be able to read
             | those. There is not often a need to involve an actual
             | accountant or do audits though, the company is privately
             | held.
             | 
             | Teaching a programmer the basics of accounting is pretty
             | easy. Would this work in an organisation that's not a
             | software company where you would need to teach an
             | accountant scripting, git, CLI, etc? I don't know.
        
         | smichael wrote:
         | It is a good question to ask. You say the FAQ has addressed
         | it... I guess it was not convincing ? (If you remember where,
         | please point me to it..)
         | 
         | PTA tools, some of them at least, can scale well from beginner-
         | level single entry accounting, or even zero entry "accounting"
         | (just a list of dated event descriptions), to fully general
         | double entry accounting that can model any financial event. I
         | always encourage people to start out simple. What usually
         | happens is they learn and become more interested and more
         | sophisticated as time goes on.
         | 
         | So I would say one group of people this appeals to is people
         | who want to get their hands dirty with Double Entry
         | Bookkeeping, with the support of a lively and enthusiastic
         | community, in order to understand it better.
         | 
         | Another is people who are expert with text editors, scripting
         | and programming and want an accounting system where they can
         | bring these skills and insights to bear.
         | 
         | Another is people who want total control and privacy of their
         | financial records.
         | 
         | Another is people who want their financial data to be
         | accessible and usable for a very long time (even without
         | software, if it came to that).
        
           | rambambram wrote:
           | Good reasons indeed. I'm not a user of this PTA, but a couple
           | of months ago I decided to write my own simple bookkeeping
           | software. I reckoned: if I have to learn double entry
           | bookkeeping one way or another, I want to do that step-by-
           | step with my own software. Just something running locally
           | now. I also build in some (as I call 'm) Semi-Automatic
           | Shortcuts, which let me enter standard recurring entries.
           | Click-click-done. And the best thing: I now understand what
           | this whole double entry bookkeeping thing is.
           | 
           | Even for using of-the-shelf software from a third party, you
           | need to learn the idea and skills behind double entry
           | bookkeeping. The software is not going to fix that for you.
           | 
           | P.S. If anybody is interested in a simple locally deployed
           | PHP-script to do bookkeeping, send me a message. There's also
           | a simple timetracker, a balance sheet, profit/loss statement,
           | etc. You need a local server and MySQL database to run it. I
           | guess in it's essence it's applicable worldwide, but if
           | you're from The Netherlands, it's ready to do taxes for you.
        
         | djhworld wrote:
         | For beancount there is an Emacs mode which supports auto-
         | complete, and visual tricks like collapsing to make the file
         | easier to navigate.
         | 
         | Granted using Emacs isn't exactly for everyone, but there are a
         | bunch of tools out there to make editing the text file much
         | easier
        
         | Lio wrote:
         | I've used Ledger for a number of years because I'm comfortable
         | using plain text files.
         | 
         | I just send CSV exports and reports to my accountant.
         | 
         | I'm an independent software developer working on my own. I
         | guess it's useful for people like me.
        
           | anyfactor wrote:
           | How are you generating the reports? Are they in PDF?
        
             | Lio wrote:
             | I use plain text to begin with and then run them through
             | pandoc with html template. And either send them as word or
             | pdf files.
             | 
             | It's not particularly sophisticated but it works and it's
             | simple enough to live with.
        
         | teitoklien wrote:
         | I use ledger for my transactions , daily I found it simpler
         | than the other applications , considering i spend most of my
         | time in text editor or cli . Moreover having to deal with
         | multiple currencies in ledger is just so simple. Its command
         | line parameters make it very similar to me like other tools ,
         | grep , awk , xsv , etc.
         | 
         | Over the years, I've kept extending it to calculate and
         | generate invoices for my clients and email it to them with a
         | payment link automatically. Also combined with gnuplot its a
         | very minimal and excellent tool for visualising my finances in
         | any way I want to. My plan is overtime to combine it with
         | streamlit.io to make interact-able projection tools for myself
         | to tinker with my finances.
         | 
         | And its community is super fun too ! Ledger and Hledger are
         | some of my favourite tools.
        
       | dang wrote:
       | Past related threads:
       | 
       |  _Plain Text Accounting_ -
       | https://news.ycombinator.com/item?id=25745615 - Jan 2021 (200
       | comments)
       | 
       |  _Plain Text Accounting, a Guide to Ledger and Friends_ -
       | https://news.ycombinator.com/item?id=11164330 - Feb 2016 (26
       | comments)
       | 
       | Edit: I've changed the submitted URL of the current thread from
       | https://plaintextaccounting.org/#plain-text-accounting-apps to
       | the home page, which gives more information. See also
       | https://hn.algolia.com/?dateRange=all&page=0&prefix=true&sor...
        
       | wsc981 wrote:
       | Just looking through the docs of one of these apps called Ledger
       | [0], it seems to me it's a lot of work to keep everything up to
       | date.
       | 
       | I guess one could write tools to ease importing data from banks,
       | brokers and the like.
       | 
       | Currently I don't do the full accounting stuff. I just keep track
       | of my net worth using an Apple provided Numbers sheet. It's easy
       | and quick, just occasionally logging into all my accounts and
       | then updating the values in the sheet. This way I don't get the
       | historical overview, but at least the data can be updated in just
       | a couple of minutes. As long as I see my net worth rise over
       | time, I am happy.
       | 
       | ---
       | 
       | [0]: https://www.ledger-cli.org/3.0/doc/ledger3.pdf
        
         | hiq wrote:
         | It looks like you don't feel like doing full accounting, in
         | that case I'd say it's fine to stick to whatever you're doing.
         | Accounting not done properly (e.g. with missing or incorrect
         | transactions) is not (much) better than no accounting at all.
         | 
         | In my case, I grew frustrated with my approximations. Computing
         | the difference between my balances at different points in time
         | hides the details that would make it actionable, or give any
         | insight about past choices. So in practice I would go through
         | my past transactions, try to get an intuition of what happened.
         | At this point, switching to proper accounting is just about
         | scratching an itch and making this whole process more
         | efficient.
        
         | ilammy wrote:
         | > _it seems to me it's a lot of work to keep everything up to
         | date_
         | 
         | Unless you do dozens of transactions every day, it's not much
         | of a hassle to keep track of them manually. If you're like a
         | day trader or a small business owner then yeah, you'll probably
         | need some helper tools.
        
           | wsc981 wrote:
           | _> Unless you do dozens of transactions every day, it 's not
           | much of a hassle to keep track of them manually._
           | 
           | I don't have too many transactions indeed.
           | 
           | I am actually contemplating to switching from my Numbers
           | sheet to the Ledger command line tool. I _do_ like that this
           | tool is multiplatform and based on simple text files. And it
           | shouldn 't be too hard to write a few scripts to convert data
           | from my banks and brokers into the format used by Ledger. I
           | guess I'd need a day to setup everything, so perhaps it'd be
           | a decent weekend project.
           | 
           | Eventually I would like to leave the macOS platform and not
           | relying on Numbers would make the switch just a little bit
           | easier.
        
             | kqr wrote:
             | I actually switched from the plain-text hledger to a
             | spreadsheet. I still do double-entry in the spreadsheet,
             | but the latter was easier to use on the phone (0--3
             | transactions per day) and easier to share with other family
             | members.
        
       | nlh wrote:
       | I've switched all my accounting over to hledger (a Haskell-based
       | and slightly more feature-filled version of the original) and I'm
       | SUPER happy with it so far.
       | 
       | My primary consumption method is hledger-ui, a nice curses-based
       | UI. It's got a `watch` mode so will update in real-time as you
       | make edits to the source database, which is nice.
       | 
       | The ONE thing I miss from the old QuickBooks UI world: Entering
       | categories for transactions directly in my text file is tiresome.
       | QuickBooks had a super nice auto-complete feature wherein it
       | would remember the category as you were typing a transaction,
       | which made data entry a snap.
       | 
       | Anyone have any suggestions on how to replicate this inside a
       | text editor? Or any other good way of quickly doing transaction
       | entry?
        
         | Buttons840 wrote:
         | I've experimented with classifying my own transaction history
         | using n-grams and either naive Bayes or a neural network, the
         | neural network worked better. I could train the nn to
         | convergence in a few seconds and it was good enough to remove
         | 95% of the classification work.
        
         | smichael wrote:
         | ledger-mode in Emacs has some excellent account and description
         | auto-completion (warning, may require a bit of configuration to
         | suit your taste).
         | 
         | hledger add, hledger-iadd and hledger-web are some of the data
         | entry uis with auto completion.
         | 
         | Alternatives: other ways of generating entries means less
         | manual data entry, such as copy/paste in your editor,
         | predefined templates (org-capture, yasnippet or equivalents),
         | or conversion from bank csv data.
         | 
         | [PS I realize now you were asking for more than account name
         | auto-completion, ie: filling in defaults for all postings
         | (legs) when you reuse a transaction description. I don't know
         | of many PTA tools doing this yet; hledger add is one.]
        
           | [deleted]
        
       | hestefisk wrote:
       | Do all of these use a text file as the back end? I like the idea
       | of a CLI, but it's way easier running Tableau over an SQL
       | database than a text file with indentation (just read the
       | beancount review). I feel quite inspired by this regardless and
       | will give it a shot.
        
         | amw-zero wrote:
         | Yes - "Plain text accounting apps"
        
         | smichael wrote:
         | Currently yes. hledger has rudimentary SQL export
         | (https://hledger.org/hledger.html#output-format).
        
           | jolmg wrote:
           | It'd be cooler if the quantities didn't come formatted with
           | thousands seperator commas and currency symbols. Then, the
           | numbers could more easily be treated as numbers in SQL.
        
             | smichael wrote:
             | I have not used the SQL output, but I hope it's like all
             | other hledger output: the number formatting is configurable
             | (following your data format by default, but overrideable).
        
               | jolmg wrote:
               | Yeah, but IMHO, while it makes sense to have configurable
               | formatting for terminal output, it doesn't make sense to
               | apply that formatting to output meant for SQL.
        
               | smichael wrote:
               | True! I will look into it, thanks for the report.
        
               | jolmg wrote:
               | Oh, Simon Michael! I hadn't noticed your username until
               | now.
               | 
               | > I have not used the SQL output.
               | 
               | I've used it to process the register output in a
               | pipeline.
               | 
               | Sometimes, my `hledger reg` queries result in multiple
               | quantities on some transactions. The terminal output
               | leaves the columns of the date, transaction description
               | and account blank, for pretty-printing purposes, I
               | suppose. Those blanks complicate adding up the quantities
               | per transaction using a tool like awk. There's also the
               | JSON output format, but the depth of the objects around
               | quantities makes the CSV still simpler to process, even
               | though I need to process the quantities' text in SQL so
               | they can behave like quantities.
               | 
               | Just sharing how one user uses hledger.
        
         | jolmg wrote:
         | It's nice to be able to add comments, add a layer of
         | preprocessing with a template/macro language, track changes
         | with git, organize stuff in an arbitrary structure of files,
         | etc.
         | 
         | Stuff like that is not as simple if the backend is an SQL DB.
        
       | Chirael wrote:
       | If anyone here, like me, is already trapped in the QuickBooks
       | world, I wrote a small little converter for OFX to IIF to allow
       | importing transactions while getting around the forced-upgrade-
       | every-three-years cycle. Happy to share if anyone could benefit.
        
       | xcambar wrote:
       | How does that compare to GNU Cash?
       | 
       | Also, I cannot and will not share personal financial data to yet
       | another 3rd party SaaS. So please refrain from mentioning YNAB
       | and the likes ^^
        
         | xcambar wrote:
         | To the downvoters: can you clarify how my comment triggered
         | your downvote?
        
       | hardtoreason wrote:
       | I've used the ledger-likes extensively, and they have two major
       | problems:
       | 
       | (1) One of the hard problems in personal finance is data capture
       | and input validation. Programs like QuickBooks and Xero don't
       | just hide the GL because they're being mean, they're doing it
       | because even experienced bookkeepers make mistakes on the general
       | ledger all the time. "Since it's a text file it's easy to read"
       | solves exactly the wrong problem: you want it to be easy to
       | write, and easy to write CORRECTLY.
       | 
       | (2) They're the sort of solution that seems fantastic if you
       | don't actually operate at scale. But once you start dealing with
       | tens of transactions per day it simply is not sustainable.
       | 
       | Safe to say: I'm not really a fan.
        
         | avodonosov wrote:
         | For data capture, what can help is just not aiming to record
         | every cheque.
         | 
         | Record significant spendings, and account the rest as "other" -
         | it should be the amount allowing to balance the ledger, given
         | the current assets, income, and the significant spendings.
         | 
         | My problem with ledger was the absence of correct support for
         | multi currency accounting.
        
         | minikomi wrote:
         | Termux on the phone with custom ledger focused org capture
         | templates has worked well for me
         | 
         | Now I just use a simple discord bot to capture, which is synced
         | to a private git repository
        
           | VoidWhisperer wrote:
           | Is your bot that does this open sourced? This seems very
           | interesting
        
             | m-p-3 wrote:
             | It would be nice to see how hard it would be to convert
             | into a Matrix bot, at least the conversation would be end-
             | to-end encrypted.
        
         | smichael wrote:
         | Another data point: 95% of my data entry (all but cash) is
         | automatic CSV download (using plaid2qif) and mostly-automatic
         | deduplicating import (I tweak the import rules when needed).
         | So, a daily `make import`. I have also run this from a nightly
         | cron job. For most of us, that's a little too automatic;
         | usually we want a bit more oversight and awareness.
        
         | fortran77 wrote:
         | The reason I use Xero is the integration with my bank, credit
         | cards, invoicing, and payroll system.
        
         | megous wrote:
         | Yes, it's much easier to just have accounting data in a
         | relational database. It's much easier to work with (edits and
         | arbitrary analysis/reporting), rather than having to use/learn
         | some bespoke tooling and data format. It's much easier to
         | associate entries with metadata or categories, and much simpler
         | to add editing GUI on top if you want to, or integrate with
         | third party data sources.
         | 
         | (I wrote a text based ledger tool myself, and then switched to
         | storing data in PostgreSQL)
        
         | tomnipotent wrote:
         | > hard problems in personal finance is data capture and input
         | validation
         | 
         | It's also true for business accounting. Getting data into your
         | accounting/ERP software is always a clusterfuck, and I've yet
         | to see a process that didn't require many hours/days of
         | reconciliation and posting manual journal entries to close a
         | reporting period.
        
           | ethbr0 wrote:
           | This is the data representation problem.
           | 
           | It's in the customers' best interest to have a universal
           | format.
           | 
           | It's in no one else's (read: especially vendors) interest for
           | there to be a universal format.
           | 
           | Which is why you generally only see it when it's mandated by
           | a coordinating party in the middle (e.g. Medicare).
        
             | blowski wrote:
             | In finance, would this be the open banking standard?
        
               | ethbr0 wrote:
               | It might be partly a US vs. UK/EUR thing, where the
               | latter are more comfortable with compelling industry to
               | just do a thing. And the former is very uncomfortable
               | with that.
               | 
               | In the US, open banking would probably look more like
               | "the IRS requires a bank to have accounts readable using
               | these formats, or otherwise be able to provide same
               | manually, when requested" to prod industry to do it.
        
             | tomnipotent wrote:
             | Sort of.
             | 
             | The challenge is that no two businesses are really alike,
             | so it's difficult to create a standard that can capture all
             | the nuance of running a business. GAAP/IFRS-compliant
             | accounting requires double-entry accounting, so many ERP
             | systems share a lot of the same things (account,
             | debit/credit, accruals, receipt of goods, month-end close)
             | that are needed to spit out the three sheets and other
             | artifacts for financial reporting.
             | 
             | A running joke in the industry is that you don't customize
             | your ERP for your business, but customize your business for
             | your ERP. You end up with a lot of "middleware" that
             | essentially adapts your operational systems into the format
             | needed by the ERP to do its job, and your staff will design
             | workflow processes specifically centered around how the ERP
             | works for things like closing the books or managing
             | inventory.
        
               | smichael wrote:
               | http://xbrl.squarespace.com aims at this problem, I think
               | ?
        
               | tomnipotent wrote:
               | This is for exchanging reporting data, not all the things
               | that lead up to that.
               | 
               | It can't tell you how to structure sales to account for
               | taxes across multiple countries, or how to accrue for
               | gift cards/liabilities, or recognizing revenue from
               | annual subscriptions, or deprecating assets, or
               | amortizing expenses. Each ERP and business will do this
               | in slightly different ways.
               | 
               | But what it can tell you is how to represent those
               | results when everything else is said-and-done.
        
         | chromatin wrote:
         | I dunno, I kinda disagree: I am not writing transactions
         | manually, they are written by my brokerage parser, bank
         | statement parser, blockchain parser, etc.
         | 
         | The reporting and analytics functionality of the ledger-likes
         | is AFAICT unrivaled, and is the REAL reason to use them (not
         | the ostensibly easy-to-use "plain text" general ledger aspect,
         | about which I agree with you)
        
         | roylez wrote:
         | Have you tried `ledger xact` command? This helps to create new
         | transactions based on previous ones. I have a small wrapper[1]
         | for this, namely "la", which enables me to do something like
         | "la coles 5" to create a new transaction like previous
         | supermarket transaction with the today as date, same from and
         | to accounts, and $5 as amount. If I want to change something,
         | it could be as complete as "la [YYYY.MM.DD/M.D/D] coles grocery
         | 5 credit". If someone has tens of transactions per day it is
         | very likely they are all similar and only little extra
         | adjustment is needed.
         | 
         | Also I use a credit card for most of my expenses, and there are
         | only a handful of bank transfers per month from my access
         | account. Every first day of the month I pull out last month's
         | credit card statement and log all the transactions. It usually
         | takes less than 30 minutes.
         | 
         | [1]: https://github.com/roylez/dotfiles/blob/master/misc/bin/la
        
         | slavoingilizov wrote:
         | 100% this. Collecting and validating data should be so easy
         | that you don't have to think about it. Otherwise I find I can't
         | stick to any solution/tool for too long. If discipline is
         | required, then it's too complicated.
         | 
         | This is why I've started looking into tools which automate the
         | data collection. In the UK (and EU more broadly), after Open
         | Banking got introduced there are many apps popping out which
         | basically connect to your accounts (Credit Cards, bank
         | accounts, etc.) and combine all data into a single place. Does
         | Plaid not enable this in the US?
         | 
         | It's not "100% accurate" but most enable you to do auto-
         | categorisation, smart reporting and budgeting as well. They are
         | not open-source but do much more than I'd ever be able to do
         | with PTA (not because it's not supported but because it
         | requires effort). Of the 2 bad solutions, they seem to be the
         | less bad for me.
         | 
         | Some example apps: Emma, Yolt, Lumio.
        
         | hiq wrote:
         | 1. PTA in itself does not provide you all the tools to validate
         | these, but it's low-level enough that you can implement any
         | validation you want on top easily, if you're proficient with
         | CLI tools. I don't think I would use it at the enterprise level
         | simply because they're less commonly used, but for personal
         | finances I find it sensible enough.
         | 
         | Which mistake do you think is more common with PTA than with
         | other programs?
         | 
         | 2. What exactly would not be sustainable with PTA which would
         | be with other programs?
        
         | nextaccountic wrote:
         | > Programs like QuickBooks and Xero don't just hide the GL
         | because they're being mean
         | 
         | What is the GL?
        
           | draebek wrote:
           | General ledger
           | 
           | https://en.wikipedia.org/wiki/General_ledger
        
         | jolmg wrote:
         | > One of the hard problems in personal finance is data capture
         | 
         | With hledger and vim, I typically search and copy a previous
         | similar transaction, then search and copy similar items. I have
         | a keybinding to change the date, so like 3\d changes the date
         | of the transaction I copied to 3 days ago. Overall, being
         | proficient in vim, capture takes very few keystrokes.
         | 
         | Since the files are plain text, I can easily e.g. list all
         | products I've ever bought with a `grep | sort | uniq` pipeline,
         | to check stuff like whether I put a product identifier under a
         | wrong account or used different identifiers for the same
         | product.
         | 
         | Also, since the files are plain text, I can track changes with
         | git. That gives me clarity over changes in the sense that I can
         | make a large change (e.g. reorganizing accounts) over
         | historical transactions and review the changes before
         | committing.
         | 
         | Regarding large changes, which I think is also a type of
         | capture, I can easily make them with `sed -i ...`, vim macros,
         | awk, etc.
         | 
         | > and input validation
         | 
         | After I've captured, running hb (which is a personal alias for
         | `hledger balance`) results in hledger raising an error if a
         | transaction is not balanced. I can also add an assertion `= X`
         | to the end of account changes to assert what the account is
         | supposed to hold after the change. The number comes from
         | physically checking the account, whether that's by checking the
         | bank app or opening my wallet and counting. hledger will raise
         | an error when an assertion is wrong.
         | 
         | > Programs like QuickBooks and Xero
         | 
         | Being unfamiliar with QuickBooks and Xero, how would these
         | programs do capture and validation better for me?
        
           | croo wrote:
           | This is already after the data capture part. The hard part is
           | to remember every little transaction I had until I have vim
           | at my hand. The only solution seems to be working more or
           | less is to take out my phone and type it as soon as the
           | transaction happened. And I won't try to use vim on phone
           | ever again..
        
             | mpyne wrote:
             | This is one of the reasons I use YNAB (for shared household
             | budget) and a Google sheet (for personal budget).
             | 
             | I usually just hold onto the receipt for whatever I do
             | until the end of the working day and get it entered that
             | night. But if a receipt or my pay app isn't an option then
             | I can enter the transaction right there on the phone before
             | I forget.
        
               | ethbr0 wrote:
               | Do you use the original or SaaS version of YNAB?
        
               | mpyne wrote:
               | Currently on the SaaS version. It's much slower than I'd
               | like on desktop web, truth be told, but it does the job
               | and the mobile app is pretty good.
        
             | jolmg wrote:
             | > The hard part is to remember every little transaction I
             | had until I have vim at my hand.
             | 
             | Most of the time, there's no need to remember. Just put the
             | receipt in your pocket, and when you get home you can
             | further postpone it by stacking it with other receipts on a
             | receipt spike. It's only the cash transactions that are
             | best not left postponed for longer than a day or 2, but if
             | you just scribble down the important bits on a scrap of
             | paper, you can postpone it like any other receipt.
        
             | andrepd wrote:
             | I use GnuCash. For card transactions I simply import my
             | bank statement .csv file every other week or so. For cash
             | transaction, I use the app on my phone, otherwise I just
             | forget how much I spent and where, by the time I get to my
             | PC.
        
           | smichael wrote:
           | > and input validation
           | 
           | Emacs users should look into Flycheck integration, eg
           | https://hledger.org/editors.html#flycheck-hledger . Real time
           | indication of parse and balance errors as you edit is nice!
        
       | qudat wrote:
       | It's so funny to see this post on HN. I recently took the plunge
       | and got rid of Mint for Beancount. I probably spent 10 hours
       | getting things set up. So far I really like being in full control
       | of the "database" via a composition of files. Even a database
       | feels too heavy-handed for my personal accounts. It was a lot of
       | fun to learn accounting terminology and methodologies like the
       | double-entry accounting.
       | 
       | The most annoying part of the process is being required to
       | download CSV files from each of my bank/cc/investment accounts.
       | 
       | I thought about building some APIs to be able to download this
       | data automatically but some of my banks do not have publicly
       | available APIs. That's hilarious to me because something like
       | Mint or Plaid can get API access to my bank transactions but I,
       | the owner the of the accounts, cannot.
       | 
       | Not only that, but you can only download CSVs for the last 2
       | years. Mint/Plaid can get the entire account history.
        
         | boulos wrote:
         | If you're based in the US, I would recommend ofxtools [1].
         | Anytime an institution supports "Download in Quicken", they
         | have an OFX endpoint that you can find via ofxhome.
         | 
         | [1] https://github.com/csingley/ofxtools
        
           | trepanne wrote:
           | Thanks for the recommendation, always happy to see people
           | getting use out of ofxtools.
           | 
           | Unfortunately, it's far from true that all institutions
           | supporting Quicken downloads can be found via ofxhome. That
           | list was originally sourced from parsing MS Money API, and
           | has been only sporadically updated in a manual case-by-case
           | fashion. Also ofxhome is set to go away pretty soon.
           | 
           | But we do what we can
        
           | bogwog wrote:
           | I used this a couple of years ago to create a script that
           | automatically imports transactions from my bank account into
           | my beancount ledger.
           | 
           | Unfortunately, only one of my banks provides OFX access at
           | all (for a monthly fee), and I learned I'm not disciplined
           | enough to keep up with the other banks manually.
           | 
           | Its annoying because I'm pretty sure the other banks do have
           | OFX services somewhere, they just dont provide it to all
           | customers, plus paying a monthly fee for the one bank that
           | does just feels exploitative.
           | 
           | A less reliable, but more accessible solution might be to
           | parse emailed bank statements, but those only go out once a
           | month, whereas OFX can show new transactions within
           | minutes/seconds.
        
             | qudat wrote:
             | The email solution is my plan. The banks/cc I use all have
             | transaction alerts so I plan on parsing my maildir to
             | automatically add transactions
        
         | Infernal wrote:
         | Plaid does not get API access to your bank account. Plaid logs
         | into the same interface you do and scrapes the data. It's why
         | account import in things like Mint, YNAB etc are so flaky.
         | 
         | EDIT: It seems Plaid has negotiated API access with some
         | institutions at this point, but historically has primarily
         | relied on screen scraping.
        
       | account-5 wrote:
       | As someone who "manages" there accounts in spreadsheets what
       | would be the advantages? I'm already downloading CSVs from my
       | accounts which I clean and import into a spreadsheet.
       | 
       | Also can someone link to what the actual text file looks like?
       | The format. I can't find a decent example, I just want to see
       | this human readable format, thanks.
        
         | smichael wrote:
         | Spreadsheets have lots of strengths. I believe one of the
         | difficulties is (a) managing an increasingly large number of
         | transactions over time, with (b) an uncertain number of
         | postings to (c) arbitrary accounts in a hierarchy. Though I
         | haven't tried myself, I suspect modelling a full double-entry-
         | bookkeeping General Journal in a spreadsheet just gets
         | cumbersome. Secondly, while certain kinds of calculations and
         | queries are easier in a spreadsheet, other kinds of queries and
         | ad hoc reports are easier with PTA tools. Thirdly (big one),
         | the plain text format lends itself to version control (good for
         | data integrity and auditing), scripting and integration, and
         | future-proofness.
         | 
         | An example of Ledger/hledger's main file format:
         | 2021-01-01 opening balances on january 1st
         | assets:checking         $1000  ; a posting, increasing
         | assets:checking's balance by $1000             assets:cash
         | $100             liabilities                $0
         | equity                 $-1100  ; each transaction must sum to
         | zero                  2021-03-05 client payment
         | assets:checking         $2000             revenues:consulting
         | $-2000  ; revenues/liabilities/equity normally appear negative
         | 2021-03-20 Sprouts             expenses:food:groceries  $100
         | assets:cash               $40             assets:checking
         | ; a missing amount will be inferred ($-140 here)
        
           | account-5 wrote:
           | I suppose the biggest barrier for me would be learning double
           | entry bookkeeping as I'm not doing that just now. I wouldn't
           | know where to start. Currently the above makes no sense to
           | me.
        
             | Jtsummers wrote:
             | The syntax above can be learned easily enough, but double-
             | entry boils down to: Each transaction shows both where
             | money goes and where it comes from, the sum should be 0.
             | 
             | Where it goes and comes from are "accounts", which may or
             | may not correlate to actual accounts like you might think
             | of in personal finance. There are 3 categories of accounts:
             | expenses, assets, liabilities. You own the second two, they
             | are your cash, checking, savings, brokerage as assets and
             | your mortgage, car loan, CCs as liabilities. Expenses are
             | where you spend money outside of your own accounts.
             | 
             | Before getting to expenses, you may have accounts like this
             | for your assets and liabilities:
             | assets:cash       $100       assets:checking  $2000
             | liabilities:cc   $-100       liabilities:car  $-10000
             | 
             | Whenever you transact your money goes from one place to
             | another, so a car payment may look like:
             | 2021-09-05 Car Payment         assets:checking    $-500
             | liabilities:car     $500
             | 
             | Positive means that that account gets the money, negative
             | it loses the money. Note that it sums to $0. If there were
             | an interest component we may do this:
             | 2021-09-05 Car Payment         assets:checking    $-500
             | liabilities:car     $400         expenses:interest   $100
             | 
             | _Expenses_ are not owned by you. They can be broad
             | categories or more specific. Maybe you have two residences
             | and utilities at both:
             | expenses:primary:electric:edison:1234 -- your account
             | number       expenses:secondary:electric:pandg:1234
             | 
             | I wouldn't go that far, I might do:
             | expenses:house:electric:primary
             | expenses:house:electric:secondary
             | 
             | But the choice is up to you, both work. Think of them as
             | hierarchical tags.
        
             | hiq wrote:
             | I'm not that familiar with the theory, in my case I just
             | got started and now I'm used to it. Just to take the last
             | example:                   2021-03-20 Sprouts
             | expenses:food:groceries  $100             assets:cash
             | $40             assets:checking
             | 
             | This means you took 140 from your checking account,
             | withdrew 40 that you now have in cash, and spent 100 in
             | groceries. Does that still make no sense?
        
               | account-5 wrote:
               | Honestly no. When I first read it I thought you'd spent
               | 140 on sprouts which I thought was excessive, but each to
               | their own.
               | 
               | Even though you've explained it I'm still struggling to
               | make sense of it. The 3 indented lines don't related at
               | all in an intuitive manner at least for me.
        
               | bokstavkjeks wrote:
               | I don't think the file format above is especially
               | conductive to learning. In my experience, most people
               | learn double-entry bookkeeping with T accounts; debit is
               | on the left, credit is on the right, and total credit has
               | to equal total debit.
               | 
               | If you're interested, this seems like a fairly decent
               | guide: https://www.open.edu/openlearn/money-
               | business/introduction-b...
        
               | cagey wrote:
               | A possible source of confusion is that in this context,
               | "Sprouts" is likely the name of a supermarket (not a type
               | of food).
        
               | chromatin wrote:
               | Understandable, they are using transaction balancing /
               | elision
               | 
               | What they should be showing beginners is:
               | 2021-03-20 Sprouts             expenses:food:groceries
               | $100             assets:cash               $40
               | assets:checking         $-140
               | 
               | How's that?
        
             | shubhamkrm wrote:
             | I found the GNUCash manual to be an excellent introduction
             | to double entry accounting for people with no accounting
             | background. Even my ledger accounts are setup in the same
             | way.
        
           | smichael wrote:
           | Another advantage over spreadsheets I forgot: more guide
           | rails and more common ground (shared practices, howtos,
           | support) with other users. Spreadsheets are a tabular report
           | construction kit, PTA is an accounting system construction
           | kit.
        
         | themmes wrote:
         | Here you will find an example and more format details
         | https://plaintextaccounting.org/quickref/#h.8v2r9qqwt9f8
        
           | account-5 wrote:
           | Cheers mate.
        
         | djhworld wrote:
         | I think the biggest advantages are its just a text file, so you
         | can use version control.
         | 
         | Additionally spreadsheets group logic and data - whilst this is
         | very flexible csn get hairy if you are not disciplined.
         | 
         | Beancount files are just text, and the logic part comes from
         | the beancount engine so there is a clean separation.
        
           | account-5 wrote:
           | I fully appreciate text. I use plain text with minimal
           | formatting for as much as I can. I tend to save my yearly
           | spreadsheets as CSV for storage as after the year they are
           | not live documents.
           | 
           | My system is obviously not fully tracking everything / double
           | entry. It's just a log transactions on an account. I have a
           | sheet for each account.
        
       | felixc wrote:
       | I've written a series of guides on how to use these tools in
       | practice, here: https://felixcrux.com/blog/ledger-practices
        
         | teitoklien wrote:
         | Hey felix , Your blog helped me tremendously a few months ago,
         | to get better at managing my ledger files.
         | 
         | Thanks a lot for all of your recommendations !
        
       | matheusmoreira wrote:
       | What is the best way to use ledger on my android phone? I need to
       | be able to account for every transaction I make immediately after
       | they happen. Sitting down and writing all this stuff into a file
       | at the end of the day is just too boring.
       | 
       | Anyone have experience with the apps mentioned in the site?
        
         | subash_8848 wrote:
         | I use Spendee to track expenses. They are using firebase so its
         | quite easy to get your data with a script. I then use the
         | expenses csv file along with other journal files. Expenses are
         | most boring to enter and Spendee solves that nicely.
        
         | shubhamkrm wrote:
         | I use Cone and Termux on my android device. My ledger journal
         | is synced to a private git repo. When I'm away from my laptop,
         | I just enter the transaction in cone, and push it via termux at
         | the end of the day.
         | 
         | It does have some limitations though, as cone is append only,
         | it cannot edit transactions. For this, I've had to fire up vim
         | a few times in Termux.
         | 
         | I have also created a few scripts using ledger, gnuplot and
         | termux-open to generate graphical reports, and have exposed
         | these via termux widgets. This gives me a one-click access to
         | real time reports on my phone.
        
         | smichael wrote:
         | https://hledger.org/mobile-apps.html
         | 
         | PS a little daily-ish data-entry-and-reconciling ritual, with a
         | pleasant tool setup, can be quite satisfying! I actually look
         | forward to it. (That right there is part of my PTA success
         | story. I used to suffer a lot of stress around all things
         | finance.)
        
       | djhworld wrote:
       | I mentioned this in another HN post from yesterday about
       | beancount, one of the tools that uses this approach.
       | 
       | My beancount file is nearly 3 years old now and I love it. Maybe
       | it's overkill for personal finances, but I've tried countless
       | other PF tracking tools and online services and none of them have
       | the flexibility you get from tools like this. For example,
       | tracking RSU vests, my house purchase etc.
       | 
       | Combining beancount with Fava gives you a nice visualisation tool
       | as well which auto updates when it notices the underlying
       | beancount file has changed.
       | 
       | I edit the file in Emacs using the beancount-mode, it's actually
       | the only thing I use Emacs for but I have a bunch of custom elisp
       | functions that add things to the file whilst I'm editing it.
       | 
       | I don't bother with any auto txn importers, which does make it a
       | manual process but it's like 10-15 minutes a week at most.
       | Additionally most of my purchases are generally quite rote so a
       | lot of them are just copy/paste from previous txns and modify the
       | date and amount. This might not scale if I have a partner, but
       | for now just Emacs + vim keybindings + a few custom elisp fns + a
       | little patience works for me!
        
       | avodonosov wrote:
       | I used ledger / cl-ledger for some time, but they do not
       | correctly support multi-currency accounting, which is a show
       | stopper for me.
        
         | smichael wrote:
         | Do you mean, in the sense of
         | https://hledger.org/investments.html#a-more-correct-entry ?
         | 
         | balancednoautoconversion validation may be relevant, if so
         | (https://hledger.org/hledger.html#strict-checks)
        
           | avodonosov wrote:
           | I mean I want to log income, spendings, exchanges in multiple
           | currencies (or commodities), and then be able to see reports
           | in a single currency - my net worth, my income over period of
           | time, capital gains / losses.
           | 
           | Leger printed nonsence for such roports.
           | 
           | I used to pay taxes in multi currency environment, and know
           | the official rules here, in Belarus, how to calculate the
           | indicators when converting to a single currency.
           | 
           | Also I once came across US guideline for that - the same
           | simple principle.
           | 
           | So I guess that's a very standard aporoach in accounting.
           | 
           | Ledger does something strange instead.
           | 
           | I remember also some large blog post was circulating, where
           | the author "explains" how to do accounting in two currencies,
           | in some overcomplicated way, that only works for two
           | currencies. This link was usualy shared between people as an
           | ansver to the multi-currency question.
        
             | smichael wrote:
             | > I mean I want to log income, spendings, exchanges in
             | multiple currencies (or commodities), and then be able to
             | see reports in a single currency -
             | 
             | All the major PTA tools support this - perhaps the chat
             | could help ?
             | 
             | > my net worth, my income over period of time, capital
             | gains / losses.
             | 
             | The first two are easy, the third is more complicated but
             | also possible - unrealized gains at least, I forget how
             | easy realized gains are in the various tools, it might not
             | be fully automatic.
        
               | avodonosov wrote:
               | The supoort existing was not practical, and I doubt it
               | changed since I tried.
               | 
               | If you can, lets chat, thank you.
        
               | smichael wrote:
               | By all means - see you in one of the chats!
               | https://plaintextaccounting.org/#mail-listsirc
        
       | [deleted]
        
       | koevet wrote:
       | Long time beancount user here: in case anyone wants to give
       | plaintextaccounting a try, I have created a semi-automatic
       | transactions import tool for beancount, which categorizes
       | transactions imported from CSV files: https://github.com/luciano-
       | fiandesio/beanborg
        
       ___________________________________________________________________
       (page generated 2021-09-05 23:02 UTC)