Who this page is for
If you hold US equities 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 Robinhood plus Fidelity. The moment you hold the same ticker at two brokers, your 1099-Bs stop being self-contained — FIFO cost basis, Form 8949 box selection, and Schedule D output all assume a consolidated view that no single broker produces. This page shows how to actually get one, and which box on Form 8949 each lot lands on.
Why TurboTax + multi-broker fails
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 Schedule D 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 across brokers
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 accounts you control. Sell at a loss in Schwab, buy back at Fidelity within 30 days — the loss is disallowed and code W belongs in column (f). Neither broker's 1099-B will flag it.
ACAT-in lots arrive non-covered
ACAT (in-kind) transfers between brokers typically arrive with the basis flag set to non-covered. Your 1099-B labels real, knowable lots as basis-unknown and lands them on Box B or Box E. TurboTax-imported reports inherit the gap.
Short-term mis-classification
Without an acquisition date, brokers commonly default ACAT-in lots to short-term and route them to Box B. The lot's actual holding period — reconstructed from the originating broker — would put it in Box E with a long-term rate (often 17 percentage points lower).
The hidden cost: filing without consolidation
Across the users we see, the median federal 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 roughly 17-percentage-point difference at the federal level alone. The worked example below shows exactly where the dollars come from.
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 IRS-format PDF.
Connect → Match lots → Download Schedule D + 8949
Worked example: Mark's MSFT and NVDA across 3 brokers
Mark is a US investor filing for tax year 2026. He holds Microsoft and Nvidia across Schwab, Fidelity, and IBKR. He sold four times during the year. FIFO is computed across the consolidated ledger, not per broker.
The starting position (buys)
Mark's buy lots, by broker
| Broker | Ticker | Acquired | Qty | Price | Cost basis |
|---|---|---|---|---|---|
| Schwab | MSFT | 2023-05-10 | 100 | $310.00 | $31,000 |
| Fidelity | MSFT | 2024-02-14 | 50 | $405.00 | $20,250 |
| IBKR | NVDA | 2024-08-01 | 40 | $108.00 | $4,320 |
| Schwab | NVDA | 2025-11-20 | 30 | $138.00 | $4,140 |
2026 sells (FIFO across the consolidated ledger)
Disposals routed to Form 8949 boxes
| # | Sym | Sell date | Qty | Proceeds | Lot acquired | Basis | Gain | Term | Box |
|---|---|---|---|---|---|---|---|---|---|
| 1 | MSFT | 2026-06-15 | 100 | $44,000 | 2023-05-10 Schwab | $31,000 | +$13,000 | LT | D |
| 2 | MSFT | 2026-09-02 | 50 | $22,500 | 2024-02-14 Fidelity | $20,250 | +$2,250 | LT | D |
| 3 | NVDA | 2026-03-10 | 40 | $5,200 | 2024-08-01 IBKR | $4,320 | +$880 | LT | E |
| 4 | NVDA | 2026-04-22 | 30 | $4,500 | 2025-11-20 Schwab | $4,140 | +$360 | ST | A |
The trap: the IBKR sale on 2026-03-10
IBKR's 1099-B reports the 40-share NVDA sale on 2026-03-10 as non-covered with a missing acquisition date — the lot was ACAT-transferred from a now-closed account, and ACAT-transferred lots typically arrive non-covered regardless of original status, so the broker reports no basis to the IRS. TurboTax imports this faithfully and, without an acquisition date, may default the lot to short-term and drop it on Box B. AllInvestView re-establishes the original 2024-08-01 acquisition date and $4,320 basis, restores long-term treatment, and routes the disposal to Box E (long-term, basis not reported to IRS) — no adjustment code needed, since the broker reported no basis to "adjust."
What lands on Schedule D
Schedule D (Form 1040) — Mark's 2026 filing
| Schedule D line | Description | Proceeds | Basis | Adj | Gain / (Loss) |
|---|---|---|---|---|---|
| 1a (ST, basis reported) | From Form 8949 Box A | $4,500 | $4,140 | 0 | +$360 |
| Line 7 — Net ST gain | — | — | — | — | +$360 |
| 8a (LT, basis reported) | From Form 8949 Box D | $66,500 | $51,250 | 0 | +$15,250 |
| Line 9 (LT, basis NOT reported) | From Form 8949 Box E | $5,200 | $4,320 | 0 | +$880 |
| Line 15 — Net LT gain | — | — | — | — | +$16,130 |
| Line 16 — Total → Form 1040 line 7 | — | — | — | — | +$16,490 |
The dollar delta: $150 federal + 1 hour saved
Without consolidation, TurboTax lands the $880 NVDA gain on Box B (short-term). At Mark's 32% ordinary / 15% long-term rate spread, mis-classifying $880 from long-term to short-term costs $880 × 17% = $149.60, plus the hour he'd spend typing basis by hand for the ACAT lot. AllInvestView routes it to Box E automatically.
NIIT note for higher earners
Mark's AGI likely triggers the 3.8% Net Investment Income Tax. On $16,130 of net long-term capital gain, an over-threshold single filer (MAGI > $200K) owes an additional ~$613 NIIT reported on Form 8960 — on top of the long-term capital gains tax. AllInvestView reports the gain; the NIIT itself is computed on Form 8960 from your full AGI. See FAQ #9 for detail.
This is the kind of calculation we run for you. Read-only broker access, results in minutes, your portfolio stays private.
See your own Schedule D dollar delta
Connect your brokers (or import 1099-B CSVs) and we'll show you the consolidated FIFO Schedule D against each 1099-B in side-by-side reconciliation.
How AllInvestView compares
An honest look at the five tools US investors actually consider when they hit the multi-broker Schedule D problem. We win on cross-broker FIFO, wash sale detection across accounts, ACAT basis recovery, and adjustment-code coverage. Other tools win on other axes — we say so.
| Capability | AllInvestView | Broker 1099-B | TurboTax | CPA + Excel |
|---|---|---|---|---|
| Consolidated FIFO across 2+ brokers | ||||
| Form 8949 Box A/B/C/D/E/F auto-selected | ||||
| ACAT lot basis recovery on Box B/E | ||||
| Wash sale across brokers (IRS 30-day) | ||||
| Adjustment codes (W, B, L, S, N, H, Q, R, X, C, D) | ||||
| ST vs LT per IRS calendar rule (held >1 year) | ||||
| Specific-ID / LIFO alternative | ||||
| Corporate actions baked into basis | ||||
| Options assignment → stock basis | ||||
| IRS-format printable PDF | ||||
| Multi-year history (3+ years) | ||||
| Read-only broker access | ||||
| No AI training on your data | ||||
| Cost | $14.99/mo | $0 | $89–$219 | $400–$2,000 |
Honest: single broker with clean covered lots → TurboTax import is fine. ACAT transfers, 2+ brokers, cross-account wash sales, or options assignments → you're back in Excel.
Ready to generate your own Schedule D?
Free for 14 days. Read-only broker access. No card to start. Cancel anytime.
Form 8949 box selector explainer
Every lot you dispose of ends up on one of six boxes on Form 8949. The box depends on two things: how long you held it (short-term vs long-term) and whether the broker reported the basis to the IRS. AllInvestView picks the right box per lot automatically — here is the underlying rule.
The selector rule, in one sentence
Hold ≤ 1 year → Box A/B/C. Hold > 1 year → Box D/E/F. Basis reported to IRS on a 1099-B → A or D. Basis NOT reported on a 1099-B (typically non-covered or ACAT-in) → B or E. No 1099-B received at all → C or F.
Form 8949 box semantics
| Box | Holding period | Broker reported basis to IRS? | Typical case |
|---|---|---|---|
| A | Short-term (≤ 1 year) | Yes (covered) | Standard 1099-B short-term sale of a post-2011 share bought at the same broker. |
| B | Short-term (≤ 1 year) | No (non-covered) | ACAT-in lots with missing basis, pre-2011 shares still held. |
| C | Short-term (≤ 1 year) | No 1099-B received | Sales not reported on any 1099-B (rare; some private transactions). |
| D | Long-term (> 1 year) | Yes (covered) | Standard 1099-B long-term sale of a covered lot held more than one year. |
| E | Long-term (> 1 year) | No (non-covered) | ACAT-in long-term lots, pre-2011 covered-basis legacy stock. |
| F | Long-term (> 1 year) | No 1099-B received | Long-term sales not on any 1099-B. |
Adjustment codes go in column (f) on each Form 8949 row when applicable: W for a disallowed wash-sale loss, B when the broker-reported basis is incorrect, L for non-deductible losses, S for a non-deductible loss on a related-party transaction, N for nominee receipts, H for the principal-residence exclusion, Q for qualified small-business-stock exclusion, R for rollover of gain into Qualified Small-Business Stock (QSBS) under §1045, X when the adjustment doesn’t fit any other code (catch-all), C for collectibles, and D for accrued market discount. We apply each code per the IRS Form 8949 instructions where the underlying condition is met.
Frequently asked questions
No. TurboTax imports each 1099-B independently and trusts the broker's basis. FIFO is applied within each broker, never across the consolidated ledger. If you bought MSFT at Schwab in 2023 and at Fidelity in 2024 and sold from Fidelity in 2026, TurboTax will follow Fidelity's lot assignment, not the FIFO basis that consumes the older Schwab lot first. See the multi-broker tax report for how AllInvestView consolidates lots across every broker before applying FIFO, LIFO, or specific-ID.
Box B (short-term) or Box E (long-term) — the IRS destinations for non-covered shares (pre-2011 stock, ACAT-in lots). Enter the basis you can reconstruct from the original broker; no adjustment code is needed because the broker reported no basis to "adjust." The disposal still belongs on Form 8949, just on the non-covered box.
Box A = short-term, basis reported to IRS (covered lots). Box B = short-term, basis NOT reported to IRS (typically non-covered — pre-2011 stock or ACAT-in lots). Box C = short-term, no 1099-B received. Box D, E, F = the same three for long-term. AllInvestView picks the right box per lot based on what the broker actually reported to the IRS, not just per 1099-B. See the Form 8949 generator for the full Box A–F reference, the adjustment-code matrix, and a worked example.
Your broker’s 1099-B only sees the lots held at that single broker. AllInvestView merges activity from every connected broker into one ledger, runs FIFO (or your chosen method) across the combined position, detects cross-broker wash sales per IRC §1091, preserves cost basis through ACAT transfers, and outputs a filable Schedule D plus per-row Form 8949 with the correct adjustment codes — all from read-only broker access.
Code W in column (f), with the disallowed loss as a positive number in column (g). We detect wash sales across every connected broker because the IRS rule applies to all accounts you control — per-broker 1099-Bs only check within their own platform.
Held more than one year is long-term. The IRS measures calendar-wise: the holding period starts the day after acquisition and includes the day of sale. A share bought January 5, 2024 must be sold on or after January 6, 2025 to be long-term. The classification is per lot, not per holding, and applies to each lot consumed by a sale separately.
ACAT lots typically arrive non-covered, so the receiving 1099-B lands the sale on Box B or Box E with the basis field blank. You re-enter the basis from the original broker; no adjustment code is needed because the broker did not report a basis to "adjust." AllInvestView pulls the original acquisition date and basis automatically if you connect both brokers, restoring long-term treatment where applicable.
Yes. The IRS 30-day window is checked against every connected account (and spousal accounts if imported, per IRS guidance treat as related party). Per-broker 1099-Bs miss this because each broker only sees its own transactions. AllInvestView runs the wash-sale detector across the consolidated ledger and flags every cross-broker match with adjustment code W. See the wash sale tracker for the full workflow, the IRA Rev. Rul. 2008-5 gotcha, and a worked example.
We report the gain. The Net Investment Income Tax (NIIT) is computed on Form 8960 from your full AGI and applies when MAGI exceeds $200K single or $250K married-filing-jointly. On $16,130 of net long-term gain, an over-threshold single filer owes about $613 of NIIT (3.8%) on top of long-term capital gains tax. Export the gain figure to your tax software or CPA — we do not produce Form 8960.
No. Section 1256 contracts (regulated futures, broad-based index options, dealer equity options) go on Form 6781 with a mandatory 60/40 long-term/short-term split regardless of holding period, then flow to Schedule D lines 4 and 11. We flag Section 1256 contracts from Tastytrade and IBKR but do not currently produce Form 6781 itself.
Yes. Per IRS Notice 2014-21 crypto is property reported on Form 8949, and the 2026 form revision added explicit digital-asset boxes. Connected exchanges feed the same FIFO ledger as equities, so crypto disposals land on Form 8949 with proceeds, basis, and holding-period classification computed the same way as stocks. Bonds run on a separate engine (accrued interest, §1276 market discount as code D, §171 premium amortization, §1272 OID) — see the bond tax report for the worked Treasury example.