Yes — ExpenseBot tracks income alongside expenses. Four input methods feed a single Income tab in your spreadsheet, and a reconcile-with-bank step keeps everything in sync.
1. Gmail income detection (live, on by default) The same Gmail scan that captures your receipts now also picks up emails about money you've received — Stripe payouts, Cash App for Business deposits, Zelle / Venmo / Square / PayPal Business / Interac e-Transfer notifications, invoice-paid confirmations, and rent receipts — and writes them to the Income tab automatically. This runs whenever your nightly Gmail scan runs; no extra setup. To turn it off: Settings → Gmail Automation → uncheck "Also track income emails (beta)". Your expense scanning stays on if you do that — only the income side stops.
2. Bank connection (live) Connect your bank and ExpenseBot reconciles deposits against your Income tab on a regular cadence. Deposits from known platforms — Stripe, PayPal, Venmo, Zelle, Square, Etsy, Airbnb, and others — are flagged as income. Anything that doesn't already match an Income tab entry surfaces as a "potential income" gap for review. Business income auto-fills Schedule C Line 1 (or T2125 Line 7 for Canada) at year-end.
3. Add Income — voice, screenshot, PDF, CSV, or manual entry (live) Tap the Add Income button in the app to log any payment that didn't come through your bank or Gmail. Five input modes feed the same review-and-save flow:
- Voice — describe what came in ("$400 cash from Friday's gig plus $80 in Venmo tips") and the AI splits it into separate entries with the right payment method, payer, and category.
- From screenshot or PDF — upload a screenshot of an Apple Wallet payment list, an OnlyFans subscriber export, or a multi-page PDF statement (Cash App monthly, Stripe payout, PayPal monthly, Square deposit summary, generic bank statement). Gemini reads the rendered layout — including multi-page tables — and returns one row per visible payment.
- From CSV — drop a transaction CSV from any payment or creator-economy platform (Cash App, Clips4Sale, Throne, Patreon, Ko-fi, Gumroad, Fansly, Stripe, PayPal, Venmo, Square, etc.). The AI auto-detects the columns regardless of layout, locale, or currency — no manual column mapping. Caps at 500 KB; for the largest backfills, split into smaller files (one month at a time works well). Excel users: ExpenseBot accepts CSV/TSV/TXT but not Excel (.xlsx) directly yet — open your file in Excel or Google Sheets and use File → Save As → CSV (takes about 10 seconds), then upload that.
- Manual entry — pick a category (royalty, freelance, rental, sales, etc.), source, date, and amount.
All five paths land in the same review screen so you can edit, tag, and remove rows before submitting. Bulk save handles up to 50 entries per submission. The right path for cash-heavy professions where most income never shows up in a bank deposit or an email — and the right path for backfilling historical income from creator platforms that don't notify by email.
Refunds are tracked too. When you record a customer refund (money you sent back to a customer who previously paid you), it lands as a negative-amount row on the Income tab with the right Schedule C Line 2 / T2125 Line 8290 routing — and dedupes against any email-detected refund of the same event so you never get a duplicate row. Same convention whether the refund came in via Gmail, CSV import, PDF import, or manual entry.
4. Schedule C / T2125 worksheet (live) When you generate a year-end tax report, the worksheet tab lets you fill in gross receipts, returns and allowances, and other income directly — useful for catch-up entries, prior-year corrections, or any source not already captured.
Reconcile with bank — once a month (or anytime, on demand), click Reconcile with bank to compare your Income tab against the deposits in your linked bank account. ExpenseBot lists every gap and lets you accept, edit, or ignore each one in seconds. Your year-end report shows a reconciliation status (✓ once you've reconciled at least 83% of months in the year) so your accountant knows whether the totals are bank-verified.
No double-counting. When the same payment shows up in two places — say, a Stripe email and the Stripe deposit hitting your bank — ExpenseBot's matcher recognizes them as the same event and only counts it once. The Income tab is the single source of truth; manual entries, Gmail-detected income, bank reconciliation matches, and year-end worksheet adjustments all flow through it.
