An income-based split in Google Sheets takes each person's agreed income, divides it by the combined total, and applies that ratio to the shared slice of a bill. Add a date for the bill and a date for payment, and the same sheet works as both calculator and record. The part people miss is separation. Responsibility belongs to the income ratio. Paying belongs to whoever handed over the card. Keep those apart and the most common reimbursement mistake never happens.
Copy the two-person layout below into a blank workbook. Everything runs on ordinary spreadsheet formulas.
How the income-based math works
Two formulas carry the whole thing:
Person 1 share % = Person 1 income / combined income
Person 1 amount = total bill * shared % * Person 1 share %
A quick example. One person earns $60,000, the other $40,000, so the combined income is $100,000 and the shares come out to 60% and 40%. Point a $200 utility bill at that split and Person 1 owes $120, Person 2 owes $80.
Turns out, the payer and the responsible person can be different people. The sheet has to track both.
Choose the income basis before any bill goes in. Annual works, monthly works, but both people must use the same period and the same agreed definition of income. Record the choice on the Settings tab so it doesn't turn into a debate later.
Workbook layout
Keep inputs in one place and transactions on their own tab. Four tabs do the job.
| Tab | Main fields | Purpose |
|---|---|---|
| Settings | Person, agreed income, income share, income basis | Stores the current ratios |
| Expenses | Date, description, amount, split rule, shares, paid amounts, status | Records each bill |
| Reimbursements | Date, sender, recipient, amount, related expense, status | Tracks money sent to settle balances |
| Summary | Optional balance totals | Shows who still owes or should receive money |
Two people in this version. A larger group adds one share column and one paid column per extra person. That's the only structural change.
Create the Settings tab
-
Add a tab named
Settings. -
Enter a small table like this:
| Cell | Entry |
|---|---|
| A1 | Person |
| B1 | Agreed Income |
| C1 | Income Share % |
| A2 | Person 1 |
| B2 | 60000 |
| C2 | =IFERROR(B2/$B$4,0) |
| A3 | Person 2 |
| B3 | 40000 |
| C3 | =IFERROR(B3/$B$4,0) |
| A4 | Total |
| B4 | =SUM(B2:B3) |
| C4 | =SUM(C2:C3) |
| A6 | Income basis |
| B6 | Annual or monthly |
| A7 | Last updated |
| B7 | Enter the review date |
-
Format
B2:B4as currency andC2:C4as percentages. When total income is above zero, the two shares should land at 100% combined. -
Record whether the figures are annual or monthly. Never mix a yearly income for one person with a monthly figure for the other.
Nothing here goes past standard Google Sheets functions. If you plan to extend the workbook later, Google's Google Sheets function list is the reference worth keeping open.
Watch the zero-income edge case. If both incomes are zero, IFERROR hands back zero for both shares, and every owed amount downstream collapses to nothing. Stop there instead. Agree on an equal or custom rule rather than letting the sheet produce a misleading result.
Build the dated Expenses tab
Second tab, named Expenses. One row per bill or charge.
| Column | Header | What goes there |
|---|---|---|
| A | Date | The bill date or date the expense occurred |
| B | Description | For example, Electricity - Jan |
| C | Amount | The full bill amount |
| D | Split Type | Income-Based, Equal, Person 1 Only, Person 2 Only, or Custom |
| E | Shared % | 100% for a fully shared bill, 50% when only half is communal |
| F | Manual P1 % | Used only for a Custom split |
| G | Applied P1 % | Formula-driven share percentage |
| H | P1 Owes | Formula-driven responsibility |
| I | P2 Owes | Formula-driven responsibility |
| J | P1 Paid | Amount Person 1 paid on the original bill |
| K | P2 Paid | Amount Person 2 paid on the original bill |
| L | P1 Balance | Responsibility minus amount paid |
| M | P2 Balance | Responsibility minus amount paid |
| N | Bill Status | Pending, Paid, or another agreed label |
| O | Paid Date | Date the bill itself was paid |
| P | Notes | Exceptions, receipt details, or reimbursement notes |
Keep reimbursements out of Split Type. That column decides how a cost gets allocated. A reimbursement describes how an already-allocated balance got settled.
Enter these formulas in row 2:
| Cell | Formula |
|---|---|
| G2 | =IF($D2="Income-Based",Settings!$C$2,IF($D2="Equal",50%,IF($D2="Person 1 Only",100%,IF($D2="Person 2 Only",0,IF($D2="Custom",$F2,0))))) |
| H2 | =ROUND($C2*$E2*$G2,2) |
| I2 | =ROUND($C2*$E2*(1-$G2),2) |
| L2 | =$H2-$J2 |
| M2 | =$I2-$K2 |
Copy the formulas in G2:I2 and L2:M2 down the sheet as far as you'll ever log bills. The paid columns, J and K, stay empty until a real entry happens.
Format columns A and O as dates, C and H:M as currency, and E:G as percentages. Freeze row 1 and add a filter, which makes it easy to pull up pending bills by date or status.
Type bill dates by hand. =TODAY() moves with the calendar, and a record that's supposed to stay fixed has no business changing underneath you.
Test the calculator with one utility bill
Check the setup against the example incomes, $60,000 and $40,000. Add a $200 electricity bill dated 2026-01-15.
| Field | Value |
|---|---|
| Date | 2026-01-15 |
| Description | Electricity - Jan |
| Amount | $200.00 |
| Split Type | Income-Based |
| Shared % | 100% |
| Applied P1 % | 60% |
| P1 Owes | $120.00 |
| P2 Owes | $80.00 |
| P1 Paid | $200.00 |
| P2 Paid | $0.00 |
| P1 Balance | -$80.00 |
| P2 Balance | $80.00 |
| Bill Status | Paid |
| Notes | Person 2 owes Person 1 $80.00 |
That negative number in P1 Balance is what overpayment looks like. Person 1 covered $80 more than the assigned share. Person 2 still owes it.
The utility company got paid in full. The household hasn't settled yet.
Use equal, partial, custom, and personal rules
Income-based allocation is one option, and it won't fit every charge.
- Equal: Choose
Equalwhen both people agree to divide the shared portion 50/50. - Partial: Enter
50%inShared %when only half of a bill is communal. The remaining half drops out of both owed amounts. - Custom: Choose
Customand enter a value such as75%inManual P1 %when the group has agreed to a different ratio. - Personal: Choose
Person 1 OnlyorPerson 2 Onlyfor a charge that belongs to one person.
For a 75/25 custom split, put 75% in F2. The formula in G2 then applies 75% to Person 1 and 25% to Person 2.
Thing is, a charge doesn't become communal just because it sits on the shared sheet. Write the reason in Notes.
Track reimbursements without double-counting
Third tab: Reimbursements.
| Column | Header |
|---|---|
| A | Date |
| B | From |
| C | To |
| D | Amount |
| E | Related Expense |
| F | Status |
| G | Paid Date |
| H | Notes |
Person 1 paid the full $200 electricity bill, so P1 Paid stays at $200 on the expense row. Later, Person 2 sends Person 1 $80. That transfer gets its own row:
| Date | From | To | Amount | Related Expense | Status | Paid Date |
|---|---|---|---|---|---|---|
| 2026-01-15 | Person 2 | Person 1 | $80.00 | Electricity - Jan | Paid | 2026-01-15 |
Two mistakes live here. Logging the $80 as a second bill is the first. Rewriting the original allocation to 100% for Person 1, just because Person 1 fronted the money, is the second. Resist both.
An optional Summary tab can show the adjusted position after paid reimbursements. For Person 1, use:
=SUM(Expenses!L2:L)+SUMIFS(Reimbursements!D:D,Reimbursements!C:C,"Person 1",Reimbursements!F:F,"Paid")-SUMIFS(Reimbursements!D:D,Reimbursements!B:B,"Person 1",Reimbursements!F:F,"Paid")
For Person 2, swap the balance range to Expenses!M2:M and replace both Person 1 labels with Person 2.
Read the sign on the result. Positive, the person still needs to pay. Negative, the person should receive money.
Keep historical bills stable
Here's the catch with a living Settings tab. It holds current income, and every expense formula points straight at it, so changing the figures recalculates the share on every existing row. All of them, including bills from two years ago.
Small groups can archive first. Duplicate the Expenses tab, then use Paste special to keep values only in the formula columns. The ratios used for past bills stay frozen that way.
Incomes that change often call for a dated income history tab instead. Store the effective date, each income, and the calculated shares, then select the ratio that applies on each bill's date. The whole point is preserving the ratio everyone agreed to at the time.
To be honest, a current Settings tab is convenient but not historical. Decide whether old bills should recalculate before you touch it.
Review the sheet safely
A short routine catches most errors before they spread.
- Check the income basis and the
Last updateddate. - For each completed bill, confirm
H + IequalsC * E. - Enter a real
Paid Dateafter the bill is paid. - Format
E:Gas percentages and enter60%or0.6, never60, because percentage formatting turns 60 into 6000%. - Protect formula columns
G:IandL:Mthrough Data, then Protect sheets and ranges. - Give editing access only to people who need to enter bills or payments. Income information may be sensitive.
Status colors help scanning. Green for Paid, yellow for Pending. One simple rule beats a rainbow.
Choose the split rule by expense
Income-based splitting works when the group has agreed that income should shape shared contributions. Plenty of expenses call for a different method.
| Situation | Possible rule | Reason |
|---|---|---|
| Uneven incomes and genuinely shared household costs | Income-based | Contributions follow the agreed income ratio |
| Similar incomes and similar use | Equal | Everyone carries the same amount |
| One person uses most of a service | Usage-based or custom | The cost follows consumption |
| Bedrooms or nights differ | Room-size or nights-stayed | The allocation follows the relevant use |
| One person pays a shared bill upfront | Any agreed allocation plus reimbursement | Payment and responsibility stay separate |
| A charge belongs to one person | Personal | It does not enter the shared calculation |
Whatever rule you land on, write it in the Notes column or a small Rules tab. The next ambiguous expense always arrives before the memory of the agreement does.
Questions that come up after setup
How often should we update incomes?
Set a cadence the group can actually follow, and update after any meaningful change. If old bills need their original percentages, archive prior expense rows first.
Can annual incomes be used for monthly bills?
Yes, as long as both people use the same income period. The ratio is what matters. Record the basis so everyone knows what the percentages represent.
What happens if one person's income is zero?
With combined income above zero, the other person takes the full ratio. That may not match the group's agreement. Use Equal or Custom if it doesn't.
Can this template handle more than two people?
The principle scales. The formulas above don't. For three or more, add each person's income to Settings and give every person a separate share, owed, and paid column. Don't lean on 1-G2 for the extras, because that only ever accounts for two people.
Should a reimbursement change the original bill row?
No. The expense row keeps its original payer and allocation. The later transfer gets its own record, with its own date and status.
Put the first bill through the sheet
Create Settings, enter the two agreed incomes, and add one dated utility or rent row to Expenses. Check that the owed amounts equal the shared portion of the bill. Fill in the paid columns with the actual payer. Log any later transfer on Reimbursements.
Start with one bill, not the whole backlog.