Yes — when you connect your bank, ExpenseBot matches every deposit against the entries already in your Income tab so you don't get double-counted.
How to connect your bank.
- Open Add Income and choose Add income from bank deposits (the same button is in the Review income toolbar).
- On the Bank Account row, click Connect.
- Click Connect Bank, then I Agree & Continue on Plaid's consent screen.
- Search for your bank and sign in. Some banks, such as Chase and Wells Fargo, open their own secure sign-in page and then return you to ExpenseBot.
When Plaid confirms the connection, ExpenseBot enables the checking accounts you selected and returns you to Add income from bank deposits. Your first bank sync can take up to 24 hours. Return to Add Income → Add income from bank deposits to review matched deposits and add any missing income. You do not need to connect the bank again.
Bank and card matching are separate. If you connected only a checking account, Add Income → Add income from bank deposits shows the bank as connected, while Review expenses → Check card months still asks you to connect a credit card. That does not mean your checking-account connection failed.
Connecting a bank needs a paid subscription and works with banks in the United States and Canada. Prefer not to connect? Click Add Income → Log Income → From screenshot or PDF for a bank statement PDF, or From CSV for a CSV. Review proposed deposits and remove transfers or income already recorded before saving. Manual import adds selected income rows; it does not run this Plaid deposit matcher or populate Year-End bank tabs. See manual statement uploads.
The matching problem. A single payment often shows up in three places: an email from the platform (e.g. "Your Stripe payout is on the way"), a manual entry you logged, and the deposit landing in your bank account. Without matching, that one $1,250 client payment becomes $3,750 of phantom income on your tax return.
How ExpenseBot solves it. Every deposit runs through a 4-layer matcher against your existing Income tab:
- Entity ID match — exact platform transaction IDs (Stripe
ch_..., PayPaltxn_...) are matched first - Normalized merchant match — payer names are stripped of punctuation, case, and noise tokens before comparison
- Token-subset match — handles the common case where the email says "Stripe Inc" and the bank says "STRIPE"
- AI canonicalization — for edge cases (e.g. "PayPal *Etsy" on the bank, "Etsy" in the email), Gemini canonicalizes both sides to the same merchant
Matches dedupe automatically. Anything that doesn't match surfaces as a "potential income" gap for you to review.
Reviewing gaps. Once a month (or anytime), open Add Income → Add income from bank deposits to see every unmatched deposit. For each one you can:
- Add to Income — record it in your Income tab as a new entry
- Never Flag — for transfers between your own accounts, refunds you don't want counted, or anything else that isn't income (the rule sticks for that source going forward)
- Review match — shown when a deposit looks like payment for one of your invoices, so you can link it to that invoice instead of adding it twice
Year-end benefits. Your tax report's Bank Summary tab shows a reconciliation status: ✓ Reconciled at ≥83% of months reconciled, ⚠️ Partial below that, ℹ️ Not enabled if you haven't connected a bank. This tells your accountant (or future-you at filing time) whether the income totals are bank-verified.
The matched income flows into the right tax form automatically:
- Schedule C Line 1 (US) / T2125 Line 7 (Canada) — gross business receipts
- Schedule B (US) / T5 summary (Canada) — interest and dividend income reserved for separate worksheet treatment
- Schedule E (US) / T776 (Canada) — rent deposits routed to the right property when the deposit description matches a property tag
The Income tab stays the single source of truth — manual entries, Gmail-detected income, and bank-matched deposits all live there together, deduped at write-time.
