Income & Expense Tracker
Both sides of P&L automated. One Google Sheet.

Income & Expense Tracker — Both Sides of Your P&L, Automated

Most expense trackers only track the outflow — you still keep a separate spreadsheet for income. ExpenseBot does both: expenses come from Gmail receipts, income comes from bank deposits and email confirmations, and the result is one Google Sheet that doubles as your Schedule C (US) or T2125 (Canada) at year-end. Built for freelancers, gig workers, sole proprietors, and rental property owners.

Start My Automatic P&L Free →

60-day free trial • No credit card • Income + expense tracking included

Why You Need an Income AND Expense Tracker

Pick almost any expense-only tracker on the market and you'll find the same gap: it records what you spend, but not what you earn. So self-employed users keep a second spreadsheet, export bank CSVs every quarter, or wait until April to reconstruct a year of income from invoices. (If you're specifically comparing tools, see how ExpenseBot stacks up against Expensify — that's the best place for that comparison.)

That's backwards. Schedule C (US) requires both sides — Line 1 gross receipts plus Lines 8–27 deductions — and the IRS computes your tax on the difference. Tracking only one side leaves you guessing about the other. ExpenseBot captures both: receipts via Gmail scan, income via bank connection plus invoice/payout emails, and writes them to a single Google Sheet you own.

Automatic Income Tracking via Bank Connection

Connect any bank — US or Canadian — through Plaid. ExpenseBot reads deposits and tags them automatically: client wires, ACH from Stripe/PayPal/Square, weekly Uber/DoorDash/Instacart settlements, Etsy/Shopify payouts, rent payments, refunds. No CSV uploads, no manual entry, no end-of-month reconciliation marathon.

Income from Gmail also flows in: Stripe payout notifications, invoice-paid confirmations, Square deposit emails, rent receipts. Both sources land in the same Income tab, deduped by amount + date + merchant — so a Stripe email and the matching bank deposit don't double-count. For income that has no digital trail (cash tips, venue checks, paper rent), there's a one-tap Add Income button.

Automatic Expense Tracking via Gmail + Photos

ExpenseBot scans Gmail going back up to 6 years for every receipt: vendor invoices, SaaS subscriptions, travel bookings, Amazon orders, ride-share, food delivery, ad-platform charges. Each receipt is read by AI, line items extracted, and the expense categorized into the right Schedule C bucket (or T2125 line in Canada).

For paper and cash receipts, snap a photo (or import from Google Photos) — the same AI pipeline extracts merchant, total, tax, date, and category. No retyping. Mixed receipts (a Costco run with both office supplies and groceries) get split into multiple rows with separate categories.

Profit & Loss Report — One Click

Income minus expenses equals taxable profit. ExpenseBot computes this on demand: pick a date range (year-to-date, last quarter, last month) and the report shows gross income (Schedule C Line 1), returns/refunds (Line 2), gross income (Line 3 = Line 1 − Line 2), each expense category (Lines 8–27), total expenses, and net profit (Line 31).

Use the result for quarterly estimated tax payments, hand the PDF to your accountant, or export to CSV/Excel for QuickBooks or Xero. Schedule C lines per IRS instructions: irs.gov/instructions/i1040sc.

Works for Every Self-Employed Type

  • Freelancers — 1099-NEC client income on the income side, business expenses (software, contractors, marketing) on the expense side. See the dedicated freelancer page.
  • Gig workers — Uber, DoorDash, Lyft, Instacart, Spark weekly settlements as income; mileage, phone, supplies as expenses.
  • Etsy/Shopify sellers — platform payouts as income; materials, shipping, packaging, fees as expenses.
  • Content creators — YouTube AdSense, TikTok Creator Fund, Patreon, Substack, brand-deal payouts as income; equipment, software, props as expenses.
  • Rental property owners — rent received as income; repairs, mortgage interest, insurance, property tax as expenses. See the rental property tracker (Schedule E / T776) and real estate persona.
  • Small agencies and multi-entity owners — track per-client P&L or per-entity P&L from one inbox via the CFO/multi-entity report.

Bank Reconciliation Built In

Plaid pulls every bank and credit-card transaction. ExpenseBot matches each transaction against the receipts it found in Gmail using a 4-layer matcher (entity ID, normalized merchant, token-subset, AI canonicalization). Matched: green check. Receipt-without-bank: probably a personal-card purchase. Bank-without-receipt: a missing receipt the system flags so you can take a photo or pull the invoice.

