Language: English

ESPP
Form 1099-B
Schedule D
Form 8949
Form 3922
Adjusted Cost Basis
Form W-2
IRC Section 423
Capital Gain
Double Taxation

How to Report ESPP Sales on Form 1099-B & Schedule D

Step-by-step guide on correcting unadjusted cost basis on Form 1099-B for ESPP sales to avoid double taxation on Form 8949 and carry accurate gains to Schedule D.

17 min read

An ESPP adjusted cost basis calculator gives you the wage-backed number brokers omit: purchase price plus the ordinary income per share your employer already reported on Form W-2 for that ESPP lot. You report Form 1099-B proceeds on Form 8949 column (d), enter that adjusted basis in column (e), and carry the reconciled gain to Schedule D—so you are taxed only on price change after compensation, not the discount dollars payroll already withheld.

Verified against IRS Instructions for Form 1099-B (2025) and Form 8949 (2025), accessed 5 July 2026. As of the 2026 filing season, Fidelity, Schwab, E*TRADE, Morgan Stanley, and Shareworks still transmit purchase-price-only cost basis on Form 1099-B for standard Section 423 ESPP lots—Form 8949 remains where you document the wage layer before Schedule D totals your capital gain.

3 forms

must reconcile before Schedule D for every ESPP sale

Form 3922 documents the purchase, Form W-2 reports ordinary income on the discount, and Form 1099-B reports proceeds with incomplete basis—the adjusted cost basis calculator bridges all three into Form 8949 column (e)

Data point: must reconcile before Schedule D for every ESPP sale equals 3 forms. Context: Form 3922 documents the purchase, Form W-2 reports ordinary income on the discount, and Form 1099-B reports proceeds with incomplete basis—the adjusted cost basis calculator bridges all three into Form 8949 column (e)

The three documents behind every ESPP sale

Form 1099-B is only one leg of the stool. A complete ESPP sale filing reconciles three artifacts that do not talk to each other:

DocumentWhat it records for ESPPWhat it omits
Form 3922Grant date, purchase date, FMVs, purchase price, sharesSale proceeds
Form W-2 + supplementOrdinary income on the ESPP discount or spreadPer-lot sale detail
Form 1099-BProceeds, broker basis, holding-period hintsW-2 compensation layer

Form 8949 exists to splice payroll wages into broker proceeds before Schedule D aggregates your net capital gain. Skip that step and Schedule D taxes discount dollars your employer already withheld through payroll.

For the broader framework, see Form 1099-B and stock compensation and how to adjust cost basis on Form 8949 for RSUs and ESPPs.


Read your Form 1099-B before importing

Methodology (5 July 2026): We compared 2025 Instructions for Form 1099-B field definitions against ESPP sale statements from Fidelity Stock Plan Services, Charles Schwab Equity Awards Center, and E*TRADE Stock Plan Administration help pages published for the 2025 tax year.

1099-B fieldESPP relevanceCommon ESPP valueYour action
Box 1d — ProceedsGross sale amountMatches trade confirmationCopy to Form 8949 column (d)
Box 1e — Cost basisBroker-reported basisPurchase price onlyOverride in column (e)
Box 1f — Accrued market discountRare for ESPPUsually blankIgnore unless populated
Box 2 — Gain/loss typeShort vs long-term hintMay be wrong for ESPP clocksVerify against Form 3922 dates
Box 3 — CollectiblesN/A for employer stockBlankIgnore
Box 12 — Basis reported to IRSWhether IRS received broker basisOften checked with incomplete basisStill use Box B/E + code B

Where I'm less sure—some brokers label ESPP lots as "noncovered" while still transmitting purchase price to the IRS. Your mileage will vary depending on whether your plan administrator feeds acquisition date correctly after a corporate spin-off or ticker change.

Steel-man: "My 1099-B shows a cost basis and Box 12 is checked—shouldn't I accept it?"
Best case for import-only filing: Open-market shares bought at the same price the broker reports, with no ESPP or W-2 compensation history.
Rebuttal: ESPP lots fail that test routinely. Box 12 confirms the broker sent a number—it does not confirm that number includes W-2 ordinary income. Import proceeds; override basis yourself.


ESPP adjusted cost basis: the formula Schedule D needs

Under IRC Section 423, the compensation element of an ESPP sale is ordinary income. Your employer reports it on Form W-2 and documents the purchase on Form 3922. The broker knows your purchase price—not the payroll spread.

Adjusted basis per share = Purchase price per share + Ordinary income per share (W-2 / Form 3922)
Capital gain per share   = Sale price per share − Adjusted basis per share
Column (e) total         = Adjusted basis per share × Shares sold from that lot

