SettleUp is an app built with google spreadsheet for tracking and splitting finances in a transparent and equitable way. It’s a great alternative to a shared bank account, less cool spreadsheet or one of the myriad apps that does basically the same thing (more on that later). Here’s how it works:
1. Enter your expenses.
Each party has his or her own ledger sheet where they enter expenses. The ledger will automatically calculate the other party’s portion based either on the default value from the Settings tab or the value entered on the row. There’s even an optional field to categorize your expenses. After quickly categorizing and recording the value, just click the button to record the expense and create a new row.
2. Settle Up
The balance of the ledger tabs can be found at all times on the SettleUp tab. At any point just Venmo (or app of your choice) charge the other person the amount shown and hit “SettleUp“. The script will set the balances back to zero and create a record of the expense period you just closed. This allows you to review your spending habits and history in detail for specific periods without being inundated with charges.
3. Review
Having to manually enter your expenses is a feature not a bug. It makes you think about how much you spend and on what. You can use the area to the left of the ledger or create new tabs to analyze to your hearts content. To get started check out the query on the History tab.
How it works
I love making apps in google spreadsheets. App Scripts is surprisingly robust, effectively giving you free reign wrt data while having the frontend of one of the most ubiquitous pieces of software ever made. The formulas are self explanatory so I’ll just cover the code which has two main features
1. The New Charge function
Attached to the buttons on the ledger, this keeps the charges in descending order by date (seriously why is that so hard in spreadsheets) and pre-populates most of the data given the context. It also colors the row based on its status [entry, unsettled, settled].
2. The SettleUp function
This does a couple things in order:
Record the values presently on the SettleUp page
Go through the ledger and mark the “Settle Id“ from zero to max(SettleId) + 1
Record the values from step 1 in the History tab.
This order helps keep things fault tolerant and easy to undue. The record of transactions on the History tab should be immutable so that’s recorded last.
Why I built this
There are a ton of great apps built for this space but they miss a key distinction between automation and analysis. If you just want to split a bill equitably and get on with your night, SplitWise is perfect for that. But for things like our personal finances, we want to analyze, to explore. Automation actually hinders this process and having walled-garden web apps makes it that much harder to put data into the environments we’re most comfortable manipulating it. By having your finances in a spreadsheet you have to look over your statements and think about what you spend to enter the data in the first place. And once it’s there you can go nuts- pivot tables, charts, graphs- whatever.
I see this a lot in the financial space where banks want automated decisioning and slick web apps to help their analysts work faster. But putting tools in their “native“ environment (spreadsheets, mostly) allows them to better incorporate the tool into their workflow rather than have to go to another environment, get a solution, then come back. With App Scripts and Excel plugins, a good product can store data in a database behind the scenes, use APIs to ingest and output data to other systems- all with the frontend of one of the most successful and well loved pieces of software ever.