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)
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:
| Document | What it records for ESPP | What it omits |
|---|---|---|
| Form 3922 | Grant date, purchase date, FMVs, purchase price, shares | Sale proceeds |
| Form W-2 + supplement | Ordinary income on the ESPP discount or spread | Per-lot sale detail |
| Form 1099-B | Proceeds, broker basis, holding-period hints | W-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 field | ESPP relevance | Common ESPP value | Your action |
|---|---|---|---|
| Box 1d — Proceeds | Gross sale amount | Matches trade confirmation | Copy to Form 8949 column (d) |
| Box 1e — Cost basis | Broker-reported basis | Purchase price only | Override in column (e) |
| Box 1f — Accrued market discount | Rare for ESPP | Usually blank | Ignore unless populated |
| Box 2 — Gain/loss type | Short vs long-term hint | May be wrong for ESPP clocks | Verify against Form 3922 dates |
| Box 3 — Collectibles | N/A for employer stock | Blank | Ignore |
| Box 12 — Basis reported to IRS | Whether IRS received broker basis | Often checked with incomplete basis | Still 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
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.
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 pattern | Form 8949 location | When broker basis is incomplete |
|---|---|---|
| Sold ≤ 1 year after purchase (disqualifying) | Part I Box B | Basis not reported correctly to IRS |
| Sold > 1 year after purchase (may be qualifying) | Part II Box E | Same—broker basis still omits W-2 layer |
| Broker reports $0 basis | Part I Box B or Part II Box E | Never 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
| Column | Field | ESPP entry rule |
|---|---|---|
| (a) | Description | Ticker, shares, "ESPP purchased [date]" |
| (b) | Date acquired | Form 3922 Box 2 (purchase date) |
| (c) | Date sold | Form 1099-B sale date |
| (d) | Proceeds | Match 1099-B Box 1d per IRS reconciliation rules |
| (e) | Cost or other basis | Adjusted basis from calculator / Form 3922 + W-2 |
| (f) | Code | B when broker basis omits W-2 income |
| (g) | Adjustment amount | Difference if required by software |
| (h) | Gain or loss | Proceeds 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 source | Schedule D destination (2025 form) | What flows |
|---|---|---|
| Part I Box B totals | Line 1b (short-term) | Proceeds, basis, adjustments, gain |
| Part II Box E totals | Line 8b (long-term) | Same for qualifying long-term ESPP sales |
| Net short-term gain | Line 7 | Aggregated short-term result |
| Net long-term gain | Line 15 | Aggregated 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 item | Per share | Total (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 item | Per share | Total (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 transmitted | Box 12 checked? | W-2 wage layer in Box 1e? | Required Form 8949 path |
|---|---|---|---|---|
| Fidelity Stock Plan Services | Purchase price only | Usually yes | No | Part I Box B + code B |
| Charles Schwab Equity Awards | Purchase price only | Usually yes | No | Part I Box B + code B |
| E*TRADE Stock Plan Admin | Purchase price only | Often yes | No | Part I Box B + code B |
| Morgan Stanley ShareWorks | Purchase price only | Usually yes | No | Part I Box B + code B |
| Carta (private-company ESPP) | Purchase price or $0 | Varies | No | Part 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 import | Likely root cause | Fix before Schedule D |
|---|---|---|
| Massive short-term gain overnight | Purchase-only basis imported | Override column (e) per lot |
| Duplicate ESPP rows | Employer + broker simultaneous feeds | Deduplicate; one row per purchase |
| "Basis reported to IRS" auto-selected Box A | Box 12 checked on 1099-B | Switch to Box B/E + code B |
| Long-term mislabeled short-term | Broker ignored ESPP purchase date | Verify 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.
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
| Source | Type | URL |
|---|---|---|
| Instructions for Form 8949 (2025) | IRS | irs.gov |
| Instructions for Form 3922 | IRS | irs.gov |
| Instructions for Form 1099-B (2025) | IRS | irs.gov |
| About Schedule D (Form 1040) | IRS | irs.gov |
| Publication 525 (2025) | IRS | irs.gov |
| IRC Section 423 | Statute | law.cornell.edu |

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
-
Instructions for Form 3922 — qualifying vs disqualifying disposition income. irs.gov/instructions/i3922 ↩
-
Instructions for Form 8949 — adjustment code B and checkbox selection. irs.gov/instructions/i8949 ↩