How to Report Stock Sales: Form 8949 and Schedule D Guide
Every time you sell a stock, ETF, mutual fund, or other capital asset in a taxable account, the transaction must be reported to the IRS. The two forms at the center of this process are Form 8949 and Schedule D. Understanding how they work — and how they connect to the Form 1099-B your broker sends you — is essential for filing an accurate tax return and avoiding costly errors or IRS notices.
Estimate Your Capital Gains Tax
Use our free calculator to model short-term and long-term gains, including wash sale scenarios, before you file.
In this article
- What Is Form 8949?
- What Is Schedule D?
- When Do You Need to File These Forms?
- Form 1099-B: How It Connects
- Part I (Short-Term) vs Part II (Long-Term)
- Box A vs Box B vs Box C: Covered vs Non-Covered
- Adjustment Codes: B, E, and W Explained
- Step-by-Step Walkthrough with Example Trades
- How to Handle Wash Sale Adjustments
- Multiple Brokerage Accounts
- Capital Loss Carryforwards
- E-Filing vs Paper Filing
- Frequently Asked Questions
What Is Form 8949?
Form 8949 — Sales and Other Dispositions of Capital Assets is the IRS form where you report each individual transaction involving a capital asset (stock, ETF, mutual fund, bond, option, cryptocurrency, real estate, etc.) that occurred in a taxable account during the tax year. Each row on the form represents one sale or disposition.
For every transaction, Form 8949 requires you to report:
- Description of the asset (e.g., the company name and number of shares)
- Date acquired— the date you originally purchased or otherwise acquired the asset
- Date sold or disposed of
- Proceeds— the amount you received from the sale (Column d)
- Cost or other basis— what you paid for the asset, including commissions (Column e)
- Adjustment code(s)— a letter code indicating why any adjustment is needed (Column f)
- Adjustment amount— the dollar amount of any adjustment (Column g), which can increase or decrease the reported gain or loss
- Gain or loss— the net result after any adjustments (Column h)
The totals from Form 8949 feed directly into Schedule D, which then determines your overall net capital gain or loss for the year. Think of Form 8949 as the detailed transaction ledger and Schedule D as the summary that flows to your Form 1040.
What Is Schedule D?
Schedule D — Capital Gains and Losses is the summary form that aggregates all capital gain and loss activity for the tax year. While Form 8949 contains the transaction-level detail, Schedule D combines those totals with any other capital gain distributions (from mutual funds, for example) and calculates your overall net short-term and long-term capital gain or loss.
Schedule D performs several key calculations:
- Totals your short-term gains and losses from Form 8949 Part I and other sources
- Totals your long-term gains and losses from Form 8949 Part II and other sources (such as capital gain distributions reported in Box 2a of Form 1099-DIV)
- Nets short-term gains against short-term losses and long-term gains against long-term losses
- Applies any capital loss carryforward from prior years
- Computes the final net capital gain or loss, which is then transferred to Schedule D Tax Worksheet (or the Qualified Dividends and Capital Gain Tax Worksheet) to determine the applicable tax rates
- The bottom-line result from Schedule D flows to Line 7 of Form 1040
If your net capital loss for the year exceeds $3,000 (or $1,500 if married filing separately), Schedule D also calculates how much of the loss can offset ordinary income in the current year and how much must be carried forward to future years.
When Do You Need to File These Forms?
You need to file Form 8949 and Schedule D whenever you had any of the following during the tax year in a taxable (non-retirement) account:
- Sales of stocks, ETFs, or mutual fund shares in a taxable brokerage account
- Sales of bonds, options, or other securities
- Sales of cryptocurrency (the IRS treats cryptocurrency as property, so each disposal is a capital gain event)
- Sales of real estate that do not qualify for the principal residence exclusion (or the gain exceeds the exclusion limit)
- Capital gain distributionsfrom mutual funds or ETFs (reported in Box 2a of your 1099-DIV) — these go directly on Schedule D without needing Form 8949
- Wash sale disallowances that require adjustment
You do not need Form 8949 or Schedule D for sales that occur inside a retirement account (IRA, 401(k), Roth IRA, etc.). Gains inside retirement accounts are tax-deferred or tax-free, and there is no transaction-level reporting required for trades within those accounts.
Even if you had only one stock transaction in a taxable account during the year, you must report it on Form 8949 and include Schedule D with your Form 1040. There is no minimum threshold below which reporting is waived.
Form 1099-B: How It Connects
Form 1099-B — Proceeds from Broker and Barter Exchange Transactions is the annual tax document your brokerage sends you (and the IRS) by mid-February each year. It summarizes every sale of securities in your taxable account during the prior tax year and is the primary source document for completing Form 8949.
For each sale reported on a 1099-B, you generally receive:
- Description of the security sold
- Date acquired and date sold (or a note that the acquisition date is unknown for non-covered securities)
- Gross proceeds from the sale
- Cost or other basis(for covered securities only — the broker is required to report this)
- Whether the gain or loss is short-term or long-term(based on the broker's holding period records)
- Wash sale loss disallowed (if any)
- Federal income tax withheld (if backup withholding applied)
Your job when preparing your tax return is to transfer the information from your 1099-B onto Form 8949, applying any necessary corrections or adjustments. The IRS receives a copy of your 1099-B directly from your broker and will compare it to what you report — discrepancies can trigger automated notices.
Part I (Short-Term) vs Part II (Long-Term)
Form 8949 is divided into two parts, and the separation between them is critical because short-term and long-term gains are taxed at very different rates:
Part I — Short-Term Transactions
Assets held for one year or lessbefore being sold. Short-term gains are taxed as ordinary income at your marginal rate (10–37%). Short-term losses first offset short-term gains.
Part II — Long-Term Transactions
Assets held for more than one year before being sold. Long-term gains are taxed at preferential rates of 0%, 15%, or 20% depending on income. Long-term losses first offset long-term gains.
The holding period is measured from the day afterthe date of purchase through and including the date of sale. If you purchased shares on March 1, 2024, the one-year anniversary is March 1, 2025 — and a sale on March 2, 2025 or later would qualify as long-term.
Each part of Form 8949 is further divided by category (Box A, B, or C for short-term; Box D, E, or F for long-term), which indicates whether the transaction was covered or non-covered and how the basis was reported. The totals from each section are carried to the corresponding lines of Schedule D.
For a full explanation of the rates that apply to each category, see our article on Capital Gains Tax on Stocks.
Box A vs Box B vs Box C: Covered vs Non-Covered Securities
Within each Part of Form 8949, transactions are grouped by how the broker reported (or did not report) the cost basis to the IRS. This determines which checkbox you mark at the top of each section:
| Box | Part / Term | Description | Basis Reported to IRS? |
|---|---|---|---|
| Box A | Part I (Short-Term) | Covered securities — basis reported to IRS on 1099-B | Yes |
| Box B | Part I (Short-Term) | Non-covered securities — basis NOT reported to IRS on 1099-B | No |
| Box C | Part I (Short-Term) | Transactions not reported on 1099-B at all (e.g., barter exchanges, certain inherited assets) | No |
| Box D | Part II (Long-Term) | Covered securities — basis reported to IRS on 1099-B | Yes |
| Box E | Part II (Long-Term) | Non-covered securities — basis NOT reported to IRS on 1099-B | No |
| Box F | Part II (Long-Term) | Transactions not reported on 1099-B at all | No |
What Are Covered Securities?
A covered security is one for which your broker is legally required to track and report cost basis to the IRS. The coverage rules were phased in under the Emergency Economic Stabilization Act of 2008:
- Stocks (corporate equities): Purchased on or after January 1, 2011
- Mutual funds and ETFs (regulated investment companies) and DRIPs: Purchased on or after January 1, 2012
- Fixed income securities (bonds) and options: Purchased on or after January 1, 2014
Securities acquired before these dates are non-covered. Your broker may have the basis in its records from transfers or long-term account history, but it is not required to report it to the IRS. You are responsible for documenting and providing the correct basis for non-covered positions.
Why Does It Matter?
When basis is reported to the IRS (Box A or D), both you and the IRS have the same reported number — if there are errors, the discrepancy is visible. For non-covered securities (Box B or E), the IRS only receives the proceeds amount from the broker; you must report your own basis, and the burden of proof falls on you to demonstrate the correct figure if questioned. This makes careful recordkeeping for older positions especially important.
Adjustment Codes: B, E, and W Explained
Column (f) of Form 8949 is used to enter a letter code that explains why the amount in Column (g) (the adjustment) differs from what the broker reported. The three codes most commonly encountered by individual stock investors are:
Code B — Incorrect Basis Reported
Use Code B when the cost or other basis reported in Box 1e of your 1099-B is incorrect. This frequently occurs for securities transferred from another broker (where the receiving broker may not have received complete basis information), positions affected by spinoffs or mergers not properly reflected in broker records, or DRIP lots that were not correctly captured. Enter your correct basis in Column (e), and enter the difference (your basis minus the reported basis) in Column (g) as a positive or negative number accordingly. Keep supporting documentation — original trade confirmations, transfer statements, or corporate action notices.
Code E — Proceeds Reported Incorrectly
Use Code E when the proceeds reported in Box 1d of your 1099-B are incorrect. This is less common than a basis error but can occur with certain options exercises, in connection with certain corporate mergers and tender offers, or where the gross proceeds include amounts that should not be taxable. Enter the correct proceeds amount in Column (d) and the adjustment in Column (g). Code E may sometimes be combined with Code B using both letters in Column (f).
Code W — Wash Sale Loss Disallowed
Use Code W when a loss is disallowed under the wash sale rule — that is, you sold a security at a loss and purchased a substantially identical security within 30 days before or after the sale. The disallowed loss amount (a positive number) is entered in Column (g), which effectively reduces or eliminates the loss reported in Column (h). Your broker should have already identified wash sale disallowances on your 1099-B in Box 1g, but it is your responsibility to verify accuracy, especially when wash sales span multiple accounts or involve securities the broker may not have linked as substantially identical. See our full article on the Wash Sale Rule for a detailed explanation.
Other adjustment codes exist for less common situations (such as Code H for gain or loss on the sale of a principal residence, Code L for loss not allowed due to the related-party rules, and Code M for certain exclusions from income). Consult the IRS instructions for Form 8949 for the complete list and their specific applications.
Step-by-Step Walkthrough with Example Trades
Let's walk through a realistic example for an investor named David who had four trades in his taxable brokerage account during the 2025 tax year. His 1099-B shows the following:
| Trade | Security | Acquired | Sold | Proceeds | Reported Basis | Wash Sale | Covered? |
|---|---|---|---|---|---|---|---|
| 1 | 100 sh ABC Corp | 03/15/2025 | 09/10/2025 | $8,200 | $6,500 | None | Yes |
| 2 | 50 sh XYZ ETF | 01/20/2024 | 04/05/2025 | $3,100 | $3,800 | None | Yes |
| 3 | 200 sh DEF Inc | 11/01/2025 | 12/15/2025 | $4,400 | $5,000 | $320 disallowed | Yes |
| 4 | 75 sh GHI Corp | 06/10/2010 | 07/22/2025 | $9,750 | $0 (not reported) | None | No |
Here is how David reports each trade:
Trade 1: ABC Corp (Short-Term, Covered — Box A)
Held approximately 6 months — short-term. Covered security. No adjustment needed. David reports this on Form 8949 Part I under Box A. Proceeds: $8,200. Basis: $6,500. Gain: $1,700. No entry in Columns (f) or (g).
Trade 2: XYZ ETF (Long-Term, Covered — Box D)
Held over one year — long-term. Covered security. No adjustment needed. David reports this on Form 8949 Part II under Box D. Proceeds: $3,100. Basis: $3,800. Loss: ($700). No entry in Columns (f) or (g). This loss will offset long-term gains.
Trade 3: DEF Inc (Short-Term, Covered with Wash Sale — Box A)
Held approximately 6 weeks — short-term. Covered security. There is a wash sale disallowance of $320. David reports this on Form 8949 Part I under Box A. Proceeds: $4,400. Basis: $5,000. He enters W in Column (f) and $320(positive) in Column (g). His reported loss becomes ($600 − $320) = ($280) net reported, but $320 of the loss is permanently deferred to the replacement shares' basis.
Trade 4: GHI Corp (Long-Term, Non-Covered — Box E)
Purchased in 2010 (before covered security rules) — long-term. The broker reports only proceeds ($9,750) on the 1099-B with no basis. David has his original trade confirmation showing he paid $3,200 for the shares including commissions. He reports this on Form 8949 Part II under Box E. He enters $9,750 in Column (d) and his correct basis of $3,200 in Column (e). He enters B in Column (f) and$3,200 as a negative adjustment in Column (g) to convert from the $0 reported basis to his actual basis. Reported gain: $6,550.
David then carries the totals from Form 8949 to Schedule D: Part I shows a net short-term gain of $1,700 + ($280) = $1,420. Part II shows a net long-term result of ($700) + $6,550 = $5,850 long-term gain. The $5,850 long-term gain minus the $700 long-term loss nets to $5,150 long-term capital gain, which will be taxed at preferential long-term rates.
How to Handle Wash Sale Adjustments
The wash sale ruledisallows a capital loss deduction when you sell a security at a loss and purchase a “substantially identical” security within 30 calendar days before or after the sale. The purpose of the rule is to prevent investors from claiming a tax loss while maintaining their economic exposure to the same position.
When a wash sale occurs, the mechanics on Form 8949 work as follows:
- The broker should identify the disallowed amount on your 1099-B in Box 1g (Wash Sale Loss Disallowed).
- You report the sale on Form 8949 using the proceeds and basis from your 1099-B in Columns (d) and (e).
- Enter W in Column (f) and the disallowed amount as a positive number in Column (g). This increases your gain (or reduces your loss) by the disallowed amount.
- Column (h) then reflects the gain or adjusted (smaller) loss that is actually recognized for tax purposes.
The disallowed loss is not permanently lost in most cases — it is added to the cost basis of the replacement shares (for same-account wash sales identified by the broker). When you eventually sell the replacement shares without triggering another wash sale, the higher basis recovers the previously deferred loss.
Multiple Brokerage Accounts
If you have taxable accounts at more than one brokerage firm, you will receive a separate Form 1099-B from each broker. You must combine all transactions from all brokers onto your Form 8949 (and ultimately Schedule D) — there is no separate form for each brokerage.
In practice, if you use tax software, you can import the 1099-B data from each broker separately, and the software will consolidate everything onto the appropriate sections of Form 8949 and Schedule D. If preparing by hand or with a professional, gather all 1099-Bs before beginning and organize transactions by category (short-term covered, short-term non-covered, long-term covered, long-term non-covered).
Capital Loss Carryforwards
If your total net capital losses for the year exceed $3,000 (the maximum amount that can offset ordinary income in a single year), the excess is not wasted — it is carried forward to future tax years indefinitely.
Capital loss carryforwards retain their character:
- Short-term carryforward losses are applied first against short-term gains in the carryforward year, then against long-term gains, and then up to $3,000 against ordinary income.
- Long-term carryforward losses are applied first against long-term gains in the carryforward year, then against short-term gains, and then up to $3,000 against ordinary income (combined with any short-term carryforward).
The capital loss carryforward amount is calculated on the Capital Loss Carryover Worksheet in your tax software or in the IRS instructions for Schedule D. The carryforward flows from your prior-year Schedule D (Line 16 and Line 21 show the applicable carryforward amounts) and is entered on the current-year Schedule D lines 6 and 14.
Capital loss carryforwards are one reason that tax-loss harvesting in down markets can be particularly powerful: losses generated today can offset gains for many future years. The carryforward does not expire.
E-Filing vs Paper Filing
The vast majority of individual investors with stock sales will file electronically using tax software. E-filing offers several advantages for investors with Form 8949 transactions:
- Most major brokerage firms provide direct import of 1099-B data into popular tax software (TurboTax, H&R Block, TaxAct, etc.), dramatically reducing manual entry errors.
- Software automatically places each transaction on the correct Part and Box of Form 8949, applies holding period calculations, and carries totals to Schedule D.
- Many software platforms support electronic attachment of brokerage-provided summary statements for accounts with large numbers of transactions, reducing the need to enter every individual trade.
- E-filed returns are processed faster and refunds are received more quickly.
Paper filing considerations: If you choose to file on paper or need to mail a supplemental statement, the IRS allows you to attach a substitute statement (such as a brokerage-provided gain/loss summary) instead of listing each transaction individually on Form 8949, provided the statement contains all required information and you check the applicable checkboxes and attach it properly. This is more commonly used by investors with hundreds or thousands of individual trades.
Regardless of whether you e-file or paper-file, you should retain all supporting documentation — original trade confirmations, account statements, 1099-Bs, prior-year Schedule Ds showing carryforward amounts, and records of any basis adjustments — for at least three years from the date you file (six years is recommended for complex transactions or where underreporting of income could be an issue).
For a broader understanding of the tax implications of selling stocks, see our guide on Capital Gains Tax on Stocks. You can also use our Capital Gains Calculator to estimate your tax before filing, or browse the Glossary for definitions of key tax terms.
Frequently Asked Questions
Do I have to file Form 8949 if my 1099-B shows no adjustments and all transactions are covered?
If all of your transactions are covered securities with no adjustments, some tax software and the IRS instructions allow you to report the totals directly on Schedule D without listing each transaction individually on Form 8949. However, if any transaction requires an adjustment (such as a wash sale disallowance), has a missing or incorrect basis, or involves non-covered securities, you must use Form 8949. In practice, most tax software always generates Form 8949 to ensure accurate reporting. Consult a qualified tax professional or the current year IRS Schedule D instructions to determine whether you qualify to skip Form 8949.
What happens if my 1099-B shows the wrong cost basis?
If you believe the cost basis reported by your broker on Form 1099-B is incorrect, you should use Column (e) on Form 8949 to report your correct basis and then use Column (g) to enter the adjustment amount (the difference between the reported basis and your correct basis). Use adjustment code B in Column (f) to indicate a basis reported incorrectly. Keep documentation to support your corrected basis, such as original trade confirmations, DRIP purchase records, or transfer statements from a prior broker. The IRS will match your 8949 figures against the 1099-B the broker filed, so documenting your corrections carefully is important.
How do wash sale losses get reported on Form 8949?
When a sale results in a loss that is disallowed by the wash sale rule, you enter the disallowed amount as a positive number in Column (g) of Form 8949 and write W in Column (f) as the adjustment code. This increases the reported gain (or reduces the reported loss) for that row, effectively removing the disallowed loss from your current-year taxes. The disallowed amount is not gone permanently — your broker should have added it to the cost basis of the replacement shares. When you eventually sell the replacement shares without triggering another wash sale, the adjusted basis recovers the previously disallowed loss.
Can I net all my gains and losses without listing every individual trade?
For covered securities with no adjustments, you may be able to report subtotals rather than individual trades in certain circumstances — for example, if your broker provides a summary statement that meets IRS requirements. However, any trade requiring an adjustment code must be listed individually on Form 8949. For most individual investors using tax software, the software will import your 1099-B and generate the individual line entries automatically. If you have hundreds of trades, your broker may provide a statement attachment that is accepted in lieu of listing each trade on the form itself — check IRS instructions for the current year.
What is a capital loss carryforward and how does it appear on my return?
When your total net capital losses in a tax year exceed $3,000 (the annual limit on offsetting ordinary income), the excess loss is carried forward to future tax years. The carryforward amount is tracked on Schedule D and flows to the Capital Loss Carryover Worksheet in your tax return. In future years, the carryforward loss is applied first against capital gains of the same type (short-term carryforwards offset short-term gains; long-term carryforwards offset long-term gains), then against the other type, and finally up to $3,000 against ordinary income. Capital loss carryforwards can be carried indefinitely until fully used. They do not expire.
Estimate Your Capital Gains Tax Before You File
Model your short-term and long-term gains, including multiple transactions and wash sale scenarios, with our free calculator.