You sold some ESPP shares. The company already took care of the withholding — the discount showed up as compensation on your W-2, tax was taken out with your regular payroll, everything felt handled. Then TurboTax imports your 1099-B and calculates a $14,000 capital gain on a sale where you cleared maybe $2,500 of actual profit.
You're being taxed on the discount twice: once through your W-2, once as a capital gain. And TurboTax isn't wrong, technically — it's using the cost basis your broker reported, which is exactly what the IRS requires. The problem is that the reported basis is intentionally incomplete. Here's why, and how to apply the adjustment so you're only taxed once on the portion of income that's actually income.
The IRS Rule That Breaks ESPP Cost Basis
Before 2014, brokers reported a full cost basis for ESPP sales that included the discount amount (the portion your company let you buy the shares cheaper than market). That was clean — but sometimes led to incorrect reporting when the holding periods weren't straightforward.
The IRS changed the rule in 2014. Under current regulations, brokers can only include in cost basis the amount the employee actually paid out of pocket — not the discount. The discount is compensation income, and it already appears in Box 1 of your W-2, which means it's already been taxed once.
The problem: if TurboTax computes capital gain as proceeds minus the broker-reported basis, the gain includes the entire discount. Tax gets applied to the same dollars a second time. On a typical ESPP purchase with a 15% discount plus some appreciation, this can double your capital gain versus the actual economic reality.
Qualifying vs Disqualifying Disposition
Before you can compute the adjustment, you need to know which kind of sale you made. The holding period matters:
- Qualifying disposition: you held the shares for more than two years from the offering date AND more than one year from the purchase date. Tax treatment is mostly long-term capital gains, with a portion of the discount treated as ordinary income.
- Disqualifying disposition: you sold before hitting one or both of those holding periods. The entire discount (lesser of discount at purchase or actual gain) is ordinary income, already included on your W-2.
For disqualifying dispositions — which are the most common, especially if you sold immediately at purchase — the adjustment is straightforward: add the discount amount from your W-2 to the broker-reported cost basis.
For qualifying dispositions, the math is more subtle because only part of the discount is ordinary income and the rest is long-term capital gain. Your employer's ESPP administrator (E*TRADE, Fidelity, Schwab, Morgan Stanley) should issue a supplemental statement that spells out the correct adjusted basis for each lot.
Finding the Adjusted Cost Basis
Three documents carry the adjusted basis information:
1. Form 3922. Your employer issues this IRS form each year you participate in an ESPP. It reports the offering date, purchase date, FMV at each, and the discounted purchase price. Everything you need to compute the correct basis is here.
2. The broker's ESPP supplement. Like with RSUs, the major stock plan administrators issue a supplemental tax document alongside the 1099-B. At Fidelity it's the Stock Plan Services supplement. At E*TRADE / Morgan Stanley it's the Stock Plan Transactions Supplement. At Schwab it's the Equity Awards Center supplement. Download it — the adjusted basis is pre-calculated in it.
3. Your W-2 Box 14. Some employers list the ESPP discount amount in Box 14 with a label like "ESPP DISQ" or "ESPP". That's the portion already taxed as ordinary income — add it to the broker-reported basis to get the adjusted basis.
Entering the Adjustment Without a Basis Mismatch Warning
Here's where many people get it wrong. TurboTax has a "cost basis is incorrect" checkbox, which is the right thing to check — but then it offers multiple adjustment reasons, and only one doesn't trigger a review flag or IRS mismatch concern.
The correct path:
- After the import (or during manual entry), click Edit on the ESPP transaction
- On the detail screen, check "The cost basis is incorrect or missing on my 1099-B"
- Choose "I know my cost basis and need to make an adjustment" (not "I need to enter adjustments")
- Enter the adjusted cost basis — the full number, including the discount that was in your W-2
- TurboTax applies Code B to Form 8949 column (f) automatically
Do not:
- Modify the proceeds field (this will cause a mismatch with what the broker reported to the IRS)
- Use a separate adjustment row with a negative amount in column (g)
- Enter the discount as an expense elsewhere
The Code B flag is the IRS-blessed way to signal "I'm using a different basis than what the broker reported, and here's why."
The E*TRADE / Morgan Stanley Rounding Bug
A known issue specifically affecting E*TRADE (now E*TRADE from Morgan Stanley) ESPP imports: TurboTax's import sometimes pulls the adjusted basis from the supplement but rounds it differently than the supplement itself, producing a $0.50-$2.00 mismatch per row.
Not a huge deal on its own, but it triggers the "Needs Review" flag on every row. If you see this, either:
- Manually enter the exact adjusted basis from the supplement (overriding the import), or
- Delete the import and re-enter as a CSV from a 1099-B converter
For the broader E*TRADE / Morgan Stanley import issues, see our E*TRADE Morgan Stanley import fix guide.
Worked Example
Say you participated in a 15% discount ESPP. Over a 6-month offering period, the stock opened at $80 and closed at $100. You bought at the discounted price (15% off $80, the lower of the two) = $68/share. You purchased 100 shares for $6,800.
A few weeks later, you sold all 100 shares at $102.
What the broker reports on your 1099-B:
- Proceeds: $10,200
- Cost basis: $6,800 (what you actually paid)
- Capital gain: $3,400
What your W-2 already includes:
- Discount income (disqualifying disposition): FMV at purchase minus what you paid = $100 − $68 = $32/share × 100 = $3,200. That $3,200 is already in Box 1 of your W-2 and already taxed as ordinary income.
The correct adjustment:
- Adjusted cost basis: $6,800 + $3,200 = $10,000
- Correct capital gain: $10,200 − $10,000 = $200
- Not $3,400
Without the adjustment, you'd pay capital gains tax on $3,400 instead of $200 — plus the ordinary income tax on $3,200 that's already baked into your W-2. Double-counted income, double tax.
FAQ
My ESPP supplement shows a different number than Form 3922. Which is right?
The supplement is typically right — it reflects actual executed trades and post-sale computations. Form 3922 is generated at the time of purchase and doesn't update for the sale. If they conflict, reconcile the totals by looking at what's actually in your W-2 Box 1 for the year.
What if I still hold my ESPP shares — I haven't sold yet?
No adjustment needed yet. The discount income only becomes reportable when you sell. Form 3922 gets filed as a record but doesn't create tax owed.
Does this apply to stock options (NSOs and ISOs) too?
The principle is similar (ordinary income on W-2, adjusted basis on 1099-B) but the mechanics differ for each. NSOs are closest to ESPP. ISOs have their own AMT complications. Each needs its own adjustment path.
What if my employer never gave me Form 3922?
Ask payroll or stock administration — it's a required form. Without it, you can still use the broker supplement and W-2 Box 14 amount, but Form 3922 is the official documentation in an audit.
Can TurboTax's "ESPP Step by Step" interview handle this automatically?
Sort of. The guided interview asks for Form 3922 values and computes the adjustment for you. It works for straightforward cases but doesn't handle all the edge cases (partial lots, early dispositions, split lots). Double-check the result against your broker supplement.
Will the IRS flag an ESPP adjustment in an audit?
Not if you've done it correctly with Code B. Keep your Form 3922, broker supplement, and W-2 for the year. Audits involving ESPP adjustments are usually resolved by producing these three documents.
Bottom Line
ESPP double-counting is a built-in feature of the current IRS reporting rules, not a bug. Your broker can't include the discount in the reported cost basis, which means TurboTax's imported gain is intentionally wrong. The five-minute fix is to find your broker supplement or Form 3922, enter the adjusted cost basis in TurboTax with the "cost basis incorrect" flag, and let the software apply Code B automatically.
For a big ESPP year, this adjustment can cut your capital gains tax by thousands. Always apply it before filing.
Got ESPP adjustments mixed in with regular broker activity? Convert your 1099-B free — extract every transaction into a clean CSV, then apply your ESPP and RSU adjustments in TurboTax cleanly without the rounding bugs or import glitches. Works with Schwab, Fidelity, E*TRADE / Morgan Stanley, and more.