Google Sheets works well for a small household or roommate group that wants a running grocery balance without a separate app. Build one Expenses tab, one Summary tab, and one Payments tab.
Keep the person who paid separate from each person's share. That distinction prevents the most common mistake: assuming the buyer should carry the whole cost. Turns out, the formulas are the easy part.
Set up the Expenses tab
Create a tab named Expenses. Enter each receipt once, then use percentage columns to show who is responsible for the cost.
| Column | What to enter |
|---|---|
| Expense ID | A label such as E-001 that you can reference in a payment record |
| Date | The purchase date |
| Item/store | A short description, such as Weekly staples - Safeway |
| Amount | The full receipt amount as a number |
| Paid by | The person who paid upfront |
| Split type | Equal, Proportional, or Custom |
| Alex % | Alex's share of the receipt |
| Jordan % | Jordan's share |
| Sam % | Sam's share, if needed |
| Alex share | Alex's calculated amount owed |
| Jordan share | Jordan's calculated amount owed |
| Sam share | Sam's calculated amount owed |
| Notes | Personal-item details, a receipt link, or an exception |
| Split check | A formula that confirms the percentages total 100% |
Replace the sample names with your household's names. Add one percentage column and one share column for each additional person.
A single Split % column can work, but only if you create one row per person for every expense. Separate person columns are easier to audit for a small group because the receipt stays on one row.
Try a known two-person row first: E-001, dated 2026-01-15, for 120.00. Alex paid, Alex has 50%, Jordan has 50%, and Sam has 0%. The share columns should show 60.00, 60.00, and 0.00.
Add the core formulas
Enter these formulas in row 2 and fill them down:
| Cell | Formula |
|---|---|
| J2 | =IF($D2="","",$D2*$G2) |
| K2 | =IF($D2="","",$D2*$H2) |
| L2 | =IF($D2="","",$D2*$I2) |
| N2 | =IF($D2="","",IF(ROUND(SUM($G2:$I2),4)=1,"OK","Check percentages")) |
Format the amount and share columns as currency. Format the percentage columns as percent, and enter values such as 50% or 60%, not whole numbers such as 50.
For a two-person sheet, remove the Sam columns and change the split-check range from G2:I2 to G2:H2.
To total all grocery receipts, use =SUM(Expenses!$D$2:$D$1000). To total what Alex paid, use =SUMIFS(Expenses!$D$2:$D$1000,Expenses!$E$2:$E$1000,"Alex").
You can also group paid totals by person with QUERY:
=QUERY(Expenses!A1:N1000,"select E, sum(D) where E is not null group by E label sum(D) 'Paid total'",1)
The QUERY result shows who paid upfront. It does not show each person's share. For more examples of these functions, see SUMIFS and SUMPRODUCT examples for Google Sheets.
Build the Summary tab
Create a Summary tab with these columns:
| Person | Paid upfront | Share owed | Net before payments | Received | Sent | Remaining balance |
|---|---|---|---|---|---|---|
| Alex | ||||||
| Jordan | ||||||
| Sam |
For Alex in row 2, use:
- Paid upfront:
=SUMIFS(Expenses!$D$2:$D$1000,Expenses!$E$2:$E$1000,$A2) - Share owed:
=SUM(Expenses!$J$2:$J$1000) - Net before payments:
=B2-C2 - Received:
=SUMIFS(Payments!$D$2:$D$1000,Payments!$C$2:$C$1000,$A2,Payments!$F$2:$F$1000,"Paid") - Sent:
=SUMIFS(Payments!$D$2:$D$1000,Payments!$B$2:$B$1000,$A2,Payments!$F$2:$F$1000,"Paid") - Remaining balance:
=D2-E2+F2
Use the Jordan share column for Jordan's Share owed, and the Sam share column for Sam's. In this layout, a positive remaining balance means the person should receive money. A negative balance means they still owe.
SUMPRODUCT provides another way to calculate Alex's share: =SUMPRODUCT(Expenses!$D$2:$D$1000,Expenses!$G$2:$G$1000). Use the Jordan or Sam percentage column for the other people.
Record reimbursements on a separate tab
An expense and a repayment are different records. The Expenses tab shows who paid and who consumed the groceries; the Payments tab shows money sent later.
Add these columns to a tab named Payments:
| Column | What to enter |
|---|---|
| Date | When the repayment was sent |
| From | The person sending money |
| To | The person receiving money |
| Amount | The amount sent |
| Reference | The related Expense ID, such as E-001 |
| Status | Pending or Paid |
For the example above, Jordan might send Alex 60.00:
2026-01-20 | Jordan | Alex | 60.00 | E-001 | Paid
The Summary formulas count only payments marked Paid. That keeps a promised transfer from looking settled too early.
Don't set the payer to 100% just because they paid the receipt. A 100% share for Alex and 0% for everyone else means the purchase belongs entirely to Alex. It does not create a reimbursement owed by the other people. If Alex pays for groceries shared equally with Jordan, record Alex as the payer and use 50% for each person.
Choose a fair grocery split
The percentage rule should describe use or an agreement, not simply who reached for their wallet.
| Split approach | Works well when | Example |
|---|---|---|
| Equal | Everyone uses the ordinary shared staples about the same | Alex 50%, Jordan 50% |
| Custom or usage-based | One person has personal items or different consumption | Shared items split 50/50, personal item at 100% for one person |
| Income-based | The household has explicitly agreed to contribute by income | Alex 60%, Jordan 40% |
| Personal purchase | Only one person wanted or used the item | Alex 100%, Jordan 0% |
If one receipt contains both shared and personal items, split it into two expense rows. The row totals should add back to the receipt total.
A 60/40 arrangement can work for a couple with uneven incomes, but it should be an agreed household rule. It isn't a default definition of fairness.
Create the sheet and share it safely
Set up the file in this order:
- Create a blank Google Sheet and rename the tabs
Expenses,Summary, andPayments. - Add the headers, participant names, formulas, and one test purchase.
- Use Data > Data validation to create dropdowns for
Paid by,Split type, andStatus. - Format dates, currency, and percentages so entries look consistent.
- Protect formula and summary ranges if other people only need to add expense rows.
- Share with named household members whenever possible.
- Give Editor access to people who will enter purchases. Use Viewer or Commenter access for anyone who only needs to review the record.
A link set to anyone with the link can expose household financial details. If you do use a link, check its permission level carefully and avoid giving edit access more broadly than necessary. Tiller's sharing and permissions guide explains the practical difference between edit and view access.
Real-time editing helps, but two people changing the same cell can still create confusion or overwrite an entry. Give every purchase its own row and use the Notes column for questions instead of editing someone else's amount silently.
Use a simple review routine
Enter the purchase soon after the shopping trip. The buyer should add the receipt, payer, split percentages, and any personal-item note.
Once a week, check the Split check column and review the Summary tab. Then record each actual transfer in Payments and change its status to Paid.
Pick a recurring household reminder. Sunday evening works for some groups, but the specific day matters less than using the same routine.
Fix the mistakes that cause disputes
| Common mistake | Better practice |
|---|---|
| Copying one receipt into a row for every person | Keep one receipt row and use share columns |
| Leaving percentages below or above 100% | Fix every row marked Check percentages |
| Treating the payer as the person who owes the whole bill | Keep Paid by and the share percentages separate |
| Mixing reimbursements into grocery rows | Record transfers on the Payments tab |
| Sharing an open edit link | Invite named people or use restricted access |
| Replacing a formula with a typed number | Protect formula ranges and keep calculations visible |
| Waiting until the end of the month | Add purchases after each trip and settle on a regular cadence |
A spreadsheet fits groups that can enter receipts consistently and agree on a split rule. It may be less suitable when people regularly forget entries, receipts arrive mostly as photos, or the group needs automated reminders or payment requests.
A separate app may help with those tasks, but check its privacy, export, and access options before moving the record. The sheet itself only calculates and documents the balance; it does not send money.
Start with the last grocery receipt. Enter it once, test a known equal split, and have each household member make one small test entry before the next shopping trip.