Yes, Airtable can do this. The dependable setup uses one Split record for each person on each bill, then calculates that row's share from income and the bill total.

The math is income / total group income * bill amount. The tricky part is the total: a formula field doesn't scan every record in the People table by itself. A linked record and a rollup bring the participants' income into the bill, where the formula can use it. Airtable's formula field functions reference covers the arithmetic, conditional, and rounding functions used here.

This base tracks an agreed contribution. It doesn't decide whether income is the fairest rule for your household, trip, or group.

Decide the splitting rule first

Income-based splitting works when people agree that shared costs should follow ability to pay. It isn't automatically fair for every expense.

Split rule Best fit Question to settle
Equal Simple costs and one-off events Does everyone use or benefit from the expense equally?
Usage-based Utilities, groceries, or supplies How will you measure different usage?
Income-based Households with uneven earnings Will you use gross income, take-home income, or another figure?
Hybrid Groups with different rules by expense Which bills use income, and which use equal or usage-based shares?

Write the rule before entering a number. For example: "For shared household bills, each adult's share follows their monthly take-home income recorded when that bill is created."

Include the participant rule too. A trip expense might include three people from a six-person group.

Build a three-table Airtable base

Use a People table, a Bills table, and a Splits table. Splits is the junction table: each record connects one person to one bill.

Table Fields to add Purpose
People Person as the primary field; Current Income as currency; optional Income Basis Stores each person's current reference income
Bills Bill; Amount as currency; Due Date; linked Splits Stores each shared expense
Splits linked Bill; linked Person; Income Used as currency; Bill Amount; Group Income; Share Calculates one person's obligation for one bill

Create only one Split record per participant per bill. A $1,000 bill for three people needs three Split records.

Keep Income Used in Splits even if People has Current Income. Copy the agreed income into that field when you create the Split record. That preserves the math for old bills.

Add the linked records and formulas

Follow these steps in order.

  1. Add each participant to People and enter Current Income using the group's written rule.
  2. Add a bill to Bills with its amount and due date.
  3. Create one Split record for every person included in that bill. Link each row to the correct Bill and Person, then copy the person's income into Income Used.
  4. In Bills, add a Total Group Income rollup. Roll up the linked Splits' Income Used field with SUM(values).
  5. In Splits, add a Bill Amount rollup from the linked Bill's Amount field. Use SUM(values).
  6. In Splits, add a Group Income rollup from the linked Bill's Total Group Income field. Use SUM(values) again.
  7. Add a formula field named Share with this formula:

IF(OR({Group Income}=0,{Bill Amount}=0),0,ROUND({Income Used}/{Group Income}*{Bill Amount},2))

Airtable formulas use * for multiplication. Don't write the word times in the formula.

Add a check on Bills as well. Create a Total Shares rollup of the linked Splits' Share values, then add a Rounding Difference formula:

ROUND({Amount}-{Total Shares},2)

A zero result means the calculated shares match the bill. A small difference usually comes from rounding to cents.

Test the calculator with sample data

Suppose the group uses a $1,000 bill and records these incomes:

Person Income Used Share
Alex $4,000 $400
Jordan $3,000 $300
Casey $3,000 $300

Total group income is $10,000. Alex's share is $4,000 divided by $10,000, multiplied by $1,000, or $400.

Total Shares should be $1,000. If it isn't, check for a missing Split record, a duplicate participant, or a wrong income value.

Choose between live and snapshot income

Turns out, the biggest design decision isn't the formula. It's whether old bills should change when someone's income changes.

Use snapshot income when a completed bill needs to remain explainable. The Income Used value stays fixed, so updating People.Current Income won't rewrite past obligations.

Use live income when the base should always reflect the latest household position. In Splits, create a Person Income rollup from Person to Current Income. Point the Bills group-income rollup at Person Income, and use {Person Income} instead of {Income Used} in the Share formula.

Live income is convenient. It can also change every linked bill.

For recurring bills, add an Income Period date or month field if the group needs a record of which period the calculation covers. Decide how to handle a mid-month raise, unpaid leave, or irregular income. The base will follow your rule, not infer it.

