How to report stock sales on your taxes: 1099-B and Form 8949
Every stock sale you make during the year needs to be reported to the IRS, whether you made money or lost it. Three forms do the heavy lifting: the 1099-B from your broker, Form 8949 where you list each sale, and Schedule D where the totals come together.
The process is not complicated once you understand how the pieces fit. The part that trips people up is adjustments, especially wash sales and incorrect cost basis.
The 1099-B: what your broker sends you
After each calendar year, your brokerage sends Form 1099-B reporting every sale in your taxable account. For 2025 sales, expect it by February 15, 2026 (many brokers post it electronically sooner). Watch for corrected 1099-Bs in March; if you file before one arrives, you may need to amend.
For each sale, the 1099-B shows the stock sold, dates acquired and sold, proceeds, cost basis (if the security is "covered"), and whether it was short-term or long-term. Your broker also sends this to the IRS, so the agency already knows your numbers. If your return does not match, expect a notice.
Covered vs uncovered securities
This distinction matters because it determines whether the IRS can automatically verify your cost basis.
Covered securities are those your broker is required to report cost basis for: stocks purchased on or after January 1, 2011, mutual funds and ETFs from January 1, 2012, and options/bonds generally from 2013-2014. The IRS has your cost basis on file.
Uncovered securities were purchased before those dates. Your broker reports the sale proceeds but not the cost basis. You are responsible for providing the correct basis from your own records, including adjustments for stock splits, mergers, or spin-offs.
Form 8949: listing each sale
Form 8949 is where you report individual sales. Part I covers short-term transactions (held one year or less), Part II covers long-term (held more than one year). The columns:
| Column | What goes there |
|---|---|
| (a) | Description ("100 sh AAPL") |
| (b) | Date acquired |
| (c) | Date sold |
| (d) | Proceeds |
| (e) | Cost basis |
| (f) | Adjustment code |
| (g) | Adjustment amount |
| (h) | Gain or loss |
At the top of each part, you check a box indicating whether cost basis was reported to the IRS. Boxes A/D are for covered securities (short/long-term), B/E for uncovered, C/F for transactions not on a 1099-B at all. If you have transactions in multiple categories, you need a separate Form 8949 section for each.
Schedule D: the summary
Schedule D pulls together your Form 8949 totals. Part I aggregates short-term results, Part II aggregates long-term, and Part III combines them into a net figure that flows to your Form 1040.
If you end up with a net loss, you can deduct up to $3,000 ($1,500 if married filing separately) against ordinary income, with any excess carrying forward to future years.
When you need adjustments
Sometimes the 1099-B figures are not what you should report. The key codes:
- Code W (wash sale): If a wash sale occurred and your broker did not account for it, enter the disallowed loss in column (g). See the wash sale rule explained and how to report wash sales for worked examples.
- Code B (incorrect basis): For transferred shares, uncovered securities, or corporate actions not properly reflected. Enter the difference between the incorrect and correct basis.
- Code T: Holding period reported incorrectly (short-term marked as long-term, or vice versa).
You can use multiple codes on a single transaction.
Three worked examples
Sale 1: simple covered short-term sale
50 shares of MSFT, bought March 10, 2025 at $410/share ($20,500), sold August 20, 2025 at $435/share ($21,750). Held 5 months. Covered security.
| (a) | (b) | (c) | (d) | (e) | (f) | (g) | (h) |
|---|---|---|---|---|---|---|---|
| 50 sh MSFT | 03/10/2025 | 08/20/2025 | $21,750 | $20,500 | $1,250 |
Form 8949 Part I, Box A. No adjustments. Straightforward.
Sale 2: covered long-term sale with wash sale
100 shares of AMZN, bought June 5, 2024 at $180/share ($18,000), sold November 12, 2025 at $165/share ($16,500). That is a $1,500 loss, but you repurchased 100 shares on November 30, 2025, triggering a wash sale. Full loss disallowed.
| (a) | (b) | (c) | (d) | (e) | (f) | (g) | (h) |
|---|---|---|---|---|---|---|---|
| 100 sh AMZN | 06/05/2024 | 11/12/2025 | $16,500 | $18,000 | W | $1,500 | $0 |
Form 8949 Part II, Box D. The $1,500 gets added to the replacement shares' cost basis ($180/share instead of $165).
Sale 3: uncovered long-term sale
200 shares of JNJ, bought September 15, 2009 at $60/share ($12,000), sold April 8, 2025 at $155/share ($31,000). Held over 15 years. Uncovered (purchased before 2011), so the broker did not report cost basis to the IRS.
| (a) | (b) | (c) | (d) | (e) | (f) | (g) | (h) |
|---|---|---|---|---|---|---|---|
| 200 sh JNJ | 09/15/2009 | 04/08/2025 | $31,000 | $12,000 | $19,000 |
Form 8949 Part II, Box E. You provide the cost basis since the IRS does not have it.
Schedule D summary
- Part I (short-term), Box A: $1,250 gain
- Part II (long-term), Box D: $0 (AMZN loss fully disallowed)
- Part II (long-term), Box E: $19,000 gain
- Net: $20,250 ($1,250 at ordinary rates, $19,000 at long-term rates of 0%, 15%, or 20% depending on income)
Common mistakes to watch for
- Missing sales. Every 1099-B sale must appear on Form 8949. The IRS has the data. Collect forms from all brokers.
- Wrong cost basis on uncovered securities. Account for stock splits, reinvested dividends, spin-offs, and gifts/inheritance.
- Not reporting cross-account wash sales. Brokers only track wash sales within one account. You are responsible for identifying them across accounts and brokers.
- Entering corrected figures without showing the adjustment. Always report the 1099-B numbers in columns (d) and (e), then adjust in (f) and (g). Otherwise the IRS matching system flags a discrepancy.
- Mixing up holding periods. Long-term treatment requires holding more than one year (not exactly one year). Double-check each sale.
How TrackMyShares helps
The capital gains tax report generates a breakdown of every sale for a calendar year, formatted to map directly to Form 8949 columns. Wash sales are flagged automatically, and every purchase is tracked as a separate tax lot so your cost basis stays accurate.
Reports are designed for printing or sharing with your accountant. For more on cost basis methods, see cost basis methods for stocks.
Sign up for TrackMyShares to track your stock sales, generate tax reports, and simplify your filing.
This is general information, not personal tax or financial advice.