13 ms·
Show HN: Transity – Plain Text Accounting
- airstrike 8y ago+1 for YAML. Thanks for not using JSON. Now I want to see someone take, say, Tiffany & Co's latest 10-Q⁽¹⁾ and run it through this. __________ ¹ https://www.bamsec.com/filing/9824618000198?cik=98246 https://www.bamsec.com/filing/9824618000198?cik=98246
- strkek 8y agoThe article doesn't say which version, though.
- ericsoderstrom 8y agoWhy do you prefer YAML to JSON in this context?
- sushisource 8y agoNo judgement, but can someone explain to me the use case for this sort of thing? I'd imagine for anything other than the simplest stuff, you're going to start using something a bit more powerful, and for the simple stuff - who with the skills and knowledge of this type of tool really needs to do small time pocketbook budgeting?
- LVB 8y agoI'm not sure what your point of reference is for the question, but at least for personal finance tracking I think such tools work well. I have a long history with apps such as Quicken and Mint, and some years ago I migrated to plain text (https://www.ledger-cli.org/ https://www.ledger-cli.org/) and have not felt any lack of functionality. I think the type of person who would even consider these types of tool also tends to value the flexibility of being able to get data in and out of the system however they want.
- hannibalhorn 8y agoI can't speak to Transity, but I use HLedger for my entity (nothing fancy, just a single member LLC.) I can keep my ledger in git, I don't need to pay for or even learn to use QuickBooks, I can quickly write a script to import data from basically anywhere, and I can use all the standard tools in my toolbox (grep, diff, python) to visualize and work with the data. I'm sure mainstream accounting programs add value as the organization grows, but I spent a few minutes playing with Quickbooks and I was ready to just use Excel when I discovered the whole plain text accounting thing. And it's been working well for me.
- nodesocket 8y agoI also have a single member LLC, but can't understand the advantages of using a cli tool over Quickbooks. Beyond the obvious transactions list and graphs of income and expenses, Quickbook self-employed estimates quarterly taxes and even allows me to make payments to the IRS directly via eftps.gov. At tax time, it exports all transactions tagged and categorized to TurboTax.
- ams6110 8y ago... and sends a copy of everything to Intuit.
- deleted 8y ago[deleted]
- brianjoseff 8y agofrom where/how are you getting your data in?
- bsilvereagle 8y agoI'm not the parent, but it's fairly straightforward to get data into the ledger format. I have written a handful of Python scripts to convert CSV credit card statements (Chase, credit unions, etc) to ledger. Additionally, pdfquery can be used to extract data from PDF statements.
- djhworld 8y agoI use beancount for personal finances. I've only recently moved to it in fact, previously used tools like YNAB and so on, but this approach seems to be a bit more flexible, especially around managing investments etc I think you need to have the mindset for it, I've always reconciled my transactions and like to keep an overview of everything, so people saying it's tedious etc doesn't wash with me, in an odd way I sort of enjoy it
- erikb 8y agoProbably an interesting read for you: https://docs.google.com/document/d/1e4Vz3wZB_8-ZcAwIFde8X5CjzKshE4-OXtVVHm4RQ8s/edit https://docs.google.com/document/d/1e4Vz3wZB_8-ZcAwIFde8X5Cj...
- Immortalin 8y agoPivot and build an accounting API! If you are interested, drop me an email, I would love to discuss more about fintech (I run a fintech startup)
- stevievee 8y ago"Simple - No more confusing debit / credit / asset / liability mumbo jumbo" It is just "mumbo jumbo" to you because accounting/finance is not your area of expertise.
- chad_oliver 8y agoSure, but that just means they're creating a product for a specific market -- one whose area of expertise isn't accounting or finance. This is something we should encourage, rather than nitpicking the wording.
- stevievee 8y agoI am not nitpicking at all. All of the things the author said are "mumbo jumbo" are fundamental to keeping proper books. Proper bookkeeping is also regulated so it is not just my opinion.
- chris_wot 8y agoAgreed. If you haven't spent the time to understand what debits and credits are in a double-entry book keeping system, then you really shouldn't be trying to do accounting.
- kungtotte 8y agoThere's a large use case for simple personal bookkeeping that doesn't require double-entry accounting. Most people have some fixed recurring bills (insurance, rent, subscriptions, etc.), some variable recurring bills (utilities, etc.), standing payments like savings, and monthly spends like groceries. For them (myself included) something that lets you simply input recurring expenses and your income and show a running tally is pretty much all that's needed, add some simple transaction tracking and you're there. Basically all you really want is two things: 1) Given $2000 at payday, how much of that is available to spend if $X is going towards known expenses. 2) The day before payday I have $Y left in my account. Where did I spend the $2000-$X?
- marcrosoft 8y agoI think throwing out the terms credit/debit is a mistake. Everyone operates on GAAP and we shouldn't deviate.
- stevievee 8y agoDefinitely agree and I think it would have usable if it kept debits/credits.
- hosh 8y agoNot only that, there are some really useful properties of the double entry system: https://arxiv.org/abs/1407.1898 https://arxiv.org/abs/1407.1898 That's defining a group called the Pacioli Group. One thing that is relatively easy to do with this group is to quickly verify consistency in the transactions. That is something you lose with a single-entry system.
- adius 8y agoTransity isn't a single entry system. By using transactions to model financial flows it implicitly enforces that the amount is credited to the "from" account and debited to the "to" account. Therefore it's basically double entry by design. I'm really interested if someone can show me a use case where this system is less powerful / safe than a classic double entry system.
- gamblor956 8y agoWhat you've described is literally not double-entry. Double-entry is based on the concepts of two accounts being modified by a related set of similarly-sized transactions (i.e., the credit and debit actions). The idea is that you can separately replay the sets of transactions for each account and at the end they reconcile (i.e., balance) because the accounts are modified separately. You've presented a system in which one transaction modifies 2 accounts. If there's an error in the code, you've got no way of knowing it without manually checking the calculations by hand.
- 8y ago
- qengho 8y agoThis is great!
- lquist 8y agoCLI tools also have the advantage that their developers don't have to waste their time building and maintaining a useless GUI, but can instead use the time to improve the tool itself Maybe it's just me, but I stopped reading here b/c this language struck me as unnecessarily antagonistic. Just some feedback.
- jeremymcanally 8y agoWell, it's also non-sensical. A CLI "interface" needs a lot of thought and work behind it, too, unless you want to end up loathed by your users as something like git is.
- mikeyjk 8y agoI don't think it is fair to say that git users loathe it overall. I enjoy using git, is this not a common experience?
- staticautomatic 8y agoI think it would be fair to say that a lot of people have a love/hate relationship with git.
- p1necone 8y agoNope, I enjoy using it too. It might have a learning curve but afaic for a tool I use every day in my full time job productivity == good ux.
- madhadron 8y agoI regard the command line as a last resort if I can't do something in SourceTree. After spending time with a quality source control client, any command line interface feels like wading through quicksand.
- grimgrin 8y agoThis is likely an insult to git but it’s really similar to vim in that regard. After using ST2 or TextMate for so long, many people aren’t interested in learning (remembering?) how to use vim’s modals/commands. A lot of people probably did start with SourceTree or a git plug-in in Visual Studio etc My git workflow is very much tied to aliases. Customization is a hot thing for many people (but really you should probably read the fugitive.vim docs in their entirety)
- toomim 8y agoHm, the article asserts that Ledger doesn't have tags: > Sub accounts vs. Tags > But what if the expense is part of another category as well, like expenses for your vacation? Well, you'd be at a loss. There is no good way to model this in ledger-likes without getting really hacky. But that's not true. Ledger has tags. You specify a tag with: :tagname: For instance: 6-5-2018 Gave food to Bart Simpson, while on vacation Expenses:bart 1 orange ; :vacation: Assets:food
- _emacsomancer_ 8y agoAnd Ledger has an [Emacs mode](https://github.com/ledger/ledger-mode https://github.com/ledger/ledger-mode).
- yegle 8y agoAlso worth check out http://plaintextaccounting.org/ http://plaintextaccounting.org/ Personally I don't like the yaml-like syntax. I use beancount myself, and with fava (https://github.com/beancount/fava https://github.com/beancount/fava) as the UI.
- erikb 8y agoThis is what I was always looking for. Also loving the approach of having the UI separated. I also don't like the yaml format for the simple reason that not all necessary information is in one line. No idea why a transaction can't be written into one line. Also for people who love plain text, one can checkout the banking format (comes from German banks, so most info is only available in German but here's a summary): https://en.wikipedia.org/wiki/FinTS https://en.wikipedia.org/wiki/FinTS Gnucash should also support it, but with my bank it always fails. It's certainly not a format I would use for local storage, but it's a good source of structure and edge cases when one thinks about developing or modifying an existing format.
- bobjordan 8y agoThe Beancount/Fava combo is just fantastic. Awesome plugin system, multi-currency, powerful but simple sql-type query language, extremely well tested, active developers, python.
- Jtsummers 8y agoSo I like the idea of using YAML versus ledger's format (very slightly, I'm used to ledger's format so it's not a pain point, but YAML offers some ways to make things a bit easier especially for newer folks). However, I could see a fairly trivial mapping between YAML and Ledger being developed by quicker programmers than I in less than a weekend (there's already a way to spit out s-expressions from ledger). hledger makes some strong assumptions (IIRC) about your accounts being in assets, liabilities, income, equity, expenses. But I may be thinking of beancount for that. If I'm remembering correctly, hledger will let you do whatever you want, but some of their built in reports (like balance sheet) assume liabilities and assets as top-level accounts. However, ledger allows you to do things like: personal:expenses:... personal:assets:... club:expenses:... wife:expenses:... And you can specify what the prefix should be for all transactions in a region like: apply account personal 2018/06/05 Gym Expenses:Gym 54.00 USD Assets:Checking end apply account So everything in there is now in my personal set of accounts, eliding the prefix (which can become cumbersome). If you use this† as an example, putting things into separate code blocks via org-mode makes it trivial to conduct accounting for multiple entities. Query: Does Transity allow for money to come from or go to multiple places? Suppose I'm traveling for work and need a more detailed accounting of my spending (they don't reimburse alcohol, perhaps): 2018/06/05 Place with good cocktails ; 50 USD is on me Work:Expenses:Travel:Food 20.00 USD Work:Expenses:Travel:Drinks 50.00 USD Liabilities:Work:CC (with a note that I have to cover that 50 USD when paying off the card next month). I do this sort of thing just on regular shopping. I may spend a bunch of money at the store that's gifts for my girlfriend along with clothes for me. I like to know how much I've spent so I'll split it (this is more a personal curiosity thing, along with trying to stick to a budget). I don't want to have to enter a from/to pair that's redundant (repeating the same from) for things I split like this. Additionally, there's no need for this "perspective" aspect. If I move money to an account, its balance goes up. If I move money from it it goes down. If I am managing my girlfriend's accounts in ledger (or she is, but it's pushed into a common household file): 2018/06/05 GF ; lunch last week Jared:Assets:Cash 10.00 USD GF:Assets:Cash In the report hers looks like it went down, mine like it went up. There's no need for me (if I'm managing multiple entities) to bother treating that 10 USD like it came from my income account. It is income, but it came from the GF's cash account. The income account is really only needed when you don't control or track the accounts money comes from. Your job, a gift from an uncle, lottery winnings, etc. Same thing with a business. If I own my own LLC and "pay" myself a salary out of it (I'm assuming I also pay out my health insurance or something in this, I don't know, I don't do payroll), let's say: 2018/06/05 Paycheck Jared:Assets:Checking 2000.00 USD Jared:Expenses:HealthInsurance 100.00 USD JSLCC:Expenses:PayrollStuffs 200.00 USD JSLLC:Assets:Checking In all the reports, everything looks right. It's done, no need to worry about perspectives. † https://orgmode.org/worg/org-tutorials/weaving-a-budget.html https://orgmode.org/worg/org-tutorials/weaving-a-budget.html
- madhadron 8y agoThere are several things wrong here: 1. The author doesn't understand bookkeeping. 2. The author doesn't somehow believes that emulated teletypes are a good substrate for building user interfaces. 3. The author has spent significant time writing a bookkeeping tool for his business instead of doing something that will move the business forward. If you're thinking about writing an open source accounting program, spend time mastering GnuCash first. If you feel like you can't do what you need with that and cannot possibly extend it in the way that you need, then write your own.
- deleted 8y ago[deleted]
- adius 8y ago1. Feel free to back up your claim, otherwise I'm not sure how you come to that conclusion 2. It has a user interface … just not graphical 3. Well, I guess we just have different opinions on where forward is 4. I've been working with GnuCash, Ledger and Hledger and I've written several scripts to extend them (e.g. to support timestamps and not just dates, which shouldn't be asked too much for an accounting tool ), but it was always a nasty hack and so I wrote my own. Just like you said.
- bokstavkjeks 8y agoI can only answer 1 from the perspective of a non-US, very junior, auditor with little experience, but I'll try. I don't see how it handles complex transactions very well. A simple example would be VAT. Assume a 25% VAT (which is standard here). If you sell a product for $1000 cash in hand the relevant transaction would be: C: Revenues $800 C: VAT payable $200 D: Cash $1000 An even better example would be payroll which can involve 5-15 different ledger accounts for a single employee. The next bit can probably be solved through the notes part, but how would you attach invoices and documentation with Transity? How do you do accounts payable or receivable with it? In addition to the balance sheet sum, the accounts pay/rec should also show the balance for each individual customer and supplier.
- 8y ago
- billfruit 8y agoAfter trying to use GNU cash for some time, I got the feeling that a personal accounting app needs to be a web based service, to enable it to be used while on the move/travelling, because I found myself building up a huge backlog of entries to be made in to the system in these situations. After about a month of use, I gave up, since the overhead of jotting down transactions and later entering into the system. I doubt GnuCash or any accounting system like that could possibly have integrated apis for pulling in transaction details from every bank, in every country of the world, atleast presently. Now a days I use a smartphone app called walnut, which mines your SMSes for transaction data and builds up a ledger by itself, without the need for interfacing with banks directly, because in my country atleast all banks provide SMS trails for transactions.
- jessedhillon 8y agoI work for Plaid. You can sign up and get a dev token that has sufficient permission to access your own bank accounts. Then you can download your transactions and format them for GNU Ledger or whichever other format you prefer.
- billfruit 8y agoDoes it work for any bank in any country?
- jessedhillon 8y agoSorry, we only cover US and Canada right now.
- cup-of-tea 8y agoI've written a tool that can import data from my various bank accounts and credit cards. It's semi-automatic. Uses machine learning to guess the correct account but I can quickly change it. I then put the finishing touches on by hand.
- djhworld 8y ago
- athrun 8y agoI can only speak for me, but modeling financial flows in terms of transactions and not accounts is much more intuitive than the classical alternative. I'm a long time Buxfer user, which also works like this. It's not that I don't understand double entry bookkeeping, I've used GNUCash for a long time before moving away. It is indeed very powerful and flexible, but it always was too much of a chore to maintain and next to impossible to get other family members to contribute. I'm not sure this "transaction model" would be appropriate for business accounting, but IMHO it works very well for Personal Finance.
- kungtotte 8y agoI played around with the buxfer demo a bit, and one thing wasn't really clear to me: is it possible to schedule fixed payments? There was some kind of reminder system, but does it automatically add the transaction or will I have to log in to manually add those transactions? Simple recurring transactions is like the one feature I really need from a tool like this.
- jgalvez 8y agoIf you want something way simpler, http://galvez.github.io/plainbudget http://galvez.github.io/plainbudget :)
- csomar 8y agoI'm not sure why the OP is getting s%%t from the community. He built a simple application, probably out of love of software development. It is not complete or perfect. It is also probably not the best use of his business time. But we do waste time on other stuff too. This CLI app could be useful to me for a subset of accounting I do. Yes, it won't be able to track VAT accounts. It won't amortize my expenses. But if I needed that for a critical business I'm running, I'd not use a hobby project. The CLI is useful. Double Entry bookkeeping is useful but as things scale it gets very confusing even for the best of accountants. This program is simple and can give you a solution if you are looking for very simple bookkeeping.
- eXpl0it3r 8y agoYou can't expect to just get happy feedback, especially from a rather critical thinking community such as HN and when you then write dismissively about stuff, you shouldn't be surprised when it's held against you. > CLI tools also have the advantage that their developers don't have to waste their time building and maintaining a useless GUI, but can instead use the time to improve the tool itself. It's fine if you like CLI apps and find it painful maintaining a GUI application, but it's not helpful to write it as a general statement. CLI "GUI" tools also require quite a bit of work and I'd claim that an experienced GUI developer will spend less time on creating a GUI app, than the author had spent to get their CLI "GUI" app display as wanted. > It made sense in former times as this layout makes it easier to add up the amounts by hand, but not in times of computers. Double booking keeping isn't just a relic from the past. There are big benefits to it and just because it doesn't fit into simple account keeping, doesn't mean we can just pretend that it's useless, because computers! In summary you simply should not write your opinions as if they were facts. You can do so if you want, but then you need to be prepared to get some critical feedback.
- Bromskloss 8y agoWhat are the benefits of double-entry bookkeeping?
- eXpl0it3r 8y ago
- joyinsky 8y agoBasically the problem here is that the author didn't care even a little to understand why accounting is done with a double entry system. Basically what he was trying to do here was a expense and income administrator with tags. That it's just a part of what bookkeeping and accounting is. Nice try. But you can't replace what works and what has been done for reliability and confidence since 1400 at least by the masters of trade.
- sly010 8y ago> You can't replace what works and what has been done for reliability and confidence since 1400 at least by the masters of trade. I am not sure that is true. Isn't the world full of examples of quite the opposite? Especially because it's 1400 years old an because it was created for pen an paper work. We have computers now. e.g. It used to be that companies have a handful of yearly profit/loss accounts and every year they "close the books" by transferring all balance to first profit/loss accounts then to equity. The financial year then starts with 0 profit an 0 loss. Afaik nobody does this anymore. Today you just keep all accounts running (don't "close them) and you generate repots by selecting a date range and let the computer calculate profits and losses for that range. Besides, most commercial software already hides debit and credit from you. I would risk that most accountant don't know their debits and credits, it's just one of those things you learn at accounting school before you start working in the industry. I agree one should not write an accounting system without understanding the full details and history of the domain, but I disagree that 1400 year history proves anything. In fact even after reading through the Pacioli Group article I still don't see the advantages. It's only advantage is that it makes it harder to make a mistake on paper.
- bokstavkjeks 8y ago>I would risk that most accountant don't know their debits and credits I've worked in accounting and this is just not true. The ledger is stated in debit/credit and all transactions are done in debit/credit. Even if modern accounting software can automate some of it it still requires the accountant to verify the transaction. Hell, most accountants I know even draw up good ol' T-accounts on paper every once in a while to understand the larger and more complex transactions. I'd think you'd be hard pressed to find an accountant that doesn't know their debit and credit. An accountant that doesn't know their debits and credits is like a software developer that only knows Scratch. Most commercial software doesn't hide debit/credit, and if it does, you should run away as fast as you can. How do you produce the required documentation for your auditor if the software hides debit and credit? EDIT: To continue a bit. >It used to be that companies have a handful of yearly profit/loss accounts and every year they "close the books" by transferring all balance to first profit/loss accounts then to equity. The financial year then starts with 0 profit an 0 loss. Afaik nobody does this anymore. Today you just keep all accounts running (don't "close them) and you generate repots by selecting a date range and let the computer calculate profits and losses for that range. All companies still do this. It's part of the closing entries at the end of the FY. It's not just that the FY starts with 0 profit and 0 loss, but that that is the entire point of the financial statements. A company has three financial statements: the balance sheet, the income statement, and the cash flow statement. For this example, only the income statement and the balance sheet are relevant. The balance sheet can be seen as a snapshot of a company. It shows what the company owns (assets) divided into short- and long-term assets, as well as how they paid for it (liabilities and equity). The concepts that it balances assets + liabilities + equity = 0 (debit is positive and credit is negative) is the foundation for the balance. The income statement shows a company's results over a given time frame, usually a year. You can consider the balance sheet permanent and the income statement temporary. Consider a company with the following results per 31.12: assets: $10.000 (d) liabilities: $7 500 (c) equity: $500 (c) net revenue: $5.000 (c) costs: $3.000 (d) profit/loss: $2.000 (c) It's clear that the entire ledger balances per 31.12 as the sum of debit is equal to the sum of credit accounts. We also see that the company owns $10.000 worth of assets which is mainly paid for through debt, and that they have a profit of $2.000 since the profit is credit. As the income statement is supposed to reflect the performance over a given period and the balance is supposed to balance, the solution is to transfer the profit to equity to record the profit in the (permanent) balance sheet and reset the (temporary) income statement so that they can record their next fiscal year. To do this they record debit profit/loss $2.000 and credit equity $2.000. It's also not just a matter of recording the entry, which is fairly easy on modern accounting systems, but as it involves the distribution of profit (and touching equity for that matter) it typically needs the signature of the board. I was an external auditor and when we did the closing entries for our clients we would require the CEO's or chairman's signature on a printed version of the final entries. > I agree one should not write an accounting system without understanding the full details and history of the domain, but I disagree that 1400 year history proves anything. Accounting isn't just a field that has had 1400 years to develop methods to solve the problem in the domain. It's a field that has had 1400 years to build regulations and exceptions. It's also a field which requires a lot of individual judgement. Take, for example, VAT. Here in Norway, the actual VAT law text is about 10% of the text in the handy VAT exceptions and judgement calls book we had in the office. Writing accounting software that is actually useful for an extended period of time is incredibly difficult due to how accounting laws change all the time. Double the effort if you want the software to make tax returns as well. The company that developed the software we used had personal relations with almost all of their customers and would ask for feedback all the time. They probably shipped three versions during the busy season I was there. I'm admittedly a fan of double-entry bookkeeping as it's conceptually easy (once learned) to map out complex transactions on a piece of paper. 99% of accounting is bog-standard, but that last 1% is complex as all hell. It can't really be ignored either as it can end up costing you or your client a significant amount of money, or even jail time. I can't really state specifics, but I had a client whose bookkeeper failed to stay up to date on a very specific subset of a rather specific law which ended up costing the client millions in extra taxes. To put it in perspective, they suddenly had back-taxes for more than their company made in a year in revenues. This change was so specific that there wouldn't have been any consequences if they had done it a few weeks earlier. I'm rambling a bit here, but the point is, if you want to write a new type of accounting software, be really sure you know what you're doing.
- Hello71 8y agoeveryone is complaining about the accounting here, but I just want to say that 100 FONT WEIGHT AT #666 ON WHITE IS NOT AN ACCEPTABLE CONTRAST RATIO FOR BODY TEXT, especially if you do not provide your own font. even on a 1920x1080 IPS display with 1.1x scaling, using my preferred font, Noto Sans, font-weight 100 is extremely difficult to read for long stretches. DejaVu Sans's 100 is slightly thicker, but is still not acceptable for body text at that color.
- Uplink 8y agoTHANK YOU! I had the ideas used in this project in my head, but I've been putting off the work forever now. I LOVE YOU FOREVER for using transactions as the central operation rather than double entry accounting, and I love you even more for adding the ability to tag transactions. I can not put off work for a web interface instead, which is a lot less work to put off :) I haven't tried it yet, but it's now high on my list for when I get home from work.
- JustSomeNobody 8y ago> If this looks (and sounds) confusing or too complicated, you're not alone! It made sense in former times as this layout makes it easier to add up the amounts by hand, but not in times of computers. Math predates computers, let's just stop using that too! Double entry is not that complicated and computers or not, it just works.
- perfunctory 8y agoI have a question for people who understand accounting. Isn't the reason for debit/credit split the fact that negative numbers were not yet invented/widely-known at the time? Would accounting look different if it was designed today?
- avodonosov 8y agoI tried to use Ledger, but it fails to handle multi currency ac ounting properly. Is the Transity well suited for that?
- fiatjaf 8y agoThis is amazing. Thank you for making this. I agree: account-based accounting is not the perfect form, transactions can be much clearer. People here are suffering from status quo bias.
- Jtsummers 8y agoTo be clear, most accounting tools still have you recording transactions in a journal (including ledger-cli, the one they were specifically comparing Transity to). Money moves between accounts, but you record it as transactions showing the from and to information. The accounts are the things you want to review after you record a transaction, to ensure balances are correct (validate your checking account with what the bank says it should be) and to understand your financial situation (current net worth and cash flow).