Track payments separately from amounts owed

Your Share field answers what someone owes. It does not show who paid the merchant.

Thing is, one person may pay the full bill while everyone else reimburses that person later. Keep the calculated obligation and the actual payment as separate records.

Table Fields to add Purpose
Payments Payment; linked Bill; linked Paid By; Payment Date; Amount Records an actual payment
Payment Allocations linked Payment; linked Split; Allocated Amount Assigns part of one payment to one or more obligations

Payment Allocations is optional. Add it when one payment covers several people's shares or when you need a bill-level audit trail.

In Splits, roll up linked Payment Allocations' Allocated Amount into Amount Credited. Then add a Balance formula:

ROUND({Share}-IF({Amount Credited},{Amount Credited},0),2)

A positive Balance means that obligation still has money assigned to it. A negative result means it has been credited by more than its calculated share.

For a group-level net position, add these optional fields in People:

  • Owed Total: roll up linked Splits' Share values.
  • Paid Total: roll up linked Payments' Amount values.
  • Net Position: ROUND(IF({Paid Total},{Paid Total},0)-IF({Owed Total},{Owed Total},0),2)

A positive Net Position means that person paid more than their calculated share across the records included. A negative result means they still owe. The actual reimbursement happens outside this tracking base.

Make the base useful week to week

Create views that answer one question at a time:

  • Bills due: show each bill, its due date, amount, total shares, and rounding difference.
  • Shares by person: filter Splits to one person so their obligations are easy to review.
  • Unsettled balances: filter Splits where Balance is not zero.
  • Payment reconciliation: show Payments beside their allocated and unallocated amounts.

Keep raw income out of a shared summary when the group only needs to see amounts owed. A separate summary view is easier to understand and exposes less sensitive information.

Interfaces can provide a cleaner entry screen, but don't assume that a collaborator can edit only their own row. Review Airtable's interface permissions guidance, then test the actual collaborator role and field visibility before sharing the base.

Common mistakes to avoid

Mistake Why it causes trouble Fix
Using SUM({Income}) in the Share formula The formula is not collecting income across People records Roll up linked Split records first
Linking people directly to bills without Splits There is no separate row for each person's obligation Create one Split record for each bill-person pair
Including every person on every bill Nonparticipants receive an obligation Link only the people responsible for that bill
Changing a person's income for old bills Historical shares change unexpectedly Store a snapshot in Income Used
Skipping the Total Shares check Rounding or missing records can hide a mismatch Compare Total Shares with Amount
Recording only who paid You can't tell which obligations that payment covers Add Payment Allocations when needed

When a spreadsheet may be better

To be honest, Airtable isn't always the right tool. A one-off dinner or short trip may be faster to handle in a simple spreadsheet, especially when the group doesn't want to enter income in a shared base.

Airtable becomes more useful when you have recurring bills, changing participants, payment records, and several linked expenses. The benefit comes from the relationships between records, not from the income formula alone.

If privacy matters more than linked history, use a private calculation sheet and share only the agreed dollar amounts. A tool should fit the group's comfort level.

FAQ

Can one bill include only some members of the group?

Yes. Create Split records only for the participants responsible for that bill. This works for trips, shared meals, utilities, and changing roommate groups.

What happens if total group income is zero?

The formula above returns zero instead of dividing by zero. That is only a safety guard, not a meaningful proportional split. The group needs another rule, such as an equal or manually agreed amount.

Should I use gross income or take-home income?

There is no universal answer. Pick one basis, record it in Income Basis, and use it consistently. Mixed definitions make the results harder to explain.

Do I need Payments and Payment Allocations?

No. The People, Bills, and Splits tables are enough to calculate obligations. Add the payment tables when you need reimbursement records, per-bill balances, or an audit trail.

Can Airtable show who should reimburse whom?

It can show each person's calculated share and net position when payment records are linked correctly. The actual transfer still takes place outside the base.

Start with one sample bill, add one Split row per participant, and confirm that Total Shares matches Amount. Then decide whether future bills should use a fixed Income Used snapshot or a live income rollup.