Back to blog
Tutorial6 min read

How to Build a Joint Budget in Google Sheets (Without Linking Your Bank)

By JX · Personal Finance
How to Build a Joint Budget in Google Sheets (Without Linking Your Bank)

Last updated: October 4, 2026

Two people, one budget, and no shared bank login. That is the setup most couples actually want, and a shared Google Sheet is the simplest way to get it. You each keep your own accounts, log what you spend, and the sheet works out who owes whom at the end of the month.

This guide builds that sheet from scratch: a transactions tab with a payer column, split rules for shared and personal spending, a monthly budget that updates itself, and a settle-up tab that ends the "you owe me" argument. Setup takes about 30 minutes, and the monthly run takes about 10. No bank linking, no second subscription, and no third party holding your account credentials.

Why a shared sheet beats a shared app login

Most budgeting apps assume one of two things: that you will both pay for seats, or that you will hand over your bank logins so the app can sync. YNAB runs about S$147 a year, and the moment you add a partner you are managing two sets of credentials and two sync feeds that break whenever your bank pushes a 2FA prompt.

A shared Google Sheet skips both problems. Both partners open the same file, edits show up in real time, and the data sits in a Drive folder you control. The trade-off is manual entry, which is why the sheet has to be built so that logging a transaction takes five seconds.

The four tabs

Keep the file to four tabs so it stays readable:

  1. Transactions: every expense, one row each.
  2. Budget: planned vs actual by category.
  3. Settle up: the running balance between the two of you.
  4. Settings: your split rules and category list.

Step 1: Build the Transactions tab

Set up these columns in row 1:

ABCDEFGH
DateDescriptionCategoryAmountPaid bySplitA owesB owes

Then add two dropdowns with Data > Data validation:

  • Paid by: Partner A, Partner B
  • Split: Shared 50/50, Shared proportional, Personal A, Personal B

The dropdowns matter more than they look. Free-typed values like "shared" and "Shared " break every formula downstream, and that is the most common reason a couple's sheet stops working after month two.

Step 2: Add the split rules

In G2, paste this and drag it down:

=IF($F2="Shared 50/50",$D2/2,IF($F2="Shared proportional",$D2*Settings!$B$1,IF($F2="Personal A",$D2,0)))

In H2:

=$D2-$G2

Column G is what Partner A is responsible for, column H is Partner B's share. A S$120 grocery run split 50/50 puts S$60 in each column. A S$89 gym membership marked Personal A puts the full S$89 in G and nothing in H.

For the proportional option, Settings!B1 holds Partner A's share of household take-home. If one partner brings in 60% of the household income, that cell reads 0.6, and every "Shared proportional" row splits 60/40 on its own. The Singapore median take-home is about S$4,000 a month, so a proportional split is the fairer default whenever the two incomes differ.

Step 3: Make the budget tab update itself

List your categories in column A and your planned amount in column B. In C2, pull the actual spend:

=SUMIFS(Transactions!$D:$D,Transactions!$C:$C,$A2,Transactions!$A:$A,">="&DATE(2026,10,1),Transactions!$A:$A,"<="&DATE(2026,10,31))

In D2, the difference:

=$B2-$C2

A worked month looks like this:

CategoryPlannedActualLeft
Groceries$500$472$28
Food/Dining$350$388-$38
Transport$180$164$16
Shopping$200$255-$55
Gym Membership$89$89$0
YouTube Premium$22.98$22.98$0

The two negatives are the point. A shared sheet shows both partners the same numbers before the month ends, rather than policing anyone. If you want the full planned-vs-actual formula set, including the variance column and a conditional-format rule that flags overspend, that is covered in the planned vs actual guide.

Step 4: Build the settle-up tab

This is the tab that ends the monthly argument. Three formulas:

A paid:  =SUMIF(Transactions!$E:$E,"Partner A",Transactions!$D:$D)
A owes:  =SUM(Transactions!$G:$G)
Net:     =B1-B2

If Net is positive, Partner B owes Partner A that amount. If it is negative, it flips. One transfer clears the month, and you never have to reconstruct who paid for what.

Step 5: Lock the formulas, keep the inputs open

Select the formula columns and use Data > Protect sheets and ranges. Leave the Date, Description, Category, Amount, Paid by, and Split columns editable. This is the difference between a sheet that survives a year and one that breaks the first time someone drags a cell.

Where CalmExpense fits

The manual part of this setup is the entry. Every transaction is a row you type, and the cleaning is the tedious bit: PayNow and NETS strings arrive as long merchant codes, and a shared sheet doubles the volume.

CalmExpense is a dashboard that sits inside your own Google Sheet. You import your bank CSVs, it cleans the local merchant strings, and it renders the charts in a web modal on top of the sheet, so you get the shared-sheet privacy without the formula clutter. It is a one-time S$29.90, not a subscription, which matters when you are already splitting costs with a partner. You can start the free trial and see whether the import step saves you more time than it costs.

If you would rather automate the entry side first, this walkthrough of tracking expenses without linking your bank covers the import and cleanup formulas in detail.

FAQ

Do we need to link our bank accounts? No. The whole point of the sheet is that you import CSVs or type entries yourself. Neither partner hands over a bank login, and no aggregator sits between you and your accounts.

What if we keep separate accounts? That is the normal case. The sheet tracks who paid and who owes, so money can stay in separate accounts and settle with one transfer a month.

How do we handle a big one-off purchase? Mark it Personal A or Personal B if one person is keeping it, or Shared 50/50 if you are splitting it. The settle-up tab picks it up automatically.

Can we use this without a partner? Yes. Set every row to Personal A and the sheet works as a single-person tracker. The structure costs you nothing.

Is a Google Sheet private? The file lives in your Google Drive and is shared only with the people you invite. That is a different privacy model from an app that stores your transactions on its own servers. Here is how the data-ownership side works.

See your own spending this clearly

CalmExpense turns your bank statement into a clean dashboard inside your own Google Sheets. No bank linking, no subscription. One payment of $29.90.

Start your free trial