US tax year 2026 · Files with Form 1040 · Totals flow to Schedule D

Form 8949 Generator

Generate an audit-ready IRS Form 8949 for the US multi-broker investor — every lot routed to the correct Box A–F, every adjustment code populated (code W for wash sales, code B for basis corrections, code D for accrued market discount), and every total reconciled to Schedule D Part I and Part II. Schwab, Fidelity, IBKR, Vanguard, E*TRADE, Robinhood — consolidated into one filing.

Box A–F auto-classified per lot
Codes W, B, D auto-applied
Ties to Schedule D line 16
Read-only via SnapTrade

Read-only broker access via SnapTrade. Your portfolio stays yours — no AI training, no resale.

Compatible with:
Schwab Fidelity IBKR Vanguard E*TRADE Robinhood Merrill Tastytrade Webull
FORM 8949 · SALES AND OTHER DISPOSITIONS OF CAPITAL ASSETS · TAX YEAR 2026 Form 8949 — Sales and Other Dispositions of Capital Assets Department of the Treasury · Internal Revenue Service (a) DESCRIPTION (b) ACQ (c) SOLD (d) PROCEEDS (e) BASIS (f) CODE (g) ADJ (h) GAIN/(LOSS) BOX 200 sh NVDA 2025-09-12 2026-04-22 $42,000 $32,000 B +$2,000 +$12,000 A 100 sh MSFT 2023-05-10 2026-06-15 $44,000 $31,000 +$13,000 D 50 sh AAPL 2024-04-22 2026-03-10 $9,800 $11,200 W +$1,400 $0 D 75 sh VTI 2022-11-05 2026-07-01 $20,250 $17,800 +$2,450 E NET GAIN — FLOWS TO SCHEDULE D LINE 16 → FORM 1040 LINE 7 +$27,450 IRS-FORMAT PDF Prints alongside Form 1040 · totals tie to Schedule D Part I and Part II.

Four lots, three boxes, two adjustment codes. Reconciled to Schedule D line 16.

Form 8949 Generator: Audit-Ready IRS Form 8949 Across Every Broker You Use

Form 8949 is the detail behind Schedule D. Every realized lot at every broker has to land on exactly one of six boxes (A, B, C, D, E, or F) and carry the right adjustment code (W, B, D, and the rest). This page shows how the classification works, with a worked example that exercises every common surprise — a wash sale, a broker basis correction, and an ACAT-transferred lot — and ties the result back to Schedule D line 16.

Who this page is for

US investors with realized gains or losses at two or more brokers.

The typical reader: a US taxpayer who sold something in the current tax year and now has to file Form 8949 (or several Form 8949s) as detail under Schedule D. You hold the same tickers at Schwab and Fidelity, or you traded actively at IBKR and Robinhood, or you took an ACAT transfer that landed with the basis field blank, or your 1099-B reports a basis you know is wrong. Every per-broker 1099-B only sees its own activity, and the IRS reconciliation that follows is the kind of thing that draws letters. This page exists for the filer who needs the per-lot detail consolidated, classified, and tied back to Schedule D line 16 in one filing.

Form 8949 specifics

Three things to know before the worked example: the six boxes (every lot lands in exactly one), the eight columns (a through h), and the adjustment codes that show up in real equity portfolios.

The Form 8949 reference, in 180 words plus three tables.

Form 8949 splits every disposition into a short-term half (Part I, boxes A/B/C) and a long-term half (Part II, boxes D/E/F). Within each half the box selection turns on what the broker reported to the IRS — covered (basis reported), non-covered (basis not reported), or no 1099-B at all. Eight columns describe each lot, with the adjustment in column (g) carrying the sign convention that keeps the IRS reconciliation intact. AllInvestView pulls the box determination from the 1099-B fields plus the holding-period calendar and applies the most common adjustment codes automatically.

The six boxes — every lot lands in exactly one

Box Term Basis reported to IRS? Typical source
A Short-term Yes (covered) Post-2011 stock at one broker
B Short-term No (non-covered) Pre-2011 stock, ACAT-in lots
C Short-term No 1099-B received Private sales, some crypto
D Long-term Yes (covered) Post-2011 stock held >1 year
E Long-term No (non-covered) Pre-2011 lots, ACAT-in held >1 year
F Long-term No 1099-B received Private sales, some crypto

The eight columns (a through h)

Column What it carries
(a) DescriptionQuantity + security (e.g., "100 sh MSFT")
(b) Date acquiredAcquisition date (or "various" for lot aggregations)
(c) Date soldDisposal date
(d) ProceedsSale proceeds net of commissions
(e) Cost basisBasis as reported on the 1099-B (for Box A/D) — the IRS reconciliation key
(f) CodeAdjustment code (W, B, D, L, N, S, H, Q, R, X, C) — blank if none
(g) AdjustmentDollar amount of the adjustment, with the sign per code
(h) Gain/(Loss)(d) − (e) ± (g) — the actual taxable amount

