BlogHow-to

How to Build a P&L in Google Sheets Using Live Bank Transactions

A step-by-step guide to building a real Profit & Loss statement in Google Sheets, populated from your bank accounts via SheetLink.

Press Sync now and new transactions land at the end of your Google Sheet.

A Profit & Loss statement doesn't need to be complicated. At its core, it's income minus expenses, organized by category and time period. Google Sheets can do this well. The hard part has always been getting clean transaction data in without manual entry.

This guide shows you how to build a practical P&L in Google Sheets, fed by live bank transactions from SheetLink.

What We're Building

A three-sheet setup:

  1. Transactions: raw data from SheetLink (auto-generated, don't edit)
  2. Categories: your chart of accounts (income types + expense categories)
  3. P&L: the summary that pulls from Transactions using SUMIFS

Step 1: Get Your Transactions Into Sheets

Install SheetLink, connect your bank accounts, link a Google Sheet, and run a sync. You'll have a Transactions sheet with all Plaid transaction fields, including date, description_raw, merchant_name, amount, category_primary, and more.

If you haven't done this yet, start here.

Step 2: Add a "Line Item" Column to Transactions

Add a column called Line Item at the end of your Transactions sheet. This maps each transaction to a P&L category.

You can do this two ways:

Option A: Manual mapping (most accurate). Fill in Line Item as you go. For recurring merchants, use a lookup table to auto-fill using the merchant_name column: =IFERROR(VLOOKUP(merchant_name_cell, MerchantMap!A:B, 2, 0), "") where MerchantMap is a two-column sheet of merchant name → line item.

Option B: Use Plaid categories. Plaid auto-categorizes most transactions via category_primary. You can map those to P&L line items with a lookup: =IFERROR(VLOOKUP(category_primary_cell, CategoryMap!A:B, 2, 0), category_primary_cell).

Tip

Start with Option B to get something working, then refine specific merchants where Plaid's category is wrong. 80% accuracy out of the box is good enough to start.

Step 3: Define Your P&L Structure

In a new sheet called P&L, set up your line items. A simple structure for freelancers / small businesses:

Revenue

  • Client Revenue
  • Product Sales
  • Other Income

Cost of Goods Sold (if applicable)

  • Contractor Payments
  • Direct Materials

Operating Expenses

  • Software & Subscriptions
  • Advertising & Marketing
  • Travel & Transportation
  • Meals & Entertainment
  • Office & Supplies
  • Professional Services
  • Bank Fees
  • Other Expenses

The key numbers:

  • Gross Profit = Revenue − COGS
  • Operating Expenses (total)
  • Net Profit = Gross Profit − Operating Expenses

Step 4: Build the SUMIFS Formula

For each line item and each month, use SUMIFS to pull from Transactions. Since SheetLink writes many columns, use MATCH to find the right columns by header name rather than hardcoding column letters:

=SUMIFS(
  INDEX(Transactions!$A:$AJ, 0, MATCH("amount", Transactions!$1:$1, 0)),
  INDEX(Transactions!$A:$AJ, 0, MATCH("Line Item", Transactions!$1:$1, 0)), $A5,
  INDEX(Transactions!$A:$AJ, 0, MATCH("date", Transactions!$1:$1, 0)), TEXT(B$2, "yyyy-mm") & "*"
)

Where:

  • $A5 = the line item label in column A of your P&L sheet
  • B$2 = the first day of the month (e.g. =DATE(2026,B1,1))

SheetLink writes dates as text (YYYY-MM-DD), so the formula matches the month as text: TEXT(B$2, "yyyy-mm") & "*" matches every date that starts with, say, 2026-03. A ">="&DATE(...) comparison would find nothing, because a text date never compares equal to a number.

Put months in columns (B = Jan, C = Feb, etc.) and line items in rows. Fill right and down.

Amounts follow Plaid's sign convention: positive is money out, negative is money in. So for your Revenue line items, put a minus sign in front of the formula (=-SUMIFS(...)) so revenue shows as a positive number.

Step 5: Add Totals and Formatting

Add SUM rows for:

  • Total Revenue
  • Total COGS
  • Gross Profit = Total Revenue − Total COGS
  • Total Operating Expenses
  • Net Profit = Gross Profit − Total Operating Expenses

Conditional formatting: green for positive Net Profit, red for negative.

The Monthly Routine

Once this is built, your monthly close takes about 10 minutes:

  1. Open SheetLink → Sync Now (10 seconds)
  2. Review new Transactions, fill in any missing Line Item values (~5 min)
  3. Your P&L sheet updates automatically, with no other action needed

That's it. No accounting software, no monthly fee, no data locked in a system you don't control.

When to Upgrade to Accounting Software

This setup works well for:

  • Freelancers and consultants on cash-basis accounting
  • Small businesses with straightforward income and expenses
  • Anyone who primarily wants to answer "am I profitable?"

You'll outgrow it when you need:

  • Accounts payable/receivable tracking
  • Accrual accounting (revenue recognized when earned, not when received)
  • Multi-currency support
  • Payroll integration
  • Automated invoicing

For most independent workers, that's a long way off.

SheetLink Pro

Every bank you connect, two years of history, and Excel as well as Google Sheets.

Compare plans ›

Full refund within 14 days. Cancel anytime.

Questions

Can I build a P&L in Google Sheets without accounting software?

Yes. A simple P&L is just income minus expenses, broken down by category and period. Google Sheets handles this well with SUMIFS formulas and a few well-structured sheets.

How accurate is a Google Sheets P&L compared to QuickBooks?

For small businesses and freelancers, a Sheets-based P&L is accurate enough for most purposes, especially for cash-basis accounting. The main difference is that QuickBooks handles accounts payable/receivable and accrual accounting. If you invoice clients on net-30 terms, you may eventually outgrow Sheets.

Does SheetLink categorize transactions automatically?

SheetLink writes Plaid's auto-detected category for each transaction. You can accept these or add your own category column with custom labels for your P&L.

Can I share this P&L with my accountant?

Yes. Share the Google Sheet with view or edit access. No software to install on their end.

See it work.

Free with one bank and your last 7 days. Pro and Max sync every bank, two years back. Add to Chrome ›

Keep reading.

Your bank data, in your control.

Free for one bank and your last 7 days. No card needed.