6 ms·
Show HN: Double-entry accounting based personal finance app
Hello HN! I am Aswin Mohan, full-stack mobile + web developer and I built PaperMoney(https://getpaper.money https://getpaper.money). PaperMoney is a double-entry accounting based personal finance app. It can help you keep track of your expenses, assets, liabilities and your net-worth. It is based on the command-line tools beancount and ledger.
I had been using beancount to track my expenses for over two years. The plain-text accounting and reporting with fava was great, but I wanted a mobile based app to keep track on the go. Looked around existing solutions but everything fell short when compared to beancount. Also the major apps were not available outside the United States and only supported the dollar. They were based on assigning categories to a list of transactions which I found lacking coming from double-entry accounting. So I created Paper Money. It's based on double-entry accounting, you can add your chart of accounts and add balanced transactions. We'll use this to calculate your net-worth and the balances in your accounts.
It's built using React Native for the frontend and Elixir and Phoenix on the backend. We have support for both Android and iOS. I have plans to add automated account syncing and automated expense tracking in future versions.
The target audience currently is someone who is familiar with double-entry accounting but looking for a hosted mobile version. The future versions will be focused on more mainstream customers of personal finance apps, which means making the app more accessible for people without prior experience with double-entry accounting.
I am available at aswin@getpaper.money if you have any questions or querires, and excited to hear your feedback!
Links:
Website: https://getpaper.money https://getpaper.money
IOS: https://apps.apple.com/in/app/papermoney/id6737713983 https://apps.apple.com/in/app/papermoney/id6737713983
Android: https://play.google.com/store/apps/details?id=com.papermoney.app https://play.google.com/store/apps/details?id=com.papermoney...
Video Demo of the App: https://www.loom.com/share/40cf50afe33f4e1cb4fa3e749c19a2e3?t=34 https://www.loom.com/share/40cf50afe33f4e1cb4fa3e749c19a2e3?...
- apatheticonion 2y agoNit/general rant about finance management products: awesome idea but I do my finances on a computer with a keyboard, mouse, large screen and copy/paste capabilities that don't require a microscope. I could be wrong but it does not appear that this offers a desktop/web client which makes it DOA for me. It seems like so many finance applications target mobile devices which is a great place for reviewing data and making small modifications but the worst place for the substantial data entry required for managing personal finances. I use parsers to normalize statements into CSV format, pipe that into a SQL database then query/represent it in Google sheets - I still haven't found a better way to do it. I don't think that would work on this app given I don't have access to any tools on a mobile device.
- PeterZaitsev 2y agoIt would be great for Gnucash to get a competition I'm not sure why Mobile Only approach though as most complicated transactions do not need to be dealt with in real time and I think much more conveniently handled on Desktop
- MortyWaves 2y agoWhat does your schema look like? Either out of paranoia or naivety I feel that this is actually not such a simple task. The variety of formats and tools out there plus things like “double entry accounting”, makes me think that the database design would also need to be thought about deeply.
- apatheticonion 2y agoThe schema is pretty straightforward to be honest. I have one table that covers transactions: id, date, date_settled, currency, bank, account, account_type, reference, credit, debit, account_balance, total_balance Dates are in ISO UTC, I have several bank accounts across multiple countries so it's helpful to track currency and bank. Credit cards are just an account. Anything additional that I might experiment with (like post processing transactions and assigning tags) I do in additional tables that relate back to the original transaction's PK. I have additional tables tracking my adventures trading stocks/forex and another one for assets. I wanted it to be serverless because of cost/convenience so I host the DB using CloudFlare's D1 database. I have a CloudFlare worker that takes a POST request accepting raw SQL, executes the query and returns the result as JSON. Basically a crappy firebase implementation where the client does the work. Obviously this is not safe for a production application, but I'm the only user so it's fine. I wrote a little web frontend to help with data entry and complete tasks like parse bank statements - which, at least in Australia and New Zealand, are distributed as PDF files. The banking sector is in the stone ages here. Here is my statement parser: https://github.com/alshdavid/commbank-statement-converter https://github.com/alshdavid/commbank-statement-converter I've experimented with using AWS Lambda + DynamoDB as the back end. I have also tried Lambda + S3 Athena but nothing has been as simple to set up as Cloudflare D1. I may migrate to Athena at some point, but I am lazy and what I have works. To represent the data/generate reports & summaries, I use Google Sheets with custom AppScripts that make http requests to the data source (CF worker) with various SQL queries. AppScripts are a bit slow and I'd like to create a custom front end for this but I am lazy and Google Sheets works. I have my statements sent to my email so I have been thinking about setting up an AWS SES + lambda to receive and automatically parse & add them. I wrote web scrapers for the bank accounts that I could log into programmatically - but there are no "webhook" facilities on transaction events so syncing is manual. I like some of the ideas in OP's app - like calculating cash flow and incorporating assets into the net worth calculation - so I might add those calculations. I'd open source my system, add authentication and all that but I doubt anyone would use it.
- LorenDB 2y agoI'm still holding out for something that can monitor my bank account and automatically register transactions instead of me having to manually enter them. https://maybe.co/ https://maybe.co/ is working on a solution for American banks. I understand that Europeans already have protocols in place for this sort of thing. Why must the EU always get the nice things?
- MortyWaves 2y agoThe EU/UK ones aren’t that nice. I am able to see an account I have with Bank A in Bank B’s app. That’s about as far as this ever went. I can’t apply to even access the APIs as an individual, it’s only open for vetted organisations.
- 5evOX5hTZ9mYa9E 2y agohttps://gocardless.com https://gocardless.com offers a fairly generous free tier, and it can do transaction syncing with nearly every European bank
- aswinmohanme 2y agoAutomated transaction reconciliation will be a major feature in the future versions of the app. I have yet to use an app that reliably does automatic transaction registration and the dream is to build one. India does have a decent open-banking system, used by https://fold.money https://fold.money
- lie07 2y agoSame, used mint for something similar but too bad they dissolve it.
- sparklethunder 2y agoI'm so confused. In your example, my income is negative. In what country does it make sense to have a negative income? > You cannot categorize your salary as income, as your net-worth would be wrong. Yes you can, it's called a split transaction. $1000 income: split into $700 to my savings and $300 to taxes. I don't see the point in tracking my tax withholding in this way though, so I'd rather just put in my net salary.
- aswinmohanme 2y agoIt's a characteristic of double-entry accounting. Everything is an account and transactions move money between accounts. When you receive money from your salary in your bank account, the money is being debited from an Income account. We show the debit with the negative sign. > Yes you can, it's called a split transaction. $1000 income: split into $700 to my savings and $300 to taxes. Even though this would work, the money is still in your bank account, which makes your savings account balance to be reported wrong.
- simonmic 2y agoMoney is credited from an income account, I think you meant. Congrats on the app and release, OP!
- sparklethunder 2y agoI understand that the money is debited from an "income account." In the case of income, the "income account" belongs to the company that pays me. It's not _my_ account---why would I keep track of it in my ledger?
- fragmede 2y agobecause you want to know how much money you got, when, and from whom, and be able to reconcile that with the money you see in your bank account. the detail is that money transfers themselves aren't instantaneous, aren't paid out instantaneously, and aren't always singular - ie you get paid by the company, but also pay taxes on that, so there are three parties to that one transaction. for a single person, the overhead isn't super justified unless you're a total nerd about it (nothing wrong with that!), but if there's an accounting department with an bunch of peopke, they can more easily keep track of issued invoices, payments due and payments recieved, for example. it's not than all that's impossible with single entry, it's just way messier, so the overhead of double entry is considered better because the books can be more fully audited. if you're a freelancer, you may get paid net 30 or 60 or even 90. but you still need to know how much money you have right now, how much money you're owed; financial health, P&Ls etc.
- ninjastar99 2y agoTypo "Recieved" on your main page FYI
- aswinmohanme 2y agoThanks for the catch. Fixed and pushed.
- ramon156 2y agoGonna try this product, but "actual" is a really good option for people who just want to self host and forget about it. Really love seeing some basic info about my spendings, as well as detailed transactions when needed. Wish they supported more advanced graphs, and let me choose what I want to see. We'll see!
- threesevenths 2y agoQuestion about data collection. On the App Store it says that no data is collected by the app. In your privacy policy on the site it states that you do collect data related to the work that the app does and among other things, device metrics. If you do collect data, would you mind updating your App Store listing to clearly indicate that you collect data. If you don’t collect anything, could that be clearly indicated in your privacy policy. Thanks, app looks clean and useful.
- aswinmohanme 2y agoThanks. Updated the data-collection section.
- AnneGalathe 2y ago[dead]