The eleven adjustment codes that show up in real portfolios

Code When it applies
WWash sale — disallowed loss enters column (g) as a positive number. Full detail in our Wash Sale Tracker →
BBroker-reported basis is wrong — correction amount in (g), sign matches direction (positive if broker overstated basis, negative if understated).
DAccrued market discount on bonds — portion of gain treated as ordinary income.
LNondeductible loss other than a wash sale (e.g., loss on personal-use property, or a disallowed loss the other codes don’t cover).
NReceived as a nominee — gain or loss belongs to someone else.
SLoss from sale or exchange of property between related parties is disallowed (IRC §267).
HSale of primary residence — Section 121 exclusion.
QSection 1202 qualified small-business stock exclusion.
RSection 1045 rollover into another QSBS.
XNone of the other codes (B, N, L, H, D, Q, R, S, W, C) applies — rarely used catch-all per the IRS Form 8949 instructions.
CCollectibles — 28% maximum LTCG rate.

How totals flow

Box A/B/C totals feed Schedule D Part I lines 1b, 2 and 3. Box D/E/F totals feed Schedule D Part II lines 8b, 9 and 10. Schedule D line 16 is the net of the two, and it lands on Form 1040 line 7.

How it works: 3 steps

Nothing leaves your hands. Brokers connect read-only via SnapTrade, the consolidated ledger lives in your account, and the final artifact is the actual filable Form 8949 PDF.

Connect → Classify → Export PDF

1
Connect your brokers — Read-only via SnapTrade for Schwab, Fidelity, IBKR, Vanguard, E*TRADE, Robinhood, Merrill, Tastytrade, Webull and more. Or upload 1099-B / CSV / Activity Statement for any broker we do not sync directly. We can never execute trades.
2
Each lot is classified — FIFO (or LIFO / Specific ID) is run across the consolidated ledger. Every realized lot is routed to its Box A–F based on what the broker reported on the 1099-B (covered vs non-covered) and the holding-period calendar (ST vs LT). Adjustment codes (W, B, D, N) are applied automatically; L, S, H, Q, R, X and C are user-flagged.
3
Export the PDF — IRS-format Form 8949 (one page per required box) plus Schedule D summary. Print alongside Form 1040 or attach via Form 8453 if you e-file. Every row carries a per-broker, per-lot audit trail. Updates the moment new trades sync.

Worked example: Priya's 4 realized lots

Priya is a US investor filing for the 2026 tax year. She holds across Schwab, Fidelity, and IBKR; she uses FIFO. Four realized lots this year exercise every common Form 8949 surprise — a clean long-term gain, a wash sale that crossed brokers, a broker basis that turned out to be wrong, and an ACAT-transferred lot that landed with the basis field blank.

The four lots and what each one does

Realized lots, 2026 tax year

# Sym Acquired Sold Qty Proceeds Broker basis True basis Box Code
1 MSFT 2023-05-10 Schwab 2026-06-15 100 $44,000 $31,000 $31,000 D
2 AAPL 2024-04-22 Schwab 2026-03-10 50 $9,800 $11,200 $11,200 D W
3 NVDA 2025-09-12 Fidelity 2026-04-22 200 $42,000 $32,000 $30,000 A B
4 VTI 2022-11-05 IBKR (ACAT-in) 2026-07-01 75 $20,250 (blank) $17,800 E
  • Row 1 — clean LT gain (Box D, no code). MSFT held more than one year at the same broker. Basis was reported correctly. Nothing to adjust. Pure $13,000 long-term gain.
  • Row 2 — wash sale (Box D, code W). Priya sold AAPL at a $1,400 loss and rebought identical shares at Fidelity 14 days later. The loss is disallowed in 2026: column (g) carries +$1,400, column (h) zeroes, and the disallowed amount is added to the Fidelity replacement lot's basis. The mechanics live in our Wash Sale Tracker →.
  • Row 3 — basis correction (Box A, code B). Fidelity's 1099-B reports $32,000 cost basis but Priya's records show the true basis is $30,000 — the broker overstated basis by $2,000 (missed a corporate-action adjustment from a 2025 spinoff that should have reduced basis). With code B, we enter the broker's reported basis in (e) so the IRS reconciliation matches, then put +$2,000 in (g) to correct upward — because broker-implied gain (42,000 − 32,000 = $10,000) is too low by $2,000. Column (h) reflects the true $12,000 gain. NVDA was held 222 days, so this is short-term Box A.
  • Row 4 — ACAT-transferred lot, basis-unknown (Box E). The VTI lot was transferred from a closed account; IBKR's 1099-B reports it as non-covered with the basis blank. We re-establish $17,800 basis from the original broker's records, land it on Box E (LT, basis not reported), no adjustment code needed — there is no broker-reported basis to "adjust."

