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, persona-aware default) The same Gmail scan that captures receipts can also pick 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 write them to the Income tab automatically.
It starts on for earning-focused setups such as Freelancer, Incorporated, Realtor, Content Creator, and Rideshare/Delivery. It starts off for expense-only or managed-work setups such as Employee, Employer, Accountant, Executive Assistant, and Personal. The specific use cases you pick during setup refine the broad role: earning use cases (Rental Property/Landlord, Content Creator, Rideshare/Delivery, Film/Production, Investment Manager) start income detection ON even under an expense-only role, while expense-only use cases (Wedding, Shared Expenses, Medical Reimbursement) start it OFF when no earning use case is selected — so a freelancer planning a wedding starts expense-only, but a freelancer with rental properties keeps income detection on. This is only the new-account default: ExpenseBot does not change an existing choice when you later change roles.
To turn it on or off: Settings → Automation Hub → Gmail scanning → "Also track income emails (beta)". Your expense scanning stays on when income detection is off — only income emails stop being added.
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:
You can also attach an income screenshot, PDF, CSV, TSV, or text export in ChatGPT or Claude. ExpenseBot parses the file and shows the complete proposed rows before anything is saved; you then confirm the exact import. Imports over 100 parsed rows, or anything that benefits from visual editing, open the same authenticated Add Income review used in the app.
- 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.
Not every deposit is business revenue. In Review income, use Owner contribution / personal deposit for money you moved into the business yourself. Example: transferring $1,000 from personal savings into the business account. The cash movement stays recorded, but ExpenseBot leaves it out of P&L and Income by Source revenue. Use Omit instead for a duplicate or irrelevant row that should be excluded from all future ExpenseBot calculations.