Duplicate detection runs across Gmail, photo imports, and bank feeds — so a vendor that emails a receipt AND charges your card doesn't appear twice. The reconciliation chip in the report shows what percentage of the year is fully reconciled — accountants love this.

ExpenseBot vs QuickBooks vs Wave vs Spreadsheet

For solo operators, the question is rarely "which full accounting suite?" but "what's the lightest tool that gives me a tax-ready P&L?"

CapabilityExpenseBotQuickBooksWaveSpreadsheet
Auto-scan Gmail for expensesYesNoNoNo
Bank-deposit income captureYes (Plaid)YesYesManual
Schedule C / T2125 form fillYesAdd-onManualManual
Data lives in your Google DriveYesNoNoYes
Monthly cost (single user)$10$30+Free / $16$0 + your time

Automatic Gmail Income Detection — No Setup Required

The same Gmail scan that pulls your receipts now writes income to a new Income (Beta) tab automatically. Payment notification emails from Stripe, PayPal, Venmo, Zelle, Cash App, Square, and Interac e-Transfer are detected and logged as income rows — no bank connection required, no CSV uploads, no manual entry for platform payouts. Detection covers 7+ payment rails out of the box, with country-aware matching for Canadian Interac e-Transfer alongside US rails (Zelle, Venmo) and global processors (Stripe, PayPal, Square).

For Gmail scanning users, income detection is on by default — no reconfiguration needed. Opt-out is one click in Settings → Gmail Automation. Anti-duplication is built in: a 4-layer matcher cross-checks each detected payment against existing income rows by amount, date, source, and normalized merchant, so a Stripe payout that generates both a deposit notification and a weekly summary email doesn't get double-counted. Income that has no email trail (cash, cheques, wire transfers without a confirmation email) has a one-tap Add Income manual entry path. The nightly Gmail scan cycle keeps your Income tab current without any action on your part.

Note: Gmail Income Detection reads payment notification emails only. It does not cover crypto or W-2 salary income — those require separate platforms or a bank connection. Questions or edge cases? Reach us at expensebot.ai/chat.

Income by Source Report — Who Paid You This Year

Once you have income rows in the tab, ExpenseBot rolls them up into an Income by Source report — one row per payer showing total received, transaction count, first and last payment date, and average payment size. Smart grouping collapses "Stripe", "STRIPE INC", and "Stripe Inc." into a single row so you see one line per platform, not a dozen spelling variants.

Tax flag chips surface automatically. A yellow chip appears when a single payer crosses $600 — the 1099-NEC zone where a filing obligation exists for the payer. An orange chip appears above the current 1099-K threshold for payment processors (the threshold has changed recently — see irs.gov for current thresholds). You know before year-end which clients or platforms may send you a form — no surprises in January.

The report doubles as your Schedule C Line 1 backup: the total of all rows equals your gross receipts, the figure that goes on Line 1 of Schedule C (or T2125 Line 8000 for Canadian filers). Filter by date range — year-to-date, a specific quarter, or a custom window — to build quarterly estimated-tax estimates or hand your accountant a clean income summary at year-end. The Income by Source report appears in My Reports once you have at least one income row. Coming soon — the Income (Beta) tab is live now.

Who Benefits Most from Automatic Income Tracking

  • Multi-platform freelancers — Stripe invoices, PayPal transfers, and Wise payouts all land in one Income tab. No toggling between three dashboards to reconcile what you earned this month.
  • Etsy and Shopify sellers — payout emails from both platforms are detected automatically, giving you a running total of gross sales for Schedule C Line 1 without downloading CSVs each month.
  • Side-hustle workers — captures income that will never get a 1099. If no single client crossed $600 this year, you still owe tax on all of it — and the Income tab gives you documentation to prove what you earned, even without a form.
  • Musicians and live-event workers — Cash App tips (email detection) and Stripe ticket-sales payouts (email detection) flow in automatically. Venue checks (cash or paper) take ten seconds to add manually. The Income by Source report shows what came from live gigs versus online sales.

Start your automatic P&L in under 5 minutes

Connect Gmail for expenses. Connect your bank for income. Watch your Schedule C / T2125 build itself.

Start My Automatic P&L Free →

60-day free trial • No credit card required

Frequently Asked Questions

What is an income and expense tracker?

An income and expense tracker is a tool that records both money coming in (income, revenue, deposits) and money going out (expenses, costs) so you can see your profit at a glance. For self-employed people, it produces an automatic profit & loss statement (P&L) that maps directly to Schedule C in the US or T2125 in Canada — no manual spreadsheet, no double-entry bookkeeping, no monthly accountant cleanup.

