Airtable can track roommate rent, utilities, groceries, and IOUs, but each person's share needs its own record. Build a People table for roommate summaries, an Expenses table for payments, and a Balances table that connects each person to each expense.

That third table is the key. A multi-person Split With link shows who is included, but it doesn't calculate separate dollar amounts for each person by itself. Use linked records and rollups to turn those allocation rows into a live balance.

Decide whether Airtable fits your household

A spreadsheet is simpler for a small, predictable setup. Airtable becomes more useful when people pay different amounts, expenses have custom splits, or the list of bills keeps growing.

Situation Practical choice
Two roommates split every bill evenly A shared spreadsheet may be enough
Roommates have different room sizes or usage patterns Airtable's linked tables can keep the rules visible
Several people pay bills at different times Use Airtable for the ledger and a separate payment method for reimbursements
You need a record of open and settled expenses Airtable provides a structured history with views and linked records

Airtable records the obligation. It doesn't send the money.

The structure below uses linked records, which connect related information across tables. Airtable's guide to linked records covers the underlying field type.

Create the three tables

Start with a blank base and create these tables:

Table Core fields
People Name, Open Paid, Open Share Owed, Gross Balance
Expenses Description, Date, Category, Amount, Paid By, Split With, Status, Split Count, Counted Amount
Balances Person, Expense, Expense Amount, Split Count, Expense Status, Equal Share, Use Custom Share, Custom Share, Share Owed, Counted Share

Use Name as the primary field in People. Add one record for each roommate.

In Expenses, make Paid By a single linked record to People. Make Split With a multiple-record link to People. Set Amount as a currency field, and use a single-select Category such as Rent, Utilities, Groceries, or Other.

Add a Status field with options such as Open, Settled, and Void. The formulas below count only open expenses, so settled records remain in the base without inflating current balances.

The third table is the bit people resist, because it looks like duplicate work at first, but it is what lets one shared bill become real person-level shares. Do not skip those rows.

Connect the records

Follow this order:

  1. Add each roommate to People.
  2. In Expenses, create Paid By as a single link to People.
  3. Create Split With as a multiple link to People.
  4. In Balances, create Person as a single link to People and Expense as a single link to Expenses.
  5. Add lookup fields in Balances for the linked expense's Amount, Split Count, and Status.
  6. Add one Balances record for every person included in Split With.

Once a link exists, Airtable exposes the related records through the reciprocal field. Links alone aren't enough, though. A multi-person Split With field does not automatically create one Balances record per person.

For a small household, add those rows manually. If you want them created automatically, use a record-created trigger and an update action, then test the automation with sample data. Airtable's guidance on linking existing records with automations explains that connection step.

Add formulas and rollups

Set up the helper fields before creating the summary rollups. The field names below must match the names in your base.

Table and field Formula Purpose
Expenses - Split Count COUNTA({Split With}) Counts the people included in the expense
Expenses - Counted Amount IF({Status}="Open",{Amount},0) Excludes settled and void expenses from current balances
Balances - Equal Share IF({Split Count},VALUE({Expense Amount}) / VALUE({Split Count}),0) Calculates an equal share for one person
Balances - Share Owed IF({Use Custom Share},{Custom Share},{Equal Share}) Uses a custom amount when needed
Balances - Counted Share IF({Expense Status}="Open",{Share Owed},0) Excludes shares for settled or void expenses

The Expense Amount, Split Count, and Expense Status fields in Balances should be lookups from the linked Expense record. Custom Share is a currency field. Turn on Use Custom Share only for an uneven allocation.

Now create two rollups in People:

People field Linked records Field to roll up Rollup formula
Open Paid Expenses linked through Paid By Counted Amount SUM(values)
Open Share Owed Balances linked through Person Counted Share SUM(values)

Add a formula field called Gross Balance:

IF({Open Paid},{Open Paid},0) - IF({Open Share Owed},{Open Share Owed},0)

A positive balance means the roommate should receive money. A negative balance means they need to pay.

Use Airtable's rollup field overview and its formula field reference when adapting the field names.

Do not use AVERAGE(values) to calculate a person's share here. AVERAGE averages the linked values; it doesn't divide each expense by the number of included roommates. The Balances rows make that division explicit, and SUM(values) then adds each person's actual shares.

