Show HN: Paisa – Open-Source Personal Finance Manager (paisa.fyi)
I have been using plaintext accounting for some time and had a duct-taped together reporting system. Paisa is my latest attempt at making it usable for others.
I am interested in knowing what people normally want to understand about their finances
PS: Please avoid editing the demo data. Download and run locally if you want to edit.
287 comments
[ 4.1 ms ] story [ 439 ms ] threadWhen we released its beta, early users were happy with the new-age design and one of the best user experiences in a web app for India. Later, I heard MoneyControl sued Paisa.com (I’d consider that a success).
The Paisa team went on to become Helpshift.com. One of the founders became an investor, and another is now the co-founder of teamohana.com. Another key member started his own Startup, later acquired by GoJek.
And a lot of stories in between. It all started in 2007-2008 when I started in a spare attic in my erstwhile boss’s office and assembled a small but brilliant team. I retained that Startup’s domain for a long time and sold it this year. I need to write about all of this one day. A few publications have written strange stories about it, and I’ve not been interested enough.
Now, I’m doing things with Satellite and stuff for Climate and the like.
Cool! What are you doing with climate?
We are entering the Climate Tech scene via MRV (measurement, reporting, and verification) tools by leveraging super-resolution algorithms and Multi-Spectral analysis, aiming for cost-effective and detailed insights. By integrating RADAR/SAR with RGB/MS data, we ensure consistent data collection, even in cloudy conditions, fostering broader engagement in climate action.
We are selling to enterprises beginning with some of the ML tools that we wrote.
Also, you guys hiring interns/FTE? :D
We are not proactively seeking but are always open to interesting people. Email me at brajeshwar@oinam.com and we can talk.
1. https://www.ycombinator.com/blog/rfs-climatetech/
I’ve finally settled on hledger for now. There’s some issues, mainly the reports are generated by calendar year, there’s no support for Financial Year reports (Apr-1 till Mar-31 in India).
The trick with making excel work is treating your finances like a company with assets and liabilities. Build out your balance sheets, list it out, and compute it.
1. Using period reporting feature (`-p`):
2. Separating journals into April 1 – March 31 financial years.3. Using `-b` and `-e` to demarcate begin and end dates when generating reports.
Community needs an open-source version of YNAB, not another gnu cash clone.
Plaid solves the transaction import problem, the hardest part, unfortunately at the expense of privacy.
[1] https://www.gnucash.org/docs/v5/C/gnucash-manual/tools-on-li...
[2] https://wiki.gnucash.org/wiki/GnuCash_and_Mobile_Devices
[1] https://github.com/ebridges/plaid2qif
At least in the UK/EU, it seems to be a common feature.
Great job building this and also writing the documentation that explains concepts as well as how they are implemented.
I can't believe how many comments here are dismissive. If you are happy using a paid solution to manage your finances and don't want to get into the weeds yourself, you are probably not the target audience for this.
One suggestion would be to make the country-specific pieces like tax calculations module so others can contribute their own.
This is something I have been thinking about, I need to figure out the base abstraction. Even the current implementation (which is basically written for my personal use cases) has too many conditions/grandfathering etc, I suspect it might not be accurate.
This tracks all my cashflows, investments, net worth etc, and since it's in excel there's no risk of it disappearing after 10 years
How do you even do that, unless you manually regex it?
If that's the case, already looks weird on technical decisions.
There's never a decent open source self finance management app somehow.
It's either bloated or just doesn't look easy on the eyes for simple day to day use.
https://en.m.wikipedia.org/wiki/Indian_numbering_system
So the question is, would it make sense to have a Plaid plugin for this? Obviously because they are a 3rd party, it negates some of the benefits, but I simply cannot use this system manually because I have so many accounts. Maybe one workaround is to pull from Tiller (which uses plaid), then export a csv/excel.
Any chance there's a good plan in place to get automated data imports working, even if we need a 3rd party to do it?
But connecting to Chase.com using plaid pulls in transaction statement is still information poor. The obvious consequence of this is that budget information is not correctly reflected in Mint(that info is actually in my Amazon.com silo). The only way to fix this rn is sadly manually.
As a tangent, I do feel though that LLM agents that can one day act on individuals behalf, reading info and making this manual job far more easier in absence of any govt regulations.
They do this lack of info lift and then recommend category splits.
I ended up long down the rabbit hole with auto-downloading Amazon orders (originally with https://github.com/jbms/finance-dl, but then my own custom scraping) and importing and matching them up with credit card transactions using beancount-import (https://github.com/jbms/beancount-import).
This ultimately resulted in me spending a lot less on Amazon - to the point that now doing it manually wouldn't be too bad...
Last time I looked at this, I thought it was stated that the free/sandbox tier is not guaranteed to have the same SLA as the production environment. But I can't find this in the documentation anywhere.
The steps, as far as I can tell, look something like this:
1) Sign up for Plaid developer account
2) Request developer access (without it you can only play with sandbox data)
3) Request production access
4) Submit application information including a name, website URL, and logo
5) Add a legal company entity name and address to my plaid account
6) Sign an MSA contract (no idea what its about)
7) Fill out a security questionnaire.
I'm at step 3 currently but I'm not sure how much further I'm realistically going to get. I'm not sure I could reasonably fill the rest without stretching the truth quite a bit and it seems to get deep into legal territory that I'm not sure I'm comfortable with.
There's also apparently different API behaviors depending on the bank: https://plaid.com/docs/link/oauth/#institution-specific-beha...
I don't have a lot of hope that this is going to pan out. I'm considering just scraping Chase with a headless puppeteer script instead.
It's possible that this may be simpler for other banks though, I've only tried Chase since that's my primary bank.
I will say that while annoying (especially for Chase, which has the most paperwork-type requirements for developers) this process should be totally doable for solo developers. You can put your own name as the legal entity name if you don't have a company. The Master Services Agreement (MSA) sounds scary but is just the contract between you and Plaid -- the legalese laying out what you're paying for, what Plaid is providing, and the rights and obligations of both parties. And when it comes to the security questionnaire, fill it out as accurately as you can, but you don't need to stress over it -- Plaid doesn't expect a solo hobbyist to have the same security measures as, like, a publicly traded company.
I'd much rather just pay the money and have the standard API, and my workflows are all built around Plaid anyway.
I guess I'll give it a go now.
I've personally used SimpleFIN to provide automatic imports in my own personal, kind-of selfhostable personal finance tool [1].
[0] https://beta-bridge.simplefin.org/
[1] https://github.com/avirut/bursar
If you could add multi-language support, then I'm sure my family will use it :)
> I am interested in knowing what people normally want to understand about their finances
For my family use cases - seeing upcoming expenses and how much is left in the account on the specific dates in a calendar time-flow view, this way we can see how and when things are spent and if new entries are added we can plan for how much is left at a specific target date (like a trip). I've seen nothing like this, so would be extremely useful.
https://paisa.fyi/reference/budget/
It's been a long time, so I may be getting it wrong, but I do have some introductory information of accounting. And according to that, in a transaction such as salary received, the accounting would look something like:
Income: Salary - Credit
Assets: Checking - Debit.
The Golden rule/s that apply here (Debit the receiver, credit the giver)
However, looking at the tutorial, the example given is:
2022/01/01 Salary
Income:Salary:Acme (Debit Account)
Assets:Checking (Credit Account)
This is the opposite of what I expect, however, I see this all the time when looking at tutorials/information written by SW devs.
What am I missing or is everyone else just getting it wrong?
A big confusion for me initially was that my banks always talked about crediting my account whenever money was deposited/added to my account.
I finally understood it when I realized that from the banks perspective, an increase in my account is an increase in their liability towards me; they now owe me more money. Which is why they call it crediting my account.
So now I think of it like this: an increase in an asset is always a debit, an increase in liability is always a credit.
In particular, the first example above is correct. An asset account is increased by debits; a credit increases a revenue account.
Salary received:
Income: Salary - Credit
Assets: Checking - Debit.
https://stuff.mit.edu/afs/sipb/project/gnucash/1.6.4/arch/i3...
People refer to their bank account colloquially as a "debit account" and "credit account" because those are the types of accounts offered to them by a bank. From the bank's perspective, a consumer debit account is (correctly) considered a "debit" since any money deposited into the account by the account owner is an asset for the bank.
The banks cash account is debited for balance
One thing off the bat I noticed, it doesn't look like custom Tags are supported? I use tags all the time in beancount, say to filter for a trip #trip-europe-2022 which would break down my cash flow and balances (and the rest of the fava UI) for a subset of transactions.
Not as of now, Tags are used only for recurring transactions as of now. I first need to figure out how to bring the filter into the UI. Everything now works based on Account names only.
Do people who use this kind of software manually enter every transaction they do every day, or something?
Yes, exactly that. You can do automatic imports of your bank statements but that's arguably more hassle.
It takes 10 minutes at the end of my day to record all my transactions and it gives me a complete understanding of where my money is going.
For longer term accounts like my 401k, IRAs, and brokerage accounts, I track money going in our out but only update the gains/losses every 6 months or annually on Dec 31st.
I’d love to be able to do this, but realistically (for me), I’d need something that works reliably on my worst days. If I’m out late, on vacation for a few days, dealing with some on-call thing all night, etc., I don’t want to be beholden to a 10-minute per day commitment that accumulates linearly. Discipline can only get me so far in the face of chaos—automation can take me the rest of the way there.
For all the concerns and problems over tools like Mint, having all 10-20 accounts we have automatically sync their data into the system makes it so much easier to manage.
On Paisa (ledger). I like it! But...KMyMoney has such a nice interface for recurring/future payments and reports (that I can edit to suit our needs) that I'm struggling to see the point of ledger behind gui for our use case. It does look nice though.
But to your point, it’s still a lot of customization and manual work, I never keep up with it for more than a month or two
This way, I would log every transaction immediately rather than wait until I get home.
But for a few months now I've been thinking an OSS service that does this might be great for such OSS projects. Maybe I'll eventually start it.
Technically, I might be able to get something similar by using some website to download everything, but honestly I don't trust them. I don't want all of my banking, investment, and spending information consolidated in one place for some tech bro douche bag to sell off to some richer fucks and then lose it to some hackers.
https://tabula.technology
I thought this would be fairly straightforward but it's been anything but that - what few open formats there were for this thing are all being sun-setted and most US based banks seem to only allow API access of any kind to established companies. The only real option is to go through Plaid which still seems to require initiating a business relationship with them to get through all the red tape.
For whatever reason, if your in the US, real time syncing of this sort of thing just isn't an option at the personal level.
Only other solution I can think of at this point is to manually scrape with a puppeteer script.
So far every time I've relied on automatic categorization for this sort of thing it fails horribly. I don't think I've used anything that's GPT based though.
I wrote my own script that uses the GPT API. For automating bank transcation downloads, it's just a cronjob that runs ever X hours and scrapes the information from the banking website.
And then there's e.g., "Amazon Transaction AB2314ACWERF" which could be a new Fridge ("Household Appliances"), a 3D Printer ("Hobby Expenses"), a video game ("Entertainment Expenses"), or a giant double-headed adult massager ("Fax Machine Maintenance") - but the bank statement wouldn't have enough information.
I created an internal rails clone of financier.io and just created a spreadsheet web area i could copy/paste mass transactions in so i could add a batch at a time ( I suppose I could upload a csv also, but the problem is every bank has different formats)
I am not sure if it will work with bulk import though. It's easy to spot mistakes with single entry, hard to do when you have lot of them
I wrote my own idempotent parser before this existed but would give this a try first
I currently use YNAB4, and I've assigned categories to Payees, so when it sees a transaction to e.g., my local Pub, it knows to categorize it as Food. For stuff like Amazon or eBay, I need to manually categorize each transaction, but that takes a minute or two.
How does this differentiate?
You don’t have to, of course, but do you plan to open source it? That way others can contribute to it too.
How tightly is it bound to ledger? How hard would it be to adapt it to other plaintext accounting programs like beancount?
I'm also too impatient to manually enter all transactions but import from PDF statement form a bank looks like a doable task. The only transactions that would be required to enter manually is cash/crypto/etc but for them there are no other choice.
Contrats with the the release Anantha and I hope your project will gain attention it deserves!
GnuCash also allows you to generate reports from double-entry accounting.
1. What automation, if any, exists for entering transactions? This is the most laborious/cumbersome part of personal finance. Some tools use financial data aggregators (plaid, yodlee etc.) that involves sharing login credentials with a third party, sometimes disabling 2FA, or other steps that are anti-security or anti-privacy. It sucks that in the USA at least, there is practically no way for customers to fetch their bank data via an open API. Until recently, many financial institutions supported OFX, but that is being phased out.
2. How is categorization of transactions accomplished? Ideally, I want autocategorization based on my own previously categorized transactions, since the bulk of my transactions are repeats at the same merchants.
3. What sort of reporting, dashboarding, and potentially sharing capabilities exist? Ideally, I want to share some reports with my partner
A while ago, I created my own homegrown system to automate my personal finances[1]. It is capable of doing all of the above, without sharing data with a 3rd party. Unfortunately, the automated transaction retrieval mostly does not work because financial institutions are dropping support for OFX.
[1]: https://sagar.se/blog/where-is-the-money/
One of my aggregators categorizes any alcohol purchases (purchases from a state 'ABC' store) as 'home improvement'. While technically the house looks better when I'm drunk, I still thinks it's a mistake, and I submitted feedback to them. 2 years ago. No change.
It has import support (can be templated using handlebars), no automated fetch though
> 2. How is categorization of transactions accomplished? Ideally, I want autocategorization based on my own previously categorized transactions, since the bulk of my transactions are repeats at the same merchants.
It has a very crude tf-idf based categorization. I do have plans to improve it.
> 3. What sort of reporting, dashboarding, and potentially sharing capabilities exist? Ideally, I want to share some reports with my partner
You can checkout the https://demo.paisa.fyi It's just a web app that works over http, so you can run it on a machine and share them access. You have to figure out the authorization part, I do plan to add some password based auth soon.
You could use the same algorithm that was used for spam filtering in my Linux Journal article from back in 2003[1]. I have thought about making a plugin to do it with MoneyDance but haven't gotten around to it. But I think it would be quite easy for you to integrate into Paisa if you are looking to do that sort of thing. I have actually made some improvements to the algorithm since then; let me know if you're interested...
[1] https://www.linuxjournal.com/article/6467
Once the import and reconciliation is done I pull up a my column chart that shows where the money went -- and can compare over time -- see a full year of movement. I've been through various charting libraries with it and most recently moved to ECharts[0] -- so I'm planning to expand with Treemap and Sankey style visuals.
The import process, which I do monthly takes maybe an hour. I'm importing from like 5 bank accounts, 3 payment processors, 4 CC providers. The part that takes the longest is signing into their slow sites, navigating past pop-up/interstitial, getting to their download page and waiting for it to download. Loads of these sites (WF, Chase) have been "modernised" and have some real bullshit UI/UX going on -- lags, no keyboard, elements jump around, forms can't remember state, ctrl+click won't open in a new page cause that damned link isn't actually a link but some nested monster of DIVs with 19 event listeners on each one -- and somehow still all wrong.
I think the most-best feature would be to have some tool automatically get all my transactions from all these providers into one common format. Gimmee some JSON with like 10 commonly-named fields for the normal stuff and then 52 other BS fields that each provider likes to add (see a PayPal CSV for example). Does that exist and I just don't know?
[0] https://echarts.apache.org/
https://news.ycombinator.com/item?id=37613525
Apparently, just being able to pull your financial data into open-source tools and excel could be a product since Yodlee and other aggregators are often too expensive and technical to set up for individuals.
I think we need to force all financial companies to have a modern API and OAuth available for everyone via legislation.
That already exists[0] in the UK
[0] https://www.openbanking.org.uk/
I wonder if there are any open source third parties?
I tried it, but I couldn't get things working sandbox environment so I ended up giving up and just do manual exports.
Free to use (up to a limit). Not open source though.
Link: https://gocardless.com/bank-account-data/
[I work at GoCardless]
similar to how the central bank forced every major bank to adopt PIX (our instant payment system), they're doing the same with open banking.
Sure, it's not exactly "open" for end users. But now, as a company, I can build a personal finance app without asking for my end users bank account password. This is so much better UX-wise.
Have you thought about building out the "retirement" module more? If you need any inspiration, I've been working on a personal finance simulator [1] for the past two and a half years as a side project.
Really great job with the docs on this, and I love that you include a demo environment!
I imagine that eventually we'll see an app that pulls budgeting, tracking, and planning all together in a fully seamless way. Whoever manages that will probably be a force to be reckoned with.
[1]: https://projectionlab.com
In an ideal world, double entry accounting would be your database and there would be lot of tools that use that and focuses on a specific niche. But we are far from that and everyone wants to create their own data island.
It's a lead magnet for an Indian PMS service.
https://plan.capitalmindwealth.com/
All you really need from that dataset is your current portfolio. Everything else you need is specific to investing -- variance of investment, portfolio mix, covariance of returns, age of retirement, life expectancy, etc. From that standpoint, it's practically an entirely new product.
There's also something to be said about the 4 percent rule, and whether additional forecasting work actually improves outcomes. Heuristics seem do to a decent job.
It's by far the best household bookkeeping tool I've ever used, but it won't ever get updates again (running it in a VM just so I can make sure I will always be able to run it), and it would be nice to have something that can track stocks and maybe even foreign currency - but for now, I would be happy with something that can just replace YNAB4.
The lack of Quicken OFX Import is a bummer :( But if the CSV import is good, it would still work. (As much of a pain as OFX is to implement for developers, especially since there's at least two major versions, it is pretty widely supported by US banks to download my transaction history)
Will probably give it a spin on the weekend, since the demo actually looks promising!
OFX is a huge PITA to implement, I've tried it and realized I would want to get paid to put up with it :) I'll try the CSV import, if it works then there's no need to overcomplicate stuff.
The Demo looks really good by the way, and props for actually having one!
Yep - There is on-going work to get good mobile support on the web app too!
I may have been using YNAB wrong, but I had allowed budget categories to go negative and gradually fill them back in. Financier imported all of that data with 100% fidelity. YNAB5 couldn't do that and it's one of the key reasons I didn't upgrade. I wasn't keen on losing my historical budgeting data and starting all over (YNAB's official recommendation).