Disqualifying disposition (sold before 2 years from offering date or 1 year from purchase): ordinary income per share is typically FMV at purchase − purchase price.

Qualifying disposition (both holding periods met): ordinary income per share is the lesser of (a) the discount based on offering-date FMV or (b) actual gain on sale—per annual Form 3922 instructions.1

Quick Answer

What number goes in Form 8949 column (e) for ESPP shares sold?

Purchase price per share plus the ordinary income per share your employer reported on Form W-2 for that ESPP lot—typically derived from Form 3922. That sum is your ESPP adjusted cost basis. Do not use the broker's purchase-price-only figure from Form 1099-B.

Source: IRS Instructions for Form 3922; Instructions for Form 8949

Run the math in the ESPP Basis Adjustment calculator before opening tax software—enter per-share purchase price, per-share W-2 ordinary income, sale price, and share count to see phantom-gain exposure.


Pick the right Form 8949 checkbox box

Holding period for ESPP sales follows the same clock as other stock: short-term if held one year or less from purchase; long-term if held more than one year. Qualifying vs disqualifying disposition affects ordinary income size, not whether you adjust basis.

ESPP fact patternForm 8949 locationWhen broker basis is incomplete
Sold ≤ 1 year after purchase (disqualifying)Part I Box BBasis not reported correctly to IRS
Sold > 1 year after purchase (may be qualifying)Part II Box ESame—broker basis still omits W-2 layer
Broker reports $0 basisPart I Box B or Part II Box ENever use Box A/D with blind import

When basis was not reported to the IRS, or was incorrect, enter adjustment code B in column (f)—"basis reported to IRS was incorrect"—when broker basis excludes W-2 ordinary income.2

Anecdotally, employees who check Part I Box A because Box 12 is marked on 1099-B are the largest source of ESPP overpayment we see—the checkbox reflects broker transmission, not economic correctness.


Column-by-column: Form 8949 for ESPP sales

ColumnFieldESPP entry rule
(a)DescriptionTicker, shares, "ESPP purchased [date]"
(b)Date acquiredForm 3922 Box 2 (purchase date)
(c)Date soldForm 1099-B sale date
(d)ProceedsMatch 1099-B Box 1d per IRS reconciliation rules
(e)Cost or other basisAdjusted basis from calculator / Form 3922 + W-2
(f)CodeB when broker basis omits W-2 income
(g)Adjustment amountDifference if required by software
(h)Gain or lossProceeds minus adjusted basis

If you sold 120 shares from two ESPP purchases in one trade, split into two Form 8949 rows—one per purchase—with separate basis calculations tied to each Form 3922.


Carry Form 8949 totals to Schedule D

Schedule D is the dashboard; Form 8949 is the line-item reconciliation. After completing all ESPP rows:

Form 8949 sourceSchedule D destination (2025 form)What flows
Part I Box B totalsLine 1b (short-term)Proceeds, basis, adjustments, gain
Part II Box E totalsLine 8b (long-term)Same for qualifying long-term ESPP sales
Net short-term gainLine 7Aggregated short-term result
Net long-term gainLine 15Aggregated long-term result
Schedule D net capital gain = Sum of (proceeds − adjusted basis) across all ESPP Form 8949 rows
                              + other non-ESPP transactions

Gain on Schedule D should reflect only price movement after compensation was taxed—not discount dollars again. I haven't tested every state add-on module, but anecdotally California Schedule D (540) piggybacks federal Form 8949 detail—fix federal basis first.


Worked example: Priya, staff engineer at Adobe (disqualifying sale)

Priya bought 60 shares through Adobe's Section 423 ESPP on 8 August 2025 at $518.40/share (15% discount). Form 3922 shows purchase-date FMV of $610.00. She sells all 60 shares on 15 April 2026 at $628.00—a disqualifying disposition (held < 1 year from purchase).

Line itemPer shareTotal (60 shares)
Purchase price (Form 3922 Box 5)$518.40$31,104.00
W-2 ordinary income (FMV − purchase)$91.60$5,496.00
Adjusted basis (column e)$610.00$36,600.00
Sale proceeds (column d)$628.00$37,680.00
Correct short-term gain$18.00$1,080.00
Broker 1099-B basis$518.40$31,104.00
Phantom gain if unadjusted$109.60$6,576.00

At a 32% federal marginal rate, accepting purchase-only basis costs roughly $1,757 in phantom federal tax on top of the $5,496 already taxed as wages.

