Who this page is for
If you hold stocks at 2+ brokers, this page is for you.
The most common setup we see: Schwab for long-term holdings, Fidelity for the IRA, IBKR for international markets. Or DeGiro plus a native EU broker. The moment you hold the same ticker at two brokers, your 1099-Bs stop being self-contained — FIFO cost basis, wash sale rules, and Schedule D output all assume a consolidated view that no single broker produces. This page shows how to actually get one.
The problem: 3 brokers, 4 ways your tax report breaks
Each broker hands you a 1099-B that is internally correct and externally useless. Once the same ticker lives at two brokers, the math your filing actually needs — FIFO cost basis across the combined position — can't be done from any single broker's report. Here are the four failure modes we see most often:
FIFO mis-allocation
Your selling broker assigns cost basis from its own oldest lot. If you have older lots at a different broker, FIFO law says those should be consumed first. Filing broker-by-broker reports the wrong gain — usually short-term when it should be long-term.
Cross-broker wash sales missed
The 30-day wash sale rule (IRC §1091) applies across all your accounts. Sell at a loss in Schwab, buy back at Fidelity within 30 days — the loss is disallowed. Neither broker's 1099-B will flag it. Most filers don't catch this.
"Basis unknown" lots after transfers
ACAT transfers between brokers often arrive with the cost basis flag set to "non-covered." Your 1099-B labels real, knowable lots as unknown. TurboTax-imported reports inherit the gap and you end up entering basis by hand — one row at a time.
Multi-currency cost basis drift
If one broker books in USD and another in GBP/EUR (or in GBX pence), each broker computes cost basis in its own native currency. Without a daily FX overlay applied consistently across brokers, your USD-reported gain on a UK-listed stock can be hundreds of dollars off.
The hidden cost: filing without consolidation
Across the users we see, the median tax delta between filing broker-by-broker and filing from a consolidated FIFO ledger is several hundred dollars per tax year. Most of it is short-term-vs-long-term misclassification — a 17-percentage-point difference at the federal level alone. The worked example below shows the math.
How it works: 3 steps
The flow is built around the principle that nothing leaves your hands. Brokers connect read-only, your data stays private, and the final artifact is the actual filable PDF.
Connect → Unify → Export
Worked example: Sarah's AAPL trade across 3 brokers
Sarah holds Apple at three brokers. In October 2025 she sells 250 shares from her IBKR account at $230. Three 1099-Bs arrive in February. None of them tells her the right answer on their own.
The starting position
Sarah's AAPL lots, by broker
| Broker | Holding | Buys (lots) | 2025 sell |
|---|---|---|---|
| Schwab | AAPL | 100 @ $145 (Mar 2022); 50 @ $170 (Nov 2022) | — |
| Fidelity | AAPL | 200 @ $180 (Apr 2024) | — |
| IBKR | AAPL | 75 @ $195 (Jan 2025) | Sold 250 @ $230 (Oct 2025) |
The trap: each broker's 1099-B answers a different question
IBKR's 1099-B shows the sale against its own 75-share lot @ $195, then reports the remaining 175 shares as “basis unknown / non-covered.” If Sarah imports each 1099-B independently into TurboTax, she'll either flag the 175 shares as needing manual basis entry, or worse, file with the wrong basis assigned. The correct FIFO match runs across all three brokers as one combined ledger.
What AllInvestView does: FIFO across the consolidated ledger
Lots consumed to satisfy the 250-share sale at $230
| # | From | Date | Qty | Cost basis | Proceeds | Gain | Term |
|---|---|---|---|---|---|---|---|
| 1 | Schwab | 2022-03 | 100 | $14,500 | $23,000 | +$8,500 | LT |
| 2 | Schwab | 2022-11 | 50 | $8,500 | $11,500 | +$3,000 | LT |
| 3 | Fidelity | 2024-04 | 100 | $18,000 | $23,000 | +$5,000 | ST |
| Σ | Total | — | 250 | $41,000 | $57,500 | +$16,500 | mixed |
Schedule D split: $11,500 long-term capital gain (from the 2022 Schwab lots) + $5,000 short-term capital gain (from the 2024 Fidelity lot). The 75-share lot @ $195 at IBKR is not consumed by FIFO — it stays in Sarah's combined position with its original basis intact.
The wrong answer (if she filed each broker separately)
Filing IBKR's 1099-B as-is, the sale of 250 shares against the 75-share IBKR lot @ $195 = $2,625 short-term gain on the 75 shares matched, plus 175 shares with “basis unknown.” Best-case manual entry treats the remaining 175 against the most recent Fidelity lot @ $180, giving $5,000 + $3,750 = $8,750 short-term gain on 175 shares. Total reported as short-term: ~$11,375. The actual short-term portion is only $5,000.
The right answer (consolidated FIFO)
$11,500 long-term + $5,000 short-term = $16,500 total. Mis-classifying ~$6,375 as short-term that should be long-term costs Sarah roughly $1,084 in extra federal tax at a typical 32% ordinary / 15% long-term rate spread (a 17pp gap on $6,375). State tax adds more. The same math applies at any scale — the dollar delta grows with the position.
This is the kind of calculation we run for you. Read-only broker access, results in minutes, your portfolio stays private.
See your own multi-broker tax delta
Connect your brokers (or import CSVs) and we'll show you the consolidated FIFO result against each 1099-B in side-by-side reconciliation.
How AllInvestView compares
An honest look at the five tools investors actually consider when they hit the multi-broker problem. We win on cross-broker FIFO and wash sale detection, plus the bond/options tax accounting. Other tools win on other axes — we say so.
| Capability | AllInvestView | Sharesight | Broker-native (1099-B) | ChatGPT + Plaid | Excel |
|---|---|---|---|---|---|
| FIFO matched across multiple brokers | |||||
| LIFO / Specific ID across brokers | |||||
| Wash sale detection across brokers | |||||
| Schedule D / Form 8949 output (US) | |||||
| Modelo 720 / country CGT (13 jurisdictions) | |||||
| Multi-currency cost basis with daily FX | |||||
| GBX↔GBP, ZAC↔ZAR penny-currency handling | |||||
| Bond accrued-interest tax accounting | |||||
| Options assignment → stock cost basis | |||||
| Corporate actions (splits, spin-offs, mergers) | |||||
| Dividend strategy modeling | |||||
| Read-only broker access (no trade execution) | |||||
| Private — no model training on your data | |||||
| Free tier |
Honest assessment: Sharesight wins on tenure and country count for some tax reports; Snowball Analytics wins on dividend strategy modeling. We win on multi-broker wash-sale detection, bond/options tax accounting, and the analytics-plus-tax combo.
Ready to generate your own report?
Free for 14 days. Read-only broker access. No card to start. Cancel anytime.
Jurisdictions supported
Each country applies its own cost basis method and disclosure format. We generate the right one based on your tax residency — not a generic "capital gains report," but the filable artifact for your specific filing.
14 jurisdictions, 14 different filings
| Country | Method | Filing artifact |
|---|---|---|
| United States | FIFO / LIFO / Specific ID | Schedule D + Form 8949 (with wash sale flags) |
| United Kingdom | Section 104 pool with same-day matching and 30-day “bed & breakfast” matching rules | CGT report for Self Assessment |
| Germany | FIFO per account (Teilfreistellung where applicable) | Anlage KAP / Anlage SO summary |
| France | Weighted average (PFU 30% flat tax or progressive) | 2042 + IFU reconciliation |
| Spain | FIFO | Modelo 100 capital gains + Modelo 720 foreign assets |
| Italy | LIFO permitted (26% flat rate; not mandated) | RW quadro + capital gains |
| Netherlands | Box 3 deemed return on wealth | Wealth disclosure summary |
| Belgium | FIFO (per asset class) | Personal CGT report |
| Ireland | FIFO, 4-week rule | CGT return (Form 12 / Form 11) |
| Portugal | FIFO | Anexo G capital gains |
| Sweden | Average cost (genomsnittsmetoden) | K4 capital gains |
| Denmark | Average cost | Personal CGT report |
| Australia | FIFO / Specific ID, 50% CGT discount >12mo | CGT schedule |
| Canada | Average Cost Basis (ACB) including superficial loss rule | Schedule 3 capital gains |
Frequently asked questions
Each broker issues its own 1099-B that reports only the lots held at that broker. To file correctly you need a single consolidated ledger that FIFO-matches lots across all brokers, accounts for wash sales triggered between brokers, and produces a unified Schedule D and Form 8949. AllInvestView pulls read-only data from every broker via SnapTrade, merges the ledgers, applies FIFO or LIFO across the combined position, and outputs the filable artifacts. Each broker's 1099-B is still kept on file for cross-reference and reconciliation.
No. TurboTax imports each 1099-B independently and treats each broker's lots as a separate universe. If you bought the same stock at Schwab in 2022 and at IBKR in 2025, then sold from IBKR, TurboTax will follow IBKR's own basis assignment and may flag "non-covered" lots that actually have a basis at the other broker. The correct FIFO basis is the one consumed from the earliest-purchased lot across all of your brokers — TurboTax can't compute this without a consolidated upstream feed.
The IRS wash sale rule (IRC §1091) applies across ALL accounts you control — not just one broker. If you sell AAPL at a loss in Schwab and buy AAPL (or substantially identical security) in Fidelity within 30 days before or after, the loss is disallowed and must be added to the cost basis of the replacement shares. Most broker 1099-Bs only check within their own platform, so cross-broker wash sales are silently missed. AllInvestView runs the 30-day window across the consolidated ledger and flags every cross-broker match. See the wash sale tracker for the full workflow with Form 8949 code W output.
Honestly, no. ChatGPT can describe Schedule D and explain how FIFO works, but to actually generate one it would need: multi-year buy history, every corporate action, every dividend reinvestment, the daily FX rate for cross-currency lots, and a wash sale calculator across accounts. Plaid (the data layer ChatGPT plugins use) provides current balances and recent activity — not multi-year FIFO-matchable lots with cost basis. AllInvestView keeps the full ledger and runs the math deterministically, with the same answer every time — see our full ChatGPT comparison.
This only happens after an ACAT (in-kind transfer) between brokers. The receiving broker should carry over the original cost basis, but in practice it often arrives as "basis unknown" on the 1099-B. You are required to use the original purchase cost — not zero, not the transfer-in price. AllInvestView preserves the original lot at the original purchase price across the transfer, so the FIFO match uses the correct basis even though the 1099-B shows it as non-covered. Schedule D is filled accordingly.
ACAT transfers are the most common reason 1099-Bs show "basis unknown / non-covered." The receiving broker received the shares but not always the cost basis history. You can: (1) enter the original purchase data manually, (2) connect both the originating and receiving brokers so AllInvestView reconstructs the lots from the source, or (3) import a CSV from the originating broker. The reconciliation flow flags any lots without a basis so nothing falls through silently — you'll see exactly which lots need attention before the report finalises.
14 jurisdictions: United States (Schedule D, Form 8949), United Kingdom (CGT for Self Assessment), Germany (Anlage KAP / Anlage SO), France (PFU/IFU), Spain (Modelo 100 capital gains + Modelo 720 foreign assets), Italy (RW quadro + capital gains), Netherlands, Belgium, Ireland, Portugal, Sweden, Denmark, Australia, and Canada. Each report applies that country's specific cost basis method (FIFO, LIFO, average cost, ACB, Section 104 pooling) and rounding rules. For the underlying single-figure question (“what is my realized gain for period X?”) see the realized gains calculator. Bond-specific buckets (accrued interest split from cap gain, §1276 market discount with Form 8949 code D, §171 premium election, OID) live in the bond tax report.
Yes. SnapTrade is a read-only aggregation layer — it cannot execute trades on your behalf, only fetch positions and activity. AllInvestView does not train AI models on user portfolios, does not sell or share data with third parties, and does not embed third-party trackers inside the authenticated product. Your portfolio data is encrypted at rest. You can export everything and delete your account at any time. We track your portfolio; we don't track you.