Back to BlogAutomation

Track Real Estate Commissions in Google Sheets (With Auto-Calculations)

Build a commission tracker that handles splits, caps, and team overrides automatically in Google Sheets. Stop using "napkin math" for your paycheck.

December 26, 2025
3 min read

You just closed a $500k deal. 3% commission. Great. But wait-split with the broker is 70/30. There's a 6% franchise fee off the top. You hit your cap last month, so maybe it's 100%? And you owe your Transaction Coordinator $350.

Trying to calculate your "Net Agent Income" manually on every deal leads to errors. And errors mean you might be overpaying (or underpaid).

The Calculator

Build a spreadsheet that takes your Gross Commission Income and runs it through the logic: check your cap status, deduct franchise fees, apply your split, subtract TC fees. Out comes your actual net check.

The Code: Split Calculator

1. Setup

  • Sheet "Deals": Col A: Agent, B: GCI, C: Net Payout.
  • Sheet "Agents": Col A: Name, B: Split (e.g., 0.70), C: Cap (e.g., 15000), D: Paid YTD.

2. The Script

This script runs when you click a button "Calculate Commission".

function calculateCommission() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const dealSheet = ss.getSheetByName('Deals');
  const agentSheet = ss.getSheetByName('Agents');
  
  const dealRow = dealSheet.getActiveCell().getRow();
  const agentName = dealSheet.getRange(dealRow, 1).getValue(); // Col A
  const gci = dealSheet.getRange(dealRow, 2).getValue();         // Col B
  
  if (!gci || !agentName) return;
 
  // 1. Fetch Agent Stats
  const agentData = getAgentData(agentSheet, agentName);
  
  if (!agentData) {
     SpreadsheetApp.getUi().alert("Agent not found!");
     return;
  }
  
  let split = agentData.split;
  let capRemaining = agentData.cap - agentData.paidYTD;
  
  // 2. Logic: Cap Enforcement
  // If they have met their cap, split is 100% (1.0)
  if (capRemaining <= 0) {
    split = 1.0;
  }
  
  // 3. Calculate Company Share
  let companyShare = gci * (1 - split);
  
  // Handle partial cap (if this deal pushes them over)
  if (capRemaining > 0 && companyShare > capRemaining) {
    companyShare = capRemaining;
  }
  
  // 4. Net Payout
  const netAgent = gci - companyShare;
  
  // 5. Write Result
  dealSheet.getRange(dealRow, 3).setValue(netAgent);
  dealSheet.getRange(dealRow, 4).setValue(companyShare); // Log company dollar
  
  // Optional: Update Agent's Paid YTD automatically here
}
 
function getAgentData(sheet, name) {
  const data = sheet.getDataRange().getValues();
  for (let i = 1; i < data.length; i++) {
    if (data[i][0] === name) {
      return {
        row: i + 1,
        split: data[i][1],
        cap: data[i][2],
        paidYTD: data[i][3]
      };
    }
  }
  return null;
}

Advanced: Team Overrides

Managing a team? Add a "Rainmaker" percent. Just deduct another line item: const teamLeadCut = gci * 0.10; before calculating the agent split.

Build vs. Buy

Brokerage software (DotLoop, SkySlope) handles compliance, but their commission modules are often $100/agent/month add-ons. Spreadsheets are free, transparent, and you can audit every penny.

Newsletter

Get more tips like this

Subscribe for practical Google Workspace automation tips.

Free updates. No spam. Unsubscribe any time.

Want more help?

We're here to help. Drop us an email and let's explore how we can optimize your workflows.

Email us

hello@mereth.dev

real estate automationcommission trackingGoogle Sheets financeApps Script payrollbrokerage managementincome tracking