Can I connect my bank account to track income automatically?

Yes. ExpenseBot connects to 12,000+ banks via Plaid (US and Canada). Deposits are captured automatically and categorized as client payments, platform payouts (Stripe, PayPal, Uber, DoorDash, Etsy), refunds, or transfers. You can also feed income from Gmail (Stripe payout emails, invoice confirmations, rent receipts) — the same Income tab dedupes across both sources so you never double-count a deposit and an invoice.

How is this different from QuickBooks?

QuickBooks is full accounting software with double-entry bookkeeping, AR/AP, payroll, and a ledger. ExpenseBot is a lightweight income + expense tracker for solo operators who don't need that complexity. The output is a Google Sheet you own, not a closed accounting database. If your accountant wants QuickBooks, you can export from ExpenseBot — but most freelancers and gig workers find Schedule C / T2125 P&L is all they actually need.

Does this work for Canadian freelancers?

Yes. Plaid supports Canadian banks, ExpenseBot detects your country from your locale, and income categorizes to T2125 lines while expenses categorize to CRA-compliant categories. GST/HST and PST/QST are tracked separately so you can file your sales-tax return without re-keying anything.

Can I track income from multiple sources?

Yes. The Income tab handles unlimited streams: 1099-NEC client payments, Stripe deposits, PayPal payouts, Uber/DoorDash/Instacart weekly settlements, Etsy/Shopify sales, rental income, retainers, royalties, dividends, and interest. Each row tags the source so you can filter or build per-stream reports — useful for content creators and gig workers who get paid by 4–6 platforms a month.

What Schedule C lines does it map income to?

Schedule C uses Line 1 (gross receipts or sales), Line 2 (returns and allowances), and Line 3 (gross income = Line 1 minus Line 2). ExpenseBot writes deposit amounts to Line 1, refunds and chargebacks to Line 2, and computes Line 3 automatically. Expenses flow to Lines 8–27 (advertising, car, office, supplies, travel, meals, etc.). Source: irs.gov/instructions/i1040sc.

Do I have to manually enter cash income?

No. Cash and check income (musicians' venue checks, contractor cash jobs, tips) can be entered manually via the in-app Add Income button — typically 10 seconds per entry. Bank deposits and Gmail-captured income come in automatically. The mix of automatic-plus-manual is intentional: most self-employed people have at least one income stream that doesn't show up in email or bank feeds.

What happens at year-end?

Click "Generate Schedule C" (or "Generate T2125" in Canada) and ExpenseBot fills the form for you — gross income, expense lines, net profit. Income comes from the Income tab, expenses from the Expenses tab, both already categorized. You hand the PDF to your accountant or upload it to your tax software. No reconstructing a year of receipts in March.

Does ExpenseBot track income automatically?

Yes. Gmail Income Detection reads payment notification emails from Stripe, PayPal, Venmo, Zelle, Cash App, Square, and Interac e-Transfer — and writes them to your Income (Beta) tab automatically. The same Gmail scan that pulls your receipts now captures income too. Default on for Gmail scanning users; opt-out is one click in Settings → Gmail Automation.

Do I need to connect my bank for income tracking?

No. Gmail Income Detection works from email notifications alone — the same scan that pulls your expense receipts. You don't need a Plaid bank connection for income detection. A bank connection via Plaid adds deposit-level reconciliation on top, but the Income tab fills automatically from Gmail without it.

Can I see which clients paid me and how much?

Yes. The Income by Source report shows one row per payer with total received, transaction count, first and last payment dates, and average payment size. Smart grouping collapses name variants (Stripe, STRIPE INC, Stripe Inc.) into one row. Tax flags surface automatically: yellow chip at $600+ (1099-NEC zone), orange chip above the current 1099-K threshold. This feature is coming soon — the Income (Beta) tab is live now.

Does it catch Venmo and Cash App income?

Yes. Payment notification emails from Venmo, Cash App, Zelle, and other supported rails are detected and logged to the Income tab. A 4-layer anti-duplicate matcher prevents the same payment from appearing twice if multiple emails reference it. Income that arrives via cash or methods with no email notification can be added manually in under 10 seconds.

What about 1099-K thresholds?

The Income by Source report flags any payment processor above the current 1099-K reporting threshold with an orange chip automatically. Because this threshold has changed multiple times recently, ExpenseBot links to the IRS directly rather than hard-coding a dollar figure — see irs.gov for current thresholds. You still owe tax on all income regardless of whether a 1099-K is issued.