Settings

Theme

Show HN: Double-entry accounting based personal finance app

getpaper.money

63 points by aswinmohanme a year ago · 25 comments · 2 min read

Reader

Hello HN! I am Aswin Mohan, full-stack mobile + web developer and I built PaperMoney(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 IOS: https://apps.apple.com/in/app/papermoney/id6737713983 Android: https://play.google.com/store/apps/details?id=com.papermoney...

Video Demo of the App: https://www.loom.com/share/40cf50afe33f4e1cb4fa3e749c19a2e3?...

apatheticonion a year ago

Nit/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.

  • aswinmohanmeOP a year ago

    You are right about missing the web part. It's substantial space that we miss out on mobile. But mobile lets you enter transactions on the go, and is always there when you need it. A web version is planned in the future.

    I started Paper to bring the beancount + automated parsing with python stack to everyone. Double-entry is an objectively better way to manage your finances, when we build an automatic reconciliation engine that automatically categorizes the bank transactions we'll have the best personal finance tracker app.

  • PeterZaitsev a year ago

    It 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 a year ago

    What 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.

    • aswinmohanmeOP a year ago

      We use a proper ledger to track the flow of money. It was sizable technical investment to get the schema right, but it has made the subsequent implementations of features easier.

    • apatheticonion a year ago

      The 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

      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 a year ago

I'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/ 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 a year ago

    The 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.

  • aswinmohanmeOP a year ago

    Automated 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

  • lie07 a year ago

    Same, used mint for something similar but too bad they dissolve it.

threesevenths a year ago

Question 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.

sparklethunder a year ago

I'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.

  • aswinmohanmeOP a year ago

    It'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.

    • sparklethunder a year ago

      I 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 a year ago

        because 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.

    • simonmic a year ago

      Money is credited from an income account, I think you meant.

      Congrats on the app and release, OP!

ramon156 a year ago

Gonna 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!

ninjastar99 a year ago

Typo "Recieved" on your main page FYI

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection