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:
- Transactions: raw data from SheetLink (auto-generated, don't edit)
- Categories: your chart of accounts (income types + expense categories)
- 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 sheetB$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:
- Open SheetLink → Sync Now (10 seconds)
- Review new Transactions, fill in any missing Line Item values (~5 min)
- 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.
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.