Yes, Google Sheets can handle a one-time move when roommates need a shared record of truck rental, deposit, utility setup, supply, and cleaning costs. Use one row per expense.

Let the checkbox answer one narrow question: has everyone who owes money on this row reimbursed the person who paid the bill? That definition separates a vendor payment from a roommate reimbursement.

A move gets messy fast: one person pays the deposit, another buys boxes, someone else books the cleaner, and then everybody remembers the numbers a little differently. The first version can be plain. It just needs one shared record.

Decide what the checkbox means

Turns out, the checkbox is the easy part. Decide whether it tracks a vendor bill, a reimbursement, or both; mixing those meanings can make the totals look cleaner than the real balance.

For the setup below, Paid Status means all required reimbursements for the row are complete. Paid by identifies the person who advanced the money.

A single status box can't show that one roommate paid while another hasn't. Add a separate Payments tab if you need a history of partial transfers.

Pick the split rule before entering costs

Equal splits are easy for shared boxes or a cleaning service used by everyone. They can feel wrong when one person has a larger room, stays fewer nights, or doesn't use a service.

Usage-based, room-size, nights-stayed, percentage, and custom shares can fit those cases better. A cost one person owns can be assigned entirely to that person. Write the basis in Split method, then enter the resulting dollar shares so the sheet shows the decision.

For a security deposit, separate who advanced the money from who has a share. The sheet records your group's allocation; it doesn't decide landlord rights or refund rules.

Build the tracker columns

Start with a tab named Tracker and put these headers in row 1. Replace the sample names with the actual people, and add or remove share columns as needed.

Column Use it for
A Date The date the cost was charged or paid
B Category A consistent label such as Truck rental, Deposit, Supplies, Utilities, or Cleaning
C Description A specific item, such as packing boxes or post-move cleaning
D Amount The full cost paid to the vendor
E Paid by The roommate who advanced the money
F Split method Equal, usage-based, percentage, custom, owner, or another agreed rule
G Alex share Alex's portion of the cost
H Jordan share Jordan's portion of the cost
I Sam share Sam's portion of the cost
J Paid Status A checkbox for whether the row's reimbursements are complete
K Receipt or notes A receipt link, payment note, or deposit detail
L Share check A formula that confirms the share columns equal the amount

For every row, the share columns should add up to the amount in column D. If only two people are splitting costs, remove the unused share column and adjust the check formula.

Put this in L2, then copy it down:

=IF(D2="","",IF(ROUND(SUM(G2:I2)-D2,2)=0,"OK","Check"))

A row marked Check needs review before anyone settles it. Keep these names consistent.

Add Paid Status checkboxes

Select J2:J100, then choose Insert > Checkbox.

  1. Select the cells where the status boxes should appear.
  2. Choose Insert > Checkbox. In some Sheets views, Data > Data validation and a Checkbox rule provide the same result.
  3. Test one box. An unchecked box stores FALSE; a checked box stores TRUE.

Format column D as currency and column A as a date. Freeze row 1 with View > Freeze > 1 row so the headers stay visible while you scroll.

To shade entered rows that still need settlement, select A2:L100, open Format > Conditional formatting, choose Custom formula is, and enter:

=AND($C2<>"",$J2=FALSE)

Choose a light fill color. The description check keeps empty template rows from being highlighted.

Add a summary tab

Put totals on a separate tab named Summary. That keeps the entry sheet easier to scan.

Total recorded
=SUM(Tracker!D2:D100)

Settled expense rows
=SUMIFS(Tracker!D2:D100,Tracker!J2:J100,TRUE)

Unsettled expense rows
=SUMIFS(Tracker!D2:D100,Tracker!J2:J100,FALSE,Tracker!C2:C100,"<>")

Truck rental total
=SUMIFS(Tracker!D2:D100,Tracker!B2:B100,"Truck rental")

These formulas assume the sheet is named Tracker. Extend the ranges if you add more than 99 expense rows.

