US tax year 2026 · Files alongside Form 1040

Schedule D Portfolio Tracker

Generate a complete Schedule D and Form 8949 from every US broker you use — Schwab, Fidelity, IBKR, Vanguard, E*TRADE, Robinhood — with FIFO-matched lots, wash sales flagged, and the right box checked on every 8949.

Read-only broker access via SnapTrade. No trade execution, no model training, no data resale.

FIFO across brokers
Wash sales across accounts
Box A/B/C/D/E/F auto-selected
IRS-format PDF
Compatible with:
Schwab Fidelity IBKR Vanguard E*TRADE Robinhood Merrill Tastytrade Webull
PREVIEW SCHEDULE D (Form 1040) Department of the Treasury · Internal Revenue Service OMB No. 1545-0074 Tax Year 2025 Capital Gains and Losses Attach to Form 1040, 1040-SR, or 1040-NR. Part I — Short-Term Capital Gains and Losses (Assets Held One Year or Less) Description Acquired Sold Proceeds Basis Gain / (Loss) 50 sh MSFT 07/12/2024 02/03/2025 $22,100 $21,740 +$360 Line 7 — Net short-term capital gain +$360 Part II — Long-Term Capital Gains and Losses (Assets Held More Than One Year) Description Acquired Sold Proceeds Basis Gain / (Loss) 100 sh AAPL 03/15/2022 04/22/2025 $23,000 $14,500 +$8,500 50 sh AAPL 11/08/2022 04/22/2025 $11,500 $8,500 +$3,000 100 sh AAPL 04/04/2023 09/10/2025 $19,250 $15,500 +$3,750 25 sh MSFT 06/19/2023 11/05/2025 $11,250 $10,370 +$880 Line 15 — Net long-term capital gain +$16,130 Line 16 — Total capital gain Enter on Form 1040, line 7 +$16,490 SUPPORTING FORMS 8949 Form 8949 Box A · ST basis reported 8949 Form 8949 Box D · LT basis reported 8949 Form 8949 Box E · LT basis NOT reported Generated by AllInvestView · FIFO matched · Wash sales checked Ready to file

Schedule D Portfolio Tracker: Generate Schedule D and Form 8949 Across Every Broker

If you hold equities at two or more US brokers, your Schedule D is not the sum of your 1099-Bs. This page shows how the math actually works, with a worked example and the exact Form 8949 boxes each lot lands on.

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

1
Connect your US brokers — Read-only via SnapTrade for Schwab, Fidelity, IBKR, Vanguard, E*TRADE, Robinhood, Merrill, Tastytrade, and Webull. Or upload 1099-B / Activity Statement CSV for any broker we don't sync directly. We can never execute trades. Connect your brokerage account via SnapTrade in two clicks
2
We match lots FIFO across the consolidated ledger — All lots from all brokers merge into a single time-ordered position. FIFO (or LIFO / Specific ID, your choice) is computed across the combined ledger. Wash sales are checked in a 30-day window that spans every account. Adjustment codes (W, B, L, S, N, H, Q, R, X, C, D) are applied per IRS Form 8949 instructions where applicable. Per-holding FIFO lot table showing matched buys and sells
3
Download Schedule D + every required Form 8949 — IRS-format printable PDF — Schedule D summary plus the full set of Form 8949 pages, one per required box (A/B/C for short-term, D/E/F for long-term). Each lot is routed to the right box based on what the broker actually reported to the IRS. Prints alongside Form 1040. Consolidated capital gains tax report showing FIFO-matched lots across all brokers

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)

Method: FIFO

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.

Start free

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.

Connect your brokers

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.

Disclaimer: This page is informational and educational. It does not constitute tax, legal, or financial advice. AllInvestView is a calculation tool that produces tax reports from your transaction data; it does not replace a qualified tax professional. Always review generated reports before filing. For complex situations (estates, foreign trusts, Section 1256 contracts, opportunity-fund property, qualified small-business stock), consult a CPA or qualified tax advisor.

One Schedule D. Every broker. Filable.

Private by default. Read-only broker access. No AI training on your data. Generate your consolidated Schedule D and Form 8949 in minutes.

AllInvestView Team

We're financial engineers and DIY investors building the portfolio tracker we wanted for ourselves. AllInvestView is for US equity investors who need more than what their broker shows them — serious analytics, audit-ready Schedule D and Form 8949, and privacy by default.

Schedule D portfolio tracker Free for 14 days
Start free