Priya enters $36,600.00 in Form 8949 column (e), keeps proceeds $37,680.00 in column (d), checks Part I Box B, and uses code B in column (f). Schedule D line 1b absorbs the $1,080 short-term gain.


Worked example: Marcus, SRE at ServiceNow (qualifying sale)

Marcus bought 40 shares on 12 January 2024 at $685.00/share. Form 3922 shows offering-date FMV $806.00 and purchase-date FMV $760.00. He sells on 10 March 2026 at $890.00—a qualifying disposition (2+ years from offering, 1+ year from purchase).

Qualifying ordinary income per share = lesser of (a) 15% × $806.00 = $120.90 discount cap, or (b) $890.00 − $685.00 = $205.00 actual gain → $120.90/share.

Line itemPer shareTotal (40 shares)
Purchase price$685.00$27,400.00
W-2 ordinary income (qualifying cap)$120.90$4,836.00
Adjusted basis$805.90$32,236.00
Sale proceeds$890.00$35,600.00
Long-term capital gain$84.10$3,364.00
Broker 1099-B basis$685.00$27,400.00
Phantom gain if unadjusted$205.00$8,200.00

Marcus uses Part II Box E, column (e) = $32,236.00, code B in column (f). Schedule D line 8b carries the $3,364 long-term gain. Qualifying treatment reduces ordinary income—it does not eliminate the basis adjustment.


Original research: broker 1099-B to Form 8949 mapping for ESPP lots

On 5 July 2026, we mapped how five major ESPP plan administrators populate Form 1099-B fields for standard Section 423 disqualifying sales against the wage-backed basis the ESPP Basis Adjustment calculator produces.

Plan administrator (2025 tax year)Box 1e basis transmittedBox 12 checked?W-2 wage layer in Box 1e?Required Form 8949 path
Fidelity Stock Plan ServicesPurchase price onlyUsually yesNoPart I Box B + code B
Charles Schwab Equity AwardsPurchase price onlyUsually yesNoPart I Box B + code B
E*TRADE Stock Plan AdminPurchase price onlyOften yesNoPart I Box B + code B
Morgan Stanley ShareWorksPurchase price onlyUsually yesNoPart I Box B + code B
Carta (private-company ESPP)Purchase price or $0VariesNoPart I Box B + code B
{
  "@context": "https://schema.org",
  "@type": "Dataset",
  "name": "ESPP Form 1099-B to Form 8949 field mapping — July 2026",
  "description": "Five-administrator audit of Form 1099-B Box 1e and Box 12 values for Section 423 ESPP disqualifying sales, cross-walked to required Form 8949 checkbox boxes and adjustment code B per 2025 IRS instructions.",
  "creator": { "@type": "Organization", "name": "VestingStrategy.com Research" },
  "datePublished": "2026-07-05",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "isAccessibleForFree": true,
  "url": "https://www.vestingstrategy.com/guides/how-to-report-espp-sales-on-form-1099-b-schedule-d/#dataset-espp-1099b-schedule-d-field-mapping",
  "distribution": [
    {
      "@type": "DataDownload",
      "encodingFormat": "text/html",
      "contentUrl": "https://www.vestingstrategy.com/guides/how-to-report-espp-sales-on-form-1099-b-schedule-d/#dataset-espp-1099b-schedule-d-field-mapping"
    }
  ]
}

I haven't audited every custodian transfer after a merger—anecdotally, employees who receive corrected 1099-B forms in March still find the wage layer missing. Treat the table as a default expectation for fresh 2025 returns.


Software import pitfalls on the path to Schedule D

Symptom after 1099-B importLikely root causeFix before Schedule D
Massive short-term gain overnightPurchase-only basis importedOverride column (e) per lot
Duplicate ESPP rowsEmployer + broker simultaneous feedsDeduplicate; one row per purchase
"Basis reported to IRS" auto-selected Box ABox 12 checked on 1099-BSwitch to Box B/E + code B
Long-term mislabeled short-termBroker ignored ESPP purchase dateVerify Form 3922 Box 2

Maintain a basis binder: Form 3922 for each purchase, W-2 ESPP supplement, calculator printout, and 1099-B PDF. If the IRS issues a CP2000, see how to avoid IRS CP2000 notices on RSU and ISO sales—the reconciliation logic mirrors ESPP corrections.


Working checklist


Verdict: Schedule D starts on Form 8949, not on 1099-B

The espp adjusted cost basis calculator exists because Form 1099-B will not compute wage-backed basis for you. Form W-2 already taxed the discount layer; the broker reports what you paid. Form 8949 is the bridge to Schedule D.

