Google Sheets can be more than a shared list of bills. Set it up as a proper expense ledger, one where every row shows the expense, who paid, each person's agreed share, the bill's Paid Status, and whether a reimbursement is still open. After the bills clear, who owes whom? The sheet should answer that at a glance.
Here's the difference in practice. A $150 utility bill gets marked Paid because Alex covered it, but Jordan still owes Alex $60 on the side. A separate receipt flag keeps missing documentation from hiding inside a row that otherwise looks finished. That distinction is what makes the record easy to check.
Start with a simple Transactions tab
Open a blank spreadsheet and create three tabs: Transactions, Reimbursements, and Summary. You can start with just the first one. Turns out the extra tabs earn their keep later, when reimbursements and totals are easier to audit in their own place.
The setup:
- Put the column headings in row 1 of
Transactions. - Freeze row 1 and turn on a filter for the table.
- Format the date column as dates, the amount and share columns as currency, and the percentage columns as percentages.
- Once the structure works, replace
Person 1andPerson 2with your names.
One habit matters from here: one expense per row. No separate monthly blocks.
Your first version will look plain. That's fine. A clean row beats a clever dashboard.
Recommended columns for a couples budget tracker
This column set covers ordinary bills, uneven splits, receipts, and reimbursements without hiding the details that matter.
| Column | What it records |
|---|---|
| Date | When the expense happened or the bill was issued |
| Expense | A description such as January electricity or groceries |
| Category | Rent, utilities, groceries, dining, entertainment, or another agreed label |
| Paid By | The person who paid the original bill |
| Total Amount | The full cost of the expense |
| Person 1 % | The agreed share for the first person |
| Person 2 % | The agreed share for the second person |
| Person 1 Share | The first person's obligation |
| Person 2 Share | The second person's obligation |
| Paid Status | Whether the original bill is still pending or has been paid |
| Receipt Status | Whether the receipt is attached or missing |
| Reimbursement Status | Not needed, Owed, Requested, or Settled |
| Receipt Link | A link to a receipt file both partners can open |
| Notes | Context such as a due date, split exception, or payment reference |
Paid Status and Reimbursement Status do different jobs: the first describes the bill, the second describes money moving between partners. Keep both.
Here is a sample row:
| Date | Expense | Category | Paid By | Total Amount | Alex % | Jordan % | Alex Share | Jordan Share | Paid Status | Receipt Status | Reimbursement Status |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-01-15 | Electricity | Utilities | Alex | $150.00 | 60% | 40% | $90.00 | $60.00 | Paid | Attached | Owed |
Walk through it. Alex fronted the full $150, his agreed share comes to $90, and that leaves Jordan owing Alex $60. The utility bill is paid. The reimbursement is not. Both facts sit in the same row, which is the point.
Most rows will have one payer, and the exceptions are worth deciding before they happen. Money from a joint account gets Joint account in Paid By and Not needed for reimbursement. When both partners paid the same invoice separately, add payment fields or a separate payment record rather than naming only one of them.
Add share formulas and a balance summary
Two details matter before the formulas. Enter percentages as 60% and 40%, never 60 and 40, and confirm the pair totals 100% before you copy anything down.
With the columns above, row 2 gets these:
| Cell | Formula |
|---|---|
| H2, Person 1 Share | =IF(E2="","",ROUND(E2*F2,2)) |
| I2, Person 2 Share | =IF(E2="","",E2-H2) |
Copy both formulas down the sheet. The second one does the tidy-up work: it takes whatever cents remain, so the two shares add back to the total exactly.
An equal split is just 50% and 50%. A 60/40 split on $150 produces $90 and $60. When an expense belongs entirely to one person, use 100% and 0%, then explain the exception in Notes.
Summary formulas live on the Summary tab, and the examples below count cleared expenses only:
| Summary item | Formula |
|---|---|
| All logged expenses | =SUM(Transactions!E2:E) |
| Alex paid on cleared expenses | =SUMIFS(Transactions!E2:E,Transactions!D2:D,"Alex",Transactions!J2:J,"Paid") |
| Alex's share of cleared expenses | =SUMIFS(Transactions!H2:H,Transactions!J2:J,"Paid") |
| Alex's gross balance before reimbursements | =SUMIFS(Transactions!E2:E,Transactions!D2:D,"Alex",Transactions!J2:J,"Paid")-SUMIFS(Transactions!H2:H,Transactions!J2:J,"Paid") |
Swap in the right name and the matching share column. A positive gross balance means Alex paid more than Alex's recorded share. It doesn't prove the balance is still open, so check the reimbursement tab before asking for money.
Keep reimbursements separate from expenses
A transfer between partners is not a second grocery bill. Thing is, record Jordan's $60 repayment as another expense and household spending gets inflated by money that never left the house. Reimbursements get their own rows on the Reimbursements tab:
| Date | From | To | Amount | Related Expense | Status | Note |
|---|---|---|---|---|---|---|
| 2026-01-20 | Jordan | Alex | $60.00 | Electricity, 2026-01-15 | Settled | January utility reimbursement |
Cash, bank transfers, payment-app transfers: same treatment. The app moves the money. The sheet records why it moved.
If Alex's gross balance sits in Summary!B5, this formula adjusts it for settled reimbursements:
=B5-SUMIFS(Reimbursements!D2:D,Reimbursements!C2:C,"Alex",Reimbursements!F2:F,"Settled")+SUMIFS(Reimbursements!D2:D,Reimbursements!B2:B,"Alex",Reimbursements!F2:F,"Settled")
Watch the direction. Money Alex receives reduces the amount still owed to Alex. Money Alex sends reduces what Alex owes someone else.
Set up the Paid Status dropdown
Three related dropdowns beat one status cell forced to carry every meaning.
- Select
J2:Jfor Paid Status. - Choose Data > Data validation and add a dropdown.
- Add
PendingandPaid. - Repeat the process for Receipt Status with
AttachedandMissing. - Give Reimbursement Status the choices
Not needed,Owed,Requested, andSettled.
Next, select the data range, something like A2:N, and open Format > Conditional formatting. Custom formulas handle the colors:
| Condition | Custom formula | Suggested format |
|---|---|---|
| Bill still pending | =$J2="Pending" |
Yellow fill |
| Receipt missing | =$K2="Missing" |
Red fill or bold text |
| Reimbursement owed | =$L2="Owed" |
Orange fill |
One mechanical detail trips people up. The row number in each formula has to match the first row of the selected range, and you lock the column, not the row.
A single-column design can still work if you want lean. Make Pending, Paid, and Receipt Missing the choices, then apply =$J2="Receipt Missing" to highlight missing proof. Mintline's conditional-formatting example shows this pattern. It's quicker, though it can't show a paid bill with a missing receipt as clearly as separate fields can.
Share the tracker without exposing the formulas
Invite your partner by email, and give Editor access if you'll both be entering expenses and updating statuses. A Viewer can inspect the file but can't maintain the ledger. The mechanics of email invitations and link settings are covered in this Google Sheets sharing guide.
Skip the public link. Household financial records have no business sitting anywhere someone with the URL can wander in, even by accident. While you're in there, check whether editors can change permissions or share the file onward.
Protect the formula columns once they've survived testing. In Google Sheets, Data > Protect sheets and ranges covers the share columns, the summary formulas, and any lookup lists. Leave the entry columns and status columns editable.
Version history is there when you need to inspect changes. Open File > Version history > See version history, pick a version, and review or restore it. This version history walkthrough covers the same process.
Use a short weekly review
Consistency matters more than any dashboard. A small ledger stays current when both partners check it at a predictable time, and a 10-minute weekly review is one cadence suggested by ExpenseSorted's couples tracker example.
The routine:
- Add new bills and receipts.
- Check dates, categories, amounts, payers, and split percentages.
- Mark Paid only after the original bill has cleared.
- Mark a reimbursement Requested once it's been requested, then Settled after the transfer is recorded.
- Filter the sheet for Pending, Missing, or Owed items.
Category totals fall out of the structure almost free. =SUMIF(C2:C,"Utilities",E2:E) adds every utility row, and =SUMIFS(E2:E,C2:C,"Utilities",J2:J,"Paid") counts cleared utilities only. Ablebits' Google Sheets examples has more SUMIF patterns if you want them.
When you need a static monthly record, download a spreadsheet or PDF copy. Keep the live sheet as the working file.
Agree on the split rule before entering expenses
The spreadsheet calculates an agreement. It can't decide what's fair for you, and that conversation goes better before the first expense row gets typed.
| Split method | Works better when | Watch for |
|---|---|---|
| Equal split | Both people use or benefit from the expense similarly | It may feel uneven when income or usage differs |
| Usage-based split | A bill tracks different levels of consumption | You need a consistent way to estimate usage |
| Income-based split | Partners agree that contributions should reflect an income ratio | Review the ratio when circumstances change |
| Room-size split | Housing costs differ because bedrooms or private space differ | It is usually more relevant to roommates |
| Nights-stayed split | Travel or guest costs depend on how many nights each person stays | Record the nights before calculating shares |
| Per-person split | A group meal, trip, or event should follow the number of participants | It may ignore different orders or personal add-ons |
| Reimbursement after proof | You want a receipt attached before money is requested or settled | Missing receipts can delay repayment |
Treat an income-based split as a contribution rule you both agreed to, not an automatic fairness verdict. Add to Sheets' couples budgeting example notes person-specific income as an input for setting a split, and you can keep the actual dollar figures private, entering only the agreed percentages.
To be honest, the Notes column matters here. Write down why a 70/30 split applies, why one expense is 100/0, or why this month got a one-time exception. Six months from now, the reason won't be obvious.
Common mistakes to avoid
These are the errors that quietly wreck a shared ledger:
- Marking a bill Paid just because the reimbursement came through. The bill and the transfer are separate records.
- Logging a reimbursement as a new household expense. That double-counts the spending.
- Typing over the share formulas to fix a percentage. Change the percentage instead.
- Entering
60instead of60%. The share that comes out will be wrong. - Sharing a receipt link your partner can't open.
- Counting pending bills in a reimbursement balance before anyone has actually paid them.
Keep this as a household record, not a substitute for formal tax or reimbursement documentation. If a shared expense connects to a business, rental activity, or an official reimbursement program, requirements vary by situation and jurisdiction.
Create the three tabs now. Enter last month's utility bill, add the $60 reimbursement row, and test the status colors before your partner gets the invite.