The Most Common ESPP Filing Error: Form 8949 Cost-Basis Double Taxation
Broker 1099-B reports ESPP basis at the discounted purchase price. Failing to adjust on Form 8949 means you pay ordinary tax and capital gain tax on the same dollars.
A product manager at a public semiconductor company sold 1,200 ESPP shares in March 2024. Her purchase price over three lots averaged $52. Her sale price was $98. Gain per share: $46. She imported the 1099-B into her tax software. Gain reported: $55,200. She filed. In July 2025 she received a CP2000 from the IRS: her W-2 had already reported $21,600 of ordinary compensation income on the ESPP disposition, and she had also reported that same amount as capital gain. She owed $4,752 in additional tax plus interest.
The error was not that the W-2 was wrong or that the 1099-B was wrong. Both were technically correct. The error was that the 1099-B reported basis at the discounted purchase price, not at the correct tax basis (purchase price plus ordinary income recognized). Without an adjustment on Form 8949, the ordinary income was taxed twice: once as wages on the W-2 and once as capital gain on Schedule D.
This is the most common ESPP filing error, and it is not a broker mistake. It is a structural quirk of the reporting system.
Why the 1099-B is understated
Brokers report cost basis on 1099-B as “the amount you paid.” For an ESPP purchase, that is the discounted purchase price. If you paid $34 for a share, the broker reports $34 as basis.
But the correct tax basis is different. For shares where ordinary income has been recognized on a disposition (qualifying or disqualifying), the basis includes the ordinary income amount. If $15 of ordinary income was reported on your W-2 for that share (because the discount became ordinary income on sale), the correct basis is $34 + $15 = $49.
The broker does not know about the W-2 income. The broker’s 1099-B shows $34 basis. Sale at $98 produces a reported gain of $64 per share. Of that, $15 is duplicated ordinary income and $49 is real capital gain.
The adjustment on Form 8949
Form 8949 has a column (g) for basis adjustments and a column (f) for the adjustment code. For ESPP, the relevant code is “B” (basis reported to IRS was incorrect).
For each lot sold:
- Column (d): sale proceeds. From 1099-B, no change.
- Column (e): cost basis. From 1099-B, typically the discounted purchase price.
- Column (f): code B.
- Column (g): adjustment, a negative number equal to the ordinary income already recognized.
The result in column (h) is the corrected gain.
Actual tax software (TurboTax, H&R Block, etc.) typically handles this if you answer the prompts correctly: yes, this was an ESPP sale; yes, ordinary income is on my W-2; here is the amount. The software then makes the basis adjustment automatically.
The error happens when the user imports the 1099-B without walking through the ESPP flow. The software treats the sale as a regular stock sale with the reported basis, and the ordinary income is not netted.
Qualifying disposition reporting
For a qualifying disposition:
- Ordinary income = lesser of discount at offering (15% x offering-date FMV) or actual gain.
- Broker basis (1099-B) = purchase price paid.
- Correct basis = purchase price paid + ordinary income.
- Capital gain = sale proceeds minus correct basis, long-term (since qualifying means held over 12 months from purchase).
Example: offering FMV $100, purchase price $85, sale at $150, qualifying. Ordinary income = min($65 actual, $15 offering discount) = $15. Basis adjustment: add $15. Capital gain: $150 - ($85 + $15) = $50, long-term.
If you fail to adjust: gain reported on 1099-B = $150 - $85 = $65. Tax: $65 x 20% (LTCG) = $13. Actual correct tax: ordinary on $15 at 37% = $5.55; capital on $50 at 20% = $10. Total: $15.55. The unadjusted version pays $13 on LTCG but omits the ordinary; the W-2 reports the ordinary separately so total reported income is $65 of capital PLUS $15 of wages = $80, which is $15 too much. Net overpayment: about $3 per share.
Actually, the double-counting works out differently depending on whether the ordinary income was reflected on W-2 already. Most plans report the ordinary income on W-2 in the year of disposition. If W-2 shows $15 of wages already and 1099-B shows $65 of capital gain, the taxpayer ends up with $15 + $65 = $80 of taxable gain when only $65 is actually correct. That is the double taxation.
Disqualifying disposition reporting
For a disqualifying disposition:
- Ordinary income = FMV at purchase minus purchase price (the full discount).
- Broker basis (1099-B) = purchase price paid.
- Correct basis = purchase price paid + ordinary income = FMV at purchase.
- Capital gain = sale proceeds minus FMV at purchase.
Example: purchase price $85, FMV at purchase $100, sale at $150, disqualifying. Ordinary income = $15. Correct basis = $100. Capital gain = $50.
Same structure as qualifying, but the ordinary income is typically higher (unless the stock has risen a lot, in which case qualifying uses the lesser of offering discount and actual gain).
Finding the ordinary income amount
The ordinary income amount for each ESPP sale should be on:
- W-2 Box 14: often shown with an ESPP notation.
- W-2 Box 12 code V: the aggregate NSO + ESPP spread for some employers.
- Employer supplemental statement: usually sent with W-2, detailing ESPP dispositions by lot.
- Form 3922: issued after each ESPP purchase, showing the data needed to compute ordinary income.
Cross-reference these to confirm the ordinary income per lot. For a multi-lot sale, you may need to prorate.
How tax software prompts work
Most commercial tax software includes a dedicated ESPP flow. The prompts typically ask:
- Was this an ESPP sale? (Yes)
- What was the purchase price? (From 3922)
- What was the FMV at purchase? (From 3922)
- What was the FMV at offering? (From 3922)
- Is this a qualifying or disqualifying disposition? (Based on holding period)
- Was the ordinary income reported on your W-2? (Almost always yes)
If you answer these correctly, the software computes the basis adjustment and produces the right result on Form 8949.
If you import the 1099-B and check “stock sale” without the ESPP flow, the software uses the 1099-B basis as-is and the adjustment is missed.
Reconciling if the W-2 is wrong
Occasionally the employer fails to report the ordinary income on the W-2. This is a different error. Without W-2 reporting, the IRS thinks you have no ESPP ordinary income. You have two choices:
- Report the ordinary income on your return as “other compensation” on Schedule 1 line 8 (with an explanation), and take the basis adjustment.
- Request a W-2c from the employer and refile once received.
Option two is cleaner but delays the return. Option one is faster but can prompt IRS questions.
The audit exposure
The CP2000 notice is automated. The IRS computer matches Form 1099-B sale proceeds against Schedule D and flags mismatches. It also matches W-2 Box 1 against the wage portion. For ESPP double-reporting, the automated system may flag over-reporting (good for the taxpayer) or not flag it at all (silent overpayment).
The reverse error, under-reporting because the ordinary income was missed on the W-2 but the taxpayer treated basis as purchase-price-plus-ordinary, produces an IRS deficiency notice.
Frequently asked
Does the basis adjustment apply to non-qualified (non-§423) ESPPs? Yes. The same mechanic applies: any ordinary income recognized on the purchase date (or sale date) steps up basis for capital gain purposes.
What if I do not have Form 3922? The employer is required to issue it. Request it from HR or equity administration. Without 3922, you can approximate using your payroll records and plan documents, but the IRS prefers the source form.
Do I need to adjust for qualifying dispositions where the ordinary income is zero? If ordinary income is truly zero (rare; typically occurs only when the stock price at sale is below the purchase price), no basis adjustment is needed. The loss is capital, not ordinary.
Can I recover the double tax on a prior-year return? Yes, by filing Form 1040-X with the correct Form 8949 adjustments. There is a three-year statute of limitations for amendments. For 2022 returns, the deadline is roughly April 2026; for 2023, April 2027.
Is this specific to ESPP or does it affect other equity comp? The same basis-adjustment mechanic applies to NSO exercises, disqualifying ISO dispositions, and RSU vests. In each case, ordinary income stepped up basis, and the broker 1099-B typically reports the discounted or pre-ordinary basis.
Next step
Pull the last three years of Form 1099-B and Form 3922. For each ESPP sale, recompute the correct basis (purchase price + ordinary income). Compare to the basis reported on your Schedule D / Form 8949. If you failed to adjust, file Form 1040-X for the affected years to recover the overpayment. Set a habit going forward: every ESPP sale goes through the dedicated flow in tax software, not a bulk 1099-B import.
Eleven years building ESPP participation plans for tech employees who treat it as a spreadsheet problem. Reviews VestedGrant's ESPP optimization content.
Find a fiduciary advisor who understands equity compensation
Short form. We match you with up to three fee-only advisors who routinely work with RSUs, ISOs, and pre-IPO equity.
- equity compESPP Qualifying vs Disqualifying Disposition: The Actual Tax Difference
ESPP qualifying disposition requires 2 years from offering date and 1 year from purchase. Miss either and the entire discount becomes ordinary wages instead of capital gain.
Read more - equity compTax-Gain Harvesting from ESPP Qualifying Dispositions
ESPP qualifying dispositions can be paired with tax-gain harvesting in low-income years to realize long-term capital gains at the 0% federal rate.
Read more - equity compMaxing the ESPP at $25,000: The IRS Section 423 Cap Explained
IRC §423(b)(8) caps ESPP purchases at $25,000 in offering-date FMV per year. The interaction with payroll deduction limits and lookback pricing is often miscounted.
Read more - equity compESPP Enrollment Strategy Across Overlapping Offering Periods
24-month offerings with 6-month purchases change enrollment dynamics. Drop-and-re-enroll rules create opportunities after price drops.
Read more - equity compESPP Lookback Provision: Why 15% Discount Is Really 18-35% Return
An ESPP with a lookback converts a nominal 15% discount into an effective return of 18% to 35% depending on stock price movement during the offering period.
Read more - equity compESPP Plan Comparison: Apple vs Microsoft vs Salesforce vs Oracle
Four large public tech companies run ESPPs with meaningfully different structures. Lookback, reset, and purchase frequency all affect the expected return.
Read more