Each SUMIFS range must cover the same rows. A mismatch can produce an error or an unreliable total.

To review entries over a chosen threshold, such as $500, use:

=FILTER(Tracker!A2:K100,Tracker!D2:D100>500)

Change 500 to the amount your group wants to review. The filter returns matching rows only when entries meet that condition.

Calculate who owes whom

Status totals show which rows are settled. They don't show each person's net position.

For Alex, where Alex is listed in column E and Alex's share is column G, use:

=SUMIFS(Tracker!$D$2:$D$100,Tracker!$E$2:$E$100,"Alex")-SUM(Tracker!$G$2:$G$100)

Replace Alex and column G for each other person. A positive result means that person paid more than their recorded share and should receive money. A negative result means they owe money.

Thing is, one checkbox can't show partial payments cleanly. If a roommate reimburses the payer in several transfers, create a Payments tab with columns for Date, Expense, From, To, Amount, Confirmed?, and Notes. Use one row per transfer.

Leave Paid Status unchecked until every required payment for the expense is confirmed. Keep the original expense amount unchanged.

Share the file and protect the math

Click Share and invite specific roommates rather than creating a public link. Give editor access only to people who need to enter costs or check reimbursements.

Protect the share-check formulas in column L and the formulas on Summary through Data > Protect sheets and ranges. Leave the entry fields and checkbox column editable for the people handling updates.

Use viewer access for someone who only needs to inspect the record. A commenter can leave questions without changing the values.

Receipt links help, but check the sharing settings on the receipt folder too. A private sheet can still point to a file with broader access.

Use a simple update routine

Write down the split rule before the first purchase. Enter each expense once, attach a receipt link in column K, and fill in the share amounts while the details are fresh.

When a roommate reimburses the payer, log the transfer in Payments. Mark the row complete only after the payment log and the balance agree.

At the end of the move, fix every Check result, compare each person's net balance with the payment records, and download a PDF if the group wants a frozen copy.

Common mistakes to avoid

Watch for these problems:

  • Treating Paid by as the person's final share. The payer is who advanced the money; the share columns hold the agreed allocation.
  • Checking Paid Status when only the vendor bill is paid. Wait for the required roommate reimbursements.
  • Mixing dollars and percentages. Keep columns G:I in dollars, or create separate percentage columns with clear labels.
  • Leaving category names inconsistent, such as using both Truck and Truck rental for the same type of cost.
  • Changing the original amount after someone reimburses. Record the later transfer in Payments.
  • Sharing a public link that exposes personal financial details.

When a spreadsheet is enough

To be honest, a spreadsheet is enough for a single move when the group can agree on the split and confirm payments manually. It gives everyone a shared record without making the tracker responsible for moving money.

Compare a dedicated split-bill tool when your group needs features such as recurring reminders, individual payment requests, or ongoing IOU tracking. Tracking, paying, and recordkeeping are separate jobs.

Use the sheet alongside whatever payment method the group already trusts. Record the date, amount, sender, recipient, and confirmation instead of relying on a payment app notification alone.

Questions to check before sharing

Does the checkbox show who paid?

No. It stores a status only. Keep the payer in column E and use the Payments tab when you need transfer details.

Can one row handle partial reimbursements?

Yes, if the row stays unchecked until every required reimbursement is complete. Log each partial payment separately so the remaining balance is visible.

What if one person pays the full deposit?

Keep the full amount in column D and put that person in Paid by. Enter each person's agreed share separately; the person who advanced the entire cost doesn't automatically have the entire share.

That records your group's cost allocation. It doesn't establish who legally owns a deposit or who receives a landlord refund.

Is this suitable for tax records?

It can help document shared personal costs, but it doesn't establish that a moving expense is deductible. Tax treatment depends on your facts and current federal or state rules, so ask a qualified tax professional about a deduction question.

Create the Tracker tab, replace the sample names, enter the first receipt, and agree on the split before anyone sends the next reimbursement.