An optional text rollup can target Description and use ARRAYJOIN(values, ", ") to show a readable list of expenses. That is useful for labels. It should not drive the money calculation.

For a category total, add a helper formula in Expenses such as Utilities Counted:

IF({Category}="Utilities",{Counted Amount},0)

You can roll that helper field into a summary record with SUM(values), or group an Expenses view by Category.

Choose a split rule before entering bills

Equal splitting is easy, but it isn't always fair. Agree on the rule before the first disagreement arrives.

Split rule When it fits Airtable setup
Equal split Everyone uses the expense similarly Leave Use Custom Share unchecked
Usage-based Utility use or grocery consumption differs Enter custom shares per person
Room-size split Bedrooms or private areas have different value Store agreed custom amounts
Nights stayed A temporary roommate or guest uses the home part-time Create a share for each person based on the agreed stay
Income-based The household has explicitly chosen this approach Record the rule in Notes and use custom shares

Use one rule per household expense type. Write it down.

Add a Split Rule or Notes field to Expenses if the arrangement needs explanation. The note should describe the agreement, not contain bank details.

Test the base with three expenses

Start with two records in People, such as Roommate A and Roommate B. Then add three open expenses.

Test record Enter Expected check
Rent $2,000, both roommates in Split With, one Paid By Each equal share is $1,000
Utilities $150, both roommates in Split With, custom shares enabled The two custom shares add up to $150
Third expense Use a known amount and split it between both roommates The Balances share rows add up to the expense amount

Start with the test data. Check the totals.

After saving the records, inspect People. Open Paid should match the payer on each expense. Open Share Owed should match that person's Balances rows. Gross Balance should be positive for a net receiver and negative for a net payer.

The group balances should net to zero when every expense has one payer and complete share rows. If they don't, look for a missing Balances record, a duplicate row, a wrong payer, or custom shares that do not equal the expense amount.

Change one test expense from Open to Settled. Its Counted Amount and Counted Share should become zero, while the historical record remains available.

Keep reimbursements separate from expenses

For a full reimbursement, mark an expense Settled only after the payment has been confirmed. Don't delete the expense.

Thing is, partial reimbursements need more detail. If they happen regularly, add an optional Payments table with one row per transfer:

Payments field Type or purpose
Date Date of the transfer
From Link to the roommate who paid
To Link to the roommate who received
Amount Currency
Expense Link to the related expense
Expense Status Lookup from the linked expense
Counted Payment IF({Expense Status}="Open",{Amount},0)

Roll up Counted Payment twice in People: once through From as Sent Payments, and once through To as Received Payments.

Then use this optional formula for the remaining position:

Gross Balance + Sent Payments - Received Payments

Keep the original expense open until the outstanding amount is resolved. When the expense becomes settled, both the expense and its related payment rows drop out of the current-balance calculation.

This extra table is useful for partial payments. It is unnecessary for a simple household that settles each expense in full.

Share the base and review it regularly

Give edit access to the people who add or correct expenses. Give read access to others when your Airtable setup supports that level of access.

To be honest, a filtered view is a convenience, not a privacy boundary. Share the base only with people who should see the underlying records, and don't store bank account numbers, card details, or login credentials there.

A practical routine is simple: log an expense when it happens, keep the receipt reference with the record, review open balances once a week, and mark a bill settled after the group confirms payment. Consistency matters more than a complicated dashboard.

Fix the failures that create arguments

Problem Fix
AVERAGE(values) produces an unhelpful share Create one Balances row per person and use SUM(values) on the calculated shares
Split With changes but the totals do not Add or remove the matching Balances rows
A settled bill still affects the balance Check the Status, Counted Amount, and Counted Share formulas
Two roommates paid the same receipt Enter separate Expense records for each payer's portion
Custom shares do not equal the bill Recheck the agreed allocation before closing the expense
The group balance is not zero Look for a missing payer, duplicate share row, or incomplete split

Turns out, the formulas are the easy part. The agreement is the real control: decide how each category is split, what counts as settled, and who reviews the base.

Create the three test expenses first. Once the checks pass, replace them with live bills and review the open balances on a fixed weekly day.