A shared Google Sheets file can track rent, utilities, and household runs without sending your history to a splitting app. You still set every household rule. The sheet just does the arithmetic.
Do you need equal shares, a bigger cut for the larger bedroom, or a one-off reimbursement after someone covered the whole internet bill?
Thing is, the template only stays fair if every line records who paid, what it was for, and how you meant to divide it. Build the log first, then worry about dashboards.
Set up the expense log
Open a new spreadsheet, rename the first tab Transactions, and freeze row 1 so the headers stay visible while you scroll. Use Data > Data validation to make Category a dropdown. Stick to a short list such as Rent, Utilities, Groceries, Household Supplies, Internet, and Repairs, because random extra labels will break later totals.
| Column | What belongs there |
|---|---|
| Date | When the expense happened |
| Description | A label a roommate can recognize later |
| Category | One of the dropdown values |
| Payer | The person who paid the merchant |
| Total Amount | The full cost, not one person's share |
| Split Type | Equal, a custom split, or 100/0 for a payback |
Add a notes column if you keep confirmation numbers. Don't hide the dollar amount inside a comment field.
Pick the split before you log the bill
Equal shares work well when the bedrooms are similar and everyone uses the common space about the same number of nights. They fail when one bedroom is much larger.
Room-size splits assign rent by private square footage, and some groups ignore hallways and the kitchen. Others fold shared space in so the tiny room still pays something for the living room. Income-based splits can feel fairer when paychecks differ a lot, though they need a written rule you revisit if jobs change. Write it down before someone gets a raise.
For a cost that isn't really shared, log 100% on the person who owes it and 0% on everyone else. Call it a payback, not a group buy. That's how you show Jordan covered Alex's utilities without pretending the whole house owed the merchant.
Custom percents belong on rent when you already agreed on something like 60/40 because of room size. Skip that logic on paper towels unless you truly meant to.
You can spend a weird amount of time arguing about whether the person with the parking spot should pay more, and then you still have to put something in the cell, so write the house rule once on a Rules tab (even three sentences is enough) and stop renegotiating every first of the month.
Let formulas add the month up
Don't total the month by hand if you can avoid it. SUMIFS can pull rent or one roommate's payments without you dragging a highlighter down the column.
If amounts sit in column E and categories in column C, rent for the whole sheet looks like this:
=SUMIFS(E:E, C:C, "Rent")
Point the criteria range at Payer (column D in the table above) when you want a person's total paid. Change the last argument to their name.
QUERY builds a category table that grows as you add rows:
=QUERY(A:F, "SELECT C, SUM(E) GROUP BY C")
A labeled version that skips blank categories is:
=QUERY(C2:E100, "SELECT C, SUM(E) WHERE C IS NOT NULL GROUP BY C LABEL SUM(E) 'Total Paid'")
Park those formulas on a second tab named Summary so people aren't typing over the live totals.
A name list in Balances!A2:A6 can pull paid totals with:
=SUMIF(Transactions!$D$2:$D$100,A2,Transactions!$E$2:$E$100)
Match the columns if you inserted extras, and remember paid is not the same as owed. Subtract each person's assigned share if you want a true balance.
Turns out the 100/0 convention only works if Split Type means each person's share of the cost, not a mood. Paid in full is not owed in full.
Flag a category before it blows the budget
Conditional formatting can tint a cell when spending hits 80% of a cap you typed on the Summary tab. Swap your real cell names into =AND(actual_cell >= budget_cell * 0.8, actual_cell <= budget_cell).
Share it, then lock what shouldn't move
Google Sheets lets several roommates edit the same file at once, which is handy on rent day and dangerous for formulas. A missing SUMIFS is a bad surprise.
Protect the header row and formula cells with Data > Protect sheets and ranges. Leave those data-entry rows fully editable. The Google Sheets Help Center covers the clicks.
Give roommates Editor access if they log purchases. Viewer or Commenter is enough for someone who only checks a balance. Open the gear in the Share dialog and turn off the setting that lets editors change permissions or add people, unless you want that. Then test it with a roommate account.
Work through this list before you send the link:
- Freeze and protect row 1
- Protect formula ranges on Summary
- Share with named Google accounts rather than a public link if the sheet has addresses or account notes
- Confirm each roommate can still type in the open rows
Spreadsheet or a dedicated split app
Sheets costs nothing extra if you already have a Google account. Some splitting apps charge for extras such as ad removal or extra export options.
Your history sits in the group's Google document instead of a dedicated expense-splitting service. You can change the split on a single line, which helps with uneven rent, a pet that belongs to one person, or a deposit only two of you paid. That flexibility is the whole point.
Apps can still win if nobody in the house will open a spreadsheet. A template nobody updates is just a quiet argument waiting to happen.
A cadence that keeps balances honest
Agree on when new rows get added. Silence is what creates that March argument.
| When | What to log |
|---|---|
| Weekly | Groceries, household supplies, small receipts |
| Monthly | Rent, internet, utilities, any big reimbursement |
| After a transfer | The payment itself, as 100/0 or on a Settlements tab |
For each payback, record who sent money, who received it, the amount, and a short note such as January utilities. Leave the original bill on Transactions. The transfer is a separate row so you don't rewrite history.
To be honest, most groups only break this when someone waits until move-out to dump a stack of screenshots into the chat. Log the receipt the week you spend it.
Mistakes that quietly wreck the total
Typing a personal share into Total Amount undercounts the whole bill. Two spellings of the same name in Payer will split one person into two balances.
Don't delete old months; filter them instead, because those rows are how you prove who already settled.
If you keep a Settlements tab, never mark an expense paid by editing the original amount down to zero. Add the repayment row and let the balance formulas move.
Open a blank Google Sheet tonight, add those six columns, protect row 1, and enter this month's rent as the first line. The rest of the tracker is repeating that pattern.