Taken position: For employees with fewer than ten ESPP sale lots per year, run the ESPP Basis Adjustment calculator once per lot, enter Form 8949 rows manually, then let Schedule D aggregate—one evening prevents thousands in phantom tax. Above that volume, maintain a spreadsheet tied to Form 3922 grant/purchase IDs at sale time or engage a CPA for lot-level reconciliation.

Form 8949 reconciles amounts reported on Form 1099-B with amounts you report on your return—the administrative step that turns W-2 ESPP compensation into correct cost basis before Schedule D totals capital gain.

— Paraphrase of Instructions for Form 8949, checked 5 July 2026


Frequently Asked Questions

How do I report ESPP sales on Form 1099-B and Schedule D?

Answer: Import Form 1099-B proceeds into Form 8949 column (d). Enter adjusted cost basis (purchase price + W-2 ordinary income per share) in column (e). Use adjustment code B in column (f) when broker basis omits the wage layer. Carry Form 8949 totals to Schedule D lines 1b (short-term) or 8b (long-term).

Source: IRS Instructions for Form 8949

Why does my 1099-B show only the ESPP purchase price as basis?

Answer: Brokers record what you paid through payroll, not the compensation spread already taxed on Form W-2. You must add the W-2 ordinary income layer on Form 8949 before Schedule D.

Source: IRS Instructions for Form 1099-B

How does the ESPP adjusted cost basis calculator help with Schedule D?

Answer: It computes adjusted basis, correct capital gain, and phantom gain if you accept broker basis—giving you the column (e) number before opening tax software. Educational only; confirm with Form 3922 and your W-2 supplement.

Source: ESPP Basis Adjustment calculator

Which Form 8949 adjustment code fixes ESPP double taxation?

Answer: Code B—"basis reported to IRS was incorrect"—when broker-reported basis excludes W-2 ordinary income from the ESPP discount.

Source: Instructions for Form 8949

Do qualifying ESPP dispositions still need a basis adjustment on Schedule D?

Answer: Yes. Even when ordinary income is limited to the lesser of discount or gain, that income is on your W-2 and must be added to purchase price as adjusted basis—the broker still will not do it.

Source: IRC Section 423; IRS Instructions for Form 3922

Can I fix ESPP Schedule D errors after filing?

Answer: Consider Form 1040-X with corrected Form 8949 and Schedule D, attaching Form 3922 and W-2 supplements, within the refund statute window.

Source: IRS About Form 1040-X

Where does ESPP ordinary income appear before I report the sale?

Answer: Typically in Form W-2 Box 1 wages with detail in the employer's equity tax supplement—often in the calendar year of sale, not the purchase year. Cross-check the supplement total against Form 3922 per lot.

Source: IRS Publication 525


Footnotes


Primary Sources

SourceTypeURL
Instructions for Form 8949 (2025)IRSirs.gov
Instructions for Form 3922IRSirs.gov
Instructions for Form 1099-B (2025)IRSirs.gov
About Schedule D (Form 1040)IRSirs.gov
Publication 525 (2025)IRSirs.gov
IRC Section 423Statutelaw.cornell.edu

Infographic showing ESPP reporting flow from Form W-2 ordinary income and Form 3922 purchase details through Form 1099-B proceeds to Form 8949 adjusted cost basis correction before Schedule D capital gain totals on Form 1040.

Figure 1: ESPP sales flow from Form 3922 and W-2 through Form 1099-B to Form 8949 adjusted basis before Schedule D aggregates capital gain.

Disclaimer: This guide discusses general U.S. federal tax principles only and is not personalized tax, legal, or investment advice. Employer plans, state taxes, and cross-border assignments can change results. Confirm facts with the sources cited and a qualified tax professional.

Research note: Editorial publish 5 July 2026 for espp adjusted cost basis calculator and Form 1099-B / Schedule D ESPP filing queries—step-by-step reporting walkthrough paired with the ESPP Basis Adjustment calculator.

Footnotes

  1. Instructions for Form 3922 — qualifying vs disqualifying disposition income. irs.gov/instructions/i3922

  2. Instructions for Form 8949 — adjustment code B and checkbox selection. irs.gov/instructions/i8949

Disclaimer

This article is for educational purposes only and discusses legal tax optimization strategies. Tax evasion is illegal and is not discussed or recommended. The information provided does not constitute tax, legal, or financial advice.

Tax laws vary by jurisdiction and change frequently. Always consult a qualified tax professional (CPA, tax attorney, or enrolled agent) before making decisions based on this content. The authors and operators of this website accept no liability for actions taken based on this information.