How to report stock sales on your taxes: 1099-B and Form 8949
Every stock sale you make during the year must be reported to the IRS on your federal tax return, regardless of whether you made a profit or took a loss. The process involves three key forms: the 1099-B you receive from your broker, Form 8949 where you list each sale, and Schedule D where you summarize your total capital gains and losses.
In this guide, we walk through the entire reporting process step by step, explain the differences between covered and uncovered securities, and show you how to handle common situations like wash sales and incorrect cost basis.
Disclaimer: This article is for informational purposes only and does not constitute financial or tax advice. Consult a qualified tax professional before making investment decisions based on tax considerations.
The 1099-B form: what your broker sends you
After the end of each calendar year, your brokerage sends you a Form 1099-B (Proceeds from Broker and Barter Exchange Transactions). This form reports every sale or disposition of securities in your taxable brokerage account during the year.
When you receive it
Brokers are required to send 1099-B forms by mid-February of the year following the tax year. For sales made in 2025, you should receive your 1099-B by February 15, 2026. Many brokers make them available electronically even earlier.
Keep in mind that brokers sometimes issue corrected 1099-B forms in March if they need to adjust figures. If you file your taxes before receiving a corrected form, you may need to file an amended return.
What the 1099-B contains
For each sale, the 1099-B typically reports:
- Description of property (stock name or ticker symbol)
- Date acquired (purchase date, if the broker has it)
- Date sold or disposed
- Proceeds (the amount you received from the sale)
- Cost or other basis (your cost basis, if the security is "covered")
- Gain or loss (the difference between proceeds and cost basis)
- Short-term or long-term (based on holding period)
- Whether the basis was reported to the IRS (covered vs uncovered)
The 1099-B is also sent to the IRS, so the agency already has a record of your sales. This is why accurate reporting on your tax return is essential. If the figures on your return do not match what the IRS has on file, it can trigger a notice or audit.
Covered vs uncovered securities
One of the most important distinctions on the 1099-B is whether a security is classified as covered or uncovered. This affects how much information your broker reports to the IRS and how you fill out Form 8949.
Covered securities
A security is "covered" if your broker is required to report its cost basis to the IRS. The following rules determine when a security becomes covered:
- Stocks purchased on or after January 1, 2011 are covered
- Mutual funds and ETFs purchased on or after January 1, 2012 are covered
- Options, bonds, and other securities have varying effective dates, generally 2013 or 2014
For covered securities, your broker reports both the proceeds and the cost basis to the IRS. This means the IRS can cross-reference your return against the broker's reported data.
Uncovered securities
Securities purchased before the applicable effective date are "uncovered." For uncovered securities, your broker reports the sale proceeds to the IRS but is not required to report the cost basis.
This means you are responsible for tracking and reporting the correct cost basis yourself. If you sold shares that you purchased before 2011, you will need your own records of the original purchase price, including any adjustments for stock splits, mergers, or spin-offs.
Why it matters
The covered/uncovered distinction determines which box you check on Form 8949 (more on this below) and whether the IRS will automatically verify your cost basis. For uncovered securities, accuracy is especially important because you do not have the safety net of the broker confirming your numbers.
Form 8949: reporting each sale
Form 8949 (Sales and Other Dispositions of Capital Assets) is where you list each individual stock sale. The form is divided into two parts:
- Part I: Short-term transactions (assets held one year or less)
- Part II: Long-term transactions (assets held more than one year)
The columns on Form 8949
Each part of the form has the following columns:
| Column | Description |
|---|---|
| (a) | Description of property (e.g., "100 sh AAPL") |
| (b) | Date acquired (purchase date) |
| (c) | Date sold or disposed |
| (d) | Proceeds (sale price) |
| (e) | Cost or other basis |
| (f) | Adjustment code(s), if any |
| (g) | Amount of adjustment |
| (h) | Gain or loss (column d minus column e, plus or minus column g) |
Filling in the form
For most straightforward sales where the 1099-B cost basis is correct and no adjustments are needed, you simply transfer the information from your 1099-B to the corresponding columns on Form 8949.
If you have many transactions, you may attach a statement with the same information instead of listing each one on the form itself. The IRS allows this as long as the statement includes all the required columns and totals.
Box codes: A, B, C, D, E, and F
At the top of each part of Form 8949, you must check one of three boxes that indicates whether the cost basis was reported to the IRS by your broker. The box you check determines how the IRS processes your information.
Part I (short-term transactions)
| Box | When to check |
|---|---|
| Box A | Covered securities with short-term holding period. Cost basis was reported to the IRS by your broker. |
| Box B | Uncovered securities with short-term holding period. Cost basis was NOT reported to the IRS. |
| Box C | Short-term transactions not reported on Form 1099-B at all. |
Part II (long-term transactions)
| Box | When to check |
|---|---|
| Box D | Covered securities with long-term holding period. Cost basis was reported to the IRS by your broker. |
| Box E | Uncovered securities with long-term holding period. Cost basis was NOT reported to the IRS. |
| Box F | Long-term transactions not reported on Form 1099-B at all. |
If you have transactions that fall into multiple box categories, you need a separate Form 8949 (or separate section) for each box type. For example, if you have both covered and uncovered short-term sales, you would complete Part I twice: once checking Box A and once checking Box B.
Schedule D: the summary form
Schedule D (Capital Gains and Losses) is the summary form that pulls together all your capital gains and losses. It collects the totals from your Form 8949 entries and calculates your net capital gain or loss for the year.
How Schedule D works
Schedule D has three parts:
Part I: Short-term capital gains and losses. You enter the totals from Form 8949 Part I. Lines 1a, 1b, and 1c correspond to Box A, Box B, and Box C transactions respectively.
Part II: Long-term capital gains and losses. You enter the totals from Form 8949 Part II. Lines 8a, 8b, and 8c correspond to Box D, Box E, and Box F transactions respectively. This section also includes capital gain distributions from mutual funds and ETFs (reported on Form 1099-DIV), which go on Line 11.
Part III: Summary. This section combines your short-term and long-term results to calculate your net capital gain or loss. The net figure flows to your Form 1040 (your main tax return).
Net gain or loss calculation
The basic calculation on Schedule D is:
- Net short-term gain or loss = Total short-term gains minus total short-term losses
- Net long-term gain or loss = Total long-term gains minus total long-term losses
- Overall net gain or loss = Net short-term + Net long-term
If the result is a net gain, it is added to your other income on Form 1040. If it is a net loss, you can deduct up to $3,000 against other income ($1,500 if married filing separately), with any excess carrying forward to future years.
When you need to make adjustments
In several common situations, the cost basis or gain/loss reported on your 1099-B does not match what you should report on your tax return. When this happens, you report the 1099-B figures in columns (d) and (e), then make an adjustment in columns (f) and (g).
Wash sales (Code W)
If a wash sale occurred, your broker may or may not have accounted for it on the 1099-B. If the wash sale is already reflected in the 1099-B cost basis, no adjustment is needed on Form 8949. If it is not reflected, you need to:
- Enter the original proceeds and cost basis from the 1099-B
- Enter code W in column (f) for "wash sale"
- Enter the disallowed loss amount as a positive number in column (g)
- The adjustment increases the gain (or reduces the loss) to reflect the disallowed amount
For a detailed explanation of wash sales and how they work, see our guide on the wash sale rule explained.
Incorrect cost basis on 1099-B (Code B)
Sometimes the cost basis on your 1099-B is incorrect. This can happen if:
- You transferred shares from another broker and the cost basis was not transferred correctly
- The security is uncovered and the broker did not have your cost basis information
- Corporate actions (mergers, spin-offs, stock splits) were not properly reflected
In these cases, you enter code B in column (f) and the adjustment amount in column (g). The adjustment should be the difference between the incorrect basis on the 1099-B and the correct basis.
Other common adjustment codes
| Code | Situation |
|---|---|
| W | Wash sale, loss disallowed |
| B | Basis reported to IRS is incorrect |
| T | Short-term gain or loss, but holding period reported as long-term (or vice versa) |
| O | Other adjustments (explain in a separate statement) |
You can use multiple codes for the same transaction if needed. For example, if a transaction involves both a wash sale and an incorrect cost basis, you would enter both codes.
Worked example: reporting three stock sales
Let's walk through reporting three sales on Form 8949. Suppose you made the following sales during the 2025 tax year:
Sale 1: Simple covered short-term sale
- Stock: 50 shares of MSFT
- Purchased: March 10, 2025 at $410 per share ($20,500 cost)
- Sold: August 20, 2025 at $435 per share ($21,750 proceeds)
- Holding period: 5 months (short-term)
- 1099-B reports: Covered, cost basis $20,500
- Capital gain: $1,250
This goes on Form 8949 Part I, Box A. No adjustments needed.
| (a) | (b) | (c) | (d) | (e) | (f) | (g) | (h) |
|---|---|---|---|---|---|---|---|
| 50 sh MSFT | 03/10/2025 | 08/20/2025 | $21,750 | $20,500 | $1,250 |
Sale 2: Covered long-term sale with wash sale adjustment
- Stock: 100 shares of AMZN
- Purchased: June 5, 2024 at $180 per share ($18,000 cost)
- Sold: November 12, 2025 at $165 per share ($16,500 proceeds)
- Holding period: 17 months (long-term)
- Capital loss before adjustment: -$1,500
- Wash sale: You repurchased 100 shares of AMZN on November 30, 2025, triggering the wash sale rule. The entire $1,500 loss is disallowed.
This goes on Form 8949 Part II, Box D. You need to add code W and the disallowed amount.
| (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 |
The disallowed loss of $1,500 is added to the cost basis of the replacement shares purchased on November 30, making their adjusted cost basis $180 per share instead of $165 per share.
Sale 3: Uncovered long-term sale
- Stock: 200 shares of JNJ
- Purchased: September 15, 2009 at $60 per share ($12,000 cost)
- Sold: April 8, 2025 at $155 per share ($31,000 proceeds)
- Holding period: Over 15 years (long-term)
- 1099-B reports: Uncovered (purchased before 2011), cost basis NOT reported to IRS
- Capital gain: $19,000
This goes on Form 8949 Part II, Box E. The cost basis was not reported to the IRS, so you are responsible for providing the correct amount.
| (a) | (b) | (c) | (d) | (e) | (f) | (g) | (h) |
|---|---|---|---|---|---|---|---|
| 200 sh JNJ | 09/15/2009 | 04/08/2025 | $31,000 | $12,000 | $19,000 |
Summary on Schedule D
After completing Form 8949, the totals flow to Schedule D:
Part I (short-term):
- Box A total: $1,250 gain
Part II (long-term):
- Box D total: $0 (the AMZN loss was fully disallowed by the wash sale)
- Box E total: $19,000 gain
- Total long-term: $19,000
Part III (summary):
- Net short-term capital gain: $1,250
- Net long-term capital gain: $19,000
- Total net capital gain: $20,250
The $1,250 short-term gain is taxed at the investor's ordinary income rate, and the $19,000 long-term gain is taxed at the preferential long-term capital gains rate (0%, 15%, or 20% depending on total taxable income).
Common mistakes when reporting stock sales
Missing sales
Every sale reported on a 1099-B must appear on your Form 8949. If you forget to include a sale, the IRS will notice because your broker has already reported the proceeds. This can result in a notice and potentially penalties and interest.
If you have accounts at multiple brokers, make sure you collect 1099-B forms from all of them.
Wrong cost basis
For uncovered securities (purchased before 2011), your broker may not have your correct cost basis. If you report the wrong cost basis, you could overpay or underpay your taxes. Common causes of incorrect cost basis include:
- Stock splits that were not accounted for
- Reinvested dividends that should increase your cost basis
- Corporate spin-offs that allocated a portion of your cost basis to the new company
- Shares received as gifts or inheritance (which have special cost basis rules)
Keep records of all your original purchases, including brokerage statements, trade confirmations, and corporate action notices.
Forgetting wash sale adjustments
If your broker did not account for a wash sale on the 1099-B (this can happen with transactions across different accounts or brokers), you are still required to make the adjustment on Form 8949. The IRS expects you to self-report wash sales, even if your broker did not flag them.
This is particularly important if you sold a stock at a loss in one brokerage account and repurchased it in another, or if you repurchased in an IRA. Your brokers have no way to communicate with each other about these cross-account wash sales.
Not matching the 1099-B
Even when you know the cost basis on your 1099-B is wrong, you should still report the 1099-B figures in columns (d) and (e) of Form 8949, then use columns (f) and (g) to make the correction. This approach matches what the IRS has on file and clearly shows the adjustment.
If you simply enter the correct figures without showing the adjustment, the IRS's automated matching system may flag a discrepancy and send you a notice.
Mixing up short-term and long-term
Classifying a gain as long-term when it is actually short-term (or vice versa) affects the tax rate applied. Double-check the holding period for each sale. Remember, the holding period begins the day after the purchase date, and the sale must occur more than one year after the purchase date (not just one year exactly) for long-term treatment.
Forgetting state taxes
In addition to federal taxes, most states tax capital gains as well. Some states tax capital gains at the same rate as ordinary income, while a few states have no income tax at all. Make sure you account for state reporting requirements when preparing your return.
How TrackMyShares helps with tax reporting
TrackMyShares is designed to give you the data you need for accurate tax reporting, reducing the risk of errors and saving you time during tax season.
Data formatted for Form 8949
The capital gains tax report in TrackMyShares generates a detailed breakdown of every sale in a given calendar year. For each sale, the report includes:
- Stock symbol and description
- Date acquired and date sold
- Proceeds and cost basis
- Holding period classification (short-term or long-term)
- Gain or loss amount
This data maps directly to the columns on Form 8949, making it easy to transfer to your tax return or hand to your accountant.
Wash sale tracking
TrackMyShares automatically scans your transaction history for potential wash sales. When a sale at a loss occurs within 30 days of a repurchase of the same stock, the system flags it and shows the disallowed loss amount. This helps you catch wash sales that your broker might miss (especially across different holdings or lots of the same security).
For more on how wash sales work, see our guide on the wash sale rule explained.
Cost basis accuracy
By tracking every purchase as a separate tax lot, TrackMyShares maintains an accurate record of your cost basis for every holding. You can see each lot's purchase date, price, and any adjustments, ensuring that the numbers on your tax return are correct.
If you want to understand how different cost basis methods affect your taxes, our guide on cost basis methods for stocks walks through the options in detail.
Export and sharing
Tax reports are designed for printing, so you can generate PDFs for your records or to share with your accountant. Having a clean, organized summary of your stock sales saves time and reduces the chance of errors in your filing.
Reporting stock sales does not have to be stressful. With organized records and the right tools, you can file accurately and confidently. Understanding the relationship between your 1099-B, Form 8949, and Schedule D is the foundation for getting it right.
Sign up for TrackMyShares to track your stock sales, generate tax reports, and simplify your tax filing process.