The populated Form 8949

Form 8949 — four lots, three boxes, two adjustment codes

(a) Description (b) Acq (c) Sold (d) Proceeds (e) Basis (f) Code (g) Adj (h) Gain/(Loss) Box
100 sh MSFT 2023-05-10 2026-06-15 $44,000 $31,000 +$13,000 D
50 sh AAPL 2024-04-22 2026-03-10 $9,800 $11,200 W +$1,400 $0 D
200 sh NVDA 2025-09-12 2026-04-22 $42,000 $32,000 B +$2,000 +$12,000 A
75 sh VTI 2022-11-05 2026-07-01 $20,250 $17,800 +$2,450 E

Box subtotals

Box Proceeds Basis Adj Gain/(Loss)
A (ST covered) $42,000 $32,000 +$2,000 +$12,000
D (LT covered) $53,800 $42,200 +$1,400 +$13,000
E (LT non-covered) $20,250 $17,800 $0 +$2,450

Flow to Schedule D

Schedule D — lines populated by the 8949 above

Schedule D line Source Proceeds Basis Adj Gain/(Loss)
1b (ST, basis reported) 8949 Box A $42,000 $32,000 +$2,000 +$12,000
Line 7 — Net ST gain +$12,000
8b (LT, basis reported) 8949 Box D $53,800 $42,200 +$1,400 +$13,000
Line 9 (LT, basis NOT reported) 8949 Box E $20,250 $17,800 $0 +$2,450
Line 15 — Net LT gain +$15,450
Line 16 — Total → Form 1040 line 7 +$27,450

Arithmetic check: ST $12,000 + LT $15,450 = $27,450 net gain.

The wrong answer — what a TurboTax CSV import produces

Without a consolidated ledger: NVDA's $32,000 overstated broker basis would carry straight through (true gain $12,000 understated as $10,000 = $2,000 phantom under-reporting = ~$640 federal tax owed but missed at Priya's 32% ST marginal). AAPL's wash sale would be missed because the rebuy was at Fidelity, not Schwab (the $1,400 disallowed loss would be wrongly claimed = ~$210 over-refunded at 15% LTCG). VTI's ACAT lot would likely default to short-term Box B because the basis is blank and the broker has no acquisition date (LT $2,450 taxed at ST rates = ~$415 bracket delta at 32% vs 15%). Total error: ~$1,265 plus audit exposure.

The right answer — AllInvestView produces the 8949 above

On every sync we run the consolidated ledger: NVDA's basis discrepancy is flagged against our independent calculation and code B is emitted; AAPL's cross-broker rebuy is detected and code W is emitted; VTI's ACAT lot is restored to Box E with the reconstructed basis from the original broker. The IRS reconciliation in column (e) is preserved on every Box A/D row (broker-reported basis stays as filed; the correction lives in column (g)). The PDF prints alongside Form 1040 and the totals tie to Schedule D line 16.

This is the kind of calculation we run for you. Read-only broker access, results in minutes, your portfolio stays private.

Ready to generate your own Form 8949?

Free 14-day trial. Read-only broker access. No card to start. Cancel anytime.

Connect your brokers

How AllInvestView compares

An honest look at the tools US investors actually use when they have to produce Form 8949. We win on cross-broker consolidation, adjustment-code automation, and ACAT-lot recovery; per-broker 1099-Bs win on within-broker compliance because they are the IRS source. We say so where it is true.

Capability AllInvestView Broker 1099-B TurboTax CSV CPA + Excel
Multi-broker consolidation onto one Form 8949
Correct Box A/B/C/D/E/F selection per lot
Adjustment codes auto-applied (W, B, D, L, N, S, X)
Wash sale detection across brokers → code W
Basis correction with code B (broker reported wrong basis)
ACAT-transferred lot recovery → Box B/E
Specific-identification per lot (vs forced broker FIFO)
Mixed-broker FIFO matching across consolidated ledger
Export ready for e-file or paper attachment
Loss carry-forward tracking across tax years
Form 8949 PDF (IRS-format) + print-friendly HTML
Per-row audit trail with broker + lot source attribution
Updates automatically as new trades sync
Cost $14.99/mo $0 $89–$219 $400–$2,000

Single broker with clean covered lots and no wash sales → broker 1099-B + TurboTax import is fine. Two or more brokers, ACAT transfers, basis corrections, cross-account wash sales, or options assignments → you need a consolidated ledger. The multi-broker tax report is the hub view; this page is the form output.

Frequently asked questions

IRS-cited: §1091 · §1223(3) · §1202 · §1045 · Pub 550 · Pub 551 · 2026 Instructions for Form 8949

Connect each broker read-only via SnapTrade. AllInvestView consolidates every fill into one FIFO-matched ledger, classifies each realized lot into Box A–F based on what each broker reported to the IRS (covered vs non-covered, short- vs long-term), applies adjustment codes where applicable (W, B, D, etc.), and produces a single IRS-format PDF that prints alongside your Form 1040. Totals reconcile to Schedule D Part I and Part II automatically. The multi-broker tax report is the upstream consolidation step.

Decision tree: Was a 1099-B issued? If no → Box C (ST) or Box F (LT). If yes → was basis reported to the IRS on that 1099-B? Yes + ST → Box A. Yes + LT → Box D. No + ST → Box B. No + LT → Box E. Long-term means held more than one year (acquisition + 366 days for non-leap acquisitions). AllInvestView picks the box per lot from the 1099-B fields plus the holding-period calendar.

The common ones in real equity portfolios: W (wash sale — disallowed loss as positive in column g), B (broker-reported basis is wrong — correction amount in g, sign matches the direction), D (accrued market discount on bonds), L (nondeductible loss other than a wash sale), N (received as nominee), S (related-party loss disallowed), H (sale of primary residence), Q (§1202 small-business stock exclusion), R (§1045 rollover), X (catch-all when none of the other codes applies), C (collectibles, 28% rate). AllInvestView populates W, B, D and N automatically from the ledger; the others are user-flagged.

Enter the sale row in the box that matches the original lot (A/B/C/D/E/F by term and basis-reporting status), put W in column (f), and the disallowed loss as a positive number in column (g). Column (h) gain/loss is reduced (or zeroed) by that amount. The disallowed loss is added to the replacement lot's basis, which AllInvestView updates automatically. Full mechanics in our Wash Sale Tracker →.

Use code B. Enter the broker's reported basis in column (e) exactly as it appears on the 1099-B (so the IRS reconciliation matches), put B in column (f), and enter the correction in column (g) — positive if the broker overstated basis (broker-implied gain is too low, so the adjustment adds to it), negative if the broker understated basis (broker-implied gain is too high, so the adjustment subtracts from it). Column (h) reflects the true gain or loss. Common causes: missed corporate-action adjustments (spinoffs, stock dividends), incorrect ACAT-in basis, missed wash-sale carryovers. AllInvestView reconciles broker-reported basis against our independent ledger on every sync and flags discrepancies.

ACAT-transferred lots typically arrive at the receiving broker as non-covered — basis is left blank on the 1099-B regardless of the original covered status. They land on Box B (ST) or Box E (LT). Enter the basis you can reconstruct from the original broker's statements in column (e); no adjustment code is needed, because the receiving broker reported no basis to "adjust." AllInvestView retains the original acquisition date and basis through the transfer.

Both. Most consumer tax software (TurboTax, H&R Block, FreeTaxUSA, TaxAct) accepts Form 8949 detail as part of the 1040 e-file submission, either entered transaction-by-transaction or attached as a PDF/summary. The IRS also accepts Form 8453 with a paper 8949 attachment if you e-file the rest of the return. AllInvestView produces an IRS-format PDF you can attach via Form 8453 or copy into your tax software's manual-entry screen. Totals can be entered as a summary on Schedule D if you attach the detail PDF.

Yes — Form 8949 is the detail for Schedule D. The IRS requires every individual lot disposition (or a per-broker summary with attached detail) unless you qualify for the summary exception: all transactions are Box A or D with no adjustments and basis was reported. If you have any wash sales (code W), basis corrections (code B), ACAT lots (Box B/E), or any non-covered lots, you must file the detail.

The IRS matches each Box A/D row on your 8949 against the basis your broker reported on the 1099-B. If you enter a different basis in column (e), the IRS will flag the return. AllInvestView's workflow: enter the broker's reported basis in column (e) as filed (keeps the IRS match), put code B in column (f), and enter the correction in column (g). Net (h) reflects the true gain or loss. The audit trail on each row records both the broker-reported basis and our independently-calculated basis with full source attribution.

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. The Box A–F determination, adjustment-code applicability, and the IRS reconciliation between reported basis and corrected basis are areas where IRS interpretation continues to evolve — always review generated reports and consult a CPA for complex situations (estates, foreign trusts, Section 1256 contracts, opportunity-fund property, QSBS).

One Form 8949. Every broker. Filable.

Private by default. Read-only broker access. No AI training on your portfolio. Generate your consolidated Form 8949 with every adjustment code in minutes.

AllInvestView Team

We are financial engineers and DIY investors building the portfolio tracker we wanted for ourselves. AllInvestView is for US equity investors who need more than what any single broker shows them — cross-broker FIFO, wash-sale detection, broker-basis reconciliation, and audit-ready Form 8949 output.

Form 8949 generator Free 14-day trial
Start free