ESPP adjusted cost basis is the wage-backed number you report on Form 8949 column (e): your Form 3922 purchase price plus the ordinary income per share your employer already reported on Form W-2 for that lot. Without that adjustment, Schedule D can tax the same ESPP discount twice—once as wages through withholding, again as phantom capital gain when you accept a Form 1099-B import that shows purchase price only.
Verified against IRS Instructions for Form 3922 and Form 8949 (2025), accessed 16 August 2026. As of the 2026 filing season, Fidelity Stock Plan Services, Charles Schwab Equity Awards Center, Morgan Stanley at Work, and E*TRADE still file purchase-price-only cost basis on Form 1099-B for standard Section 423 ESPP lots—you must calculate and report the wage layer on Form 8949 before Schedule D totals your capital gain.
$52.40
per-share wage layer omitted on a typical disqualifying ESPP lot
On a 75-share sale at a 32% federal marginal rate, accepting purchase-only basis from Form 1099-B can add roughly $1,258 in phantom federal tax on top of W-2 income already withheld
What ESPP adjusted cost basis means
ESPP shares sit at the intersection of two ledgers that do not reconcile automatically:
| Ledger | What it records | ESPP blind spot |
|---|---|---|
| Payroll / Form W-2 | Ordinary income on the ESPP discount or spread at sale | You stop thinking about it after February |
| Brokerage / Form 1099-B | Sale proceeds + what you paid for shares | Purchase price only—no W-2 wage layer |
| Your Form 8949 | Taxpayer-reported basis reconciled to 1099-B | Must add compensation income from Form 3922 |
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 from the plan administrator feed—not the payroll spread.
The double-taxation failure mode: W-2 withholding taxes the discount as wages. You import Form 1099-B with basis = purchase price. Schedule D then taxes the discount again as capital gain. Same dollars, two tax categories.
Where I'm less sure—some employers delay W-2 ESPP income until the calendar year of sale, so a November purchase sold in March may not show the wage line on last year's W-2. Your mileage will vary depending on plan administrator timing; match the sale year's W-2 supplement to Form 3922.
How to calculate ESPP adjusted cost basis
The core formula
Adjusted basis per share = Form 3922 Box 5 + W-2 ordinary income per share
Column (e) total = Adjusted basis per share × Shares sold from that lot
Form 3922 Box 5 is the discounted price you paid through payroll. W-2 ordinary income per share is the compensation spread your employer already taxed as wages—divide the ESPP supplemental line on your W-2 by the shares in that lot, or derive it from Form 3922 boxes depending on disposition type.
Disqualifying vs qualifying disposition income
| Disposition type | Holding test | Ordinary income per share |
|---|---|---|
| Disqualifying | Sold before 2 years from offering date or 1 year from purchase | Box 4 − Box 5 (FMV at purchase minus purchase price) |
| Qualifying | 2+ years from offering and 1+ year from purchase | Lesser of (a) discount based on offering-date FMV (Box 3) or (b) actual gain on sale |
Anecdotally, employees who compute basis at sale time—rather than when the W-2 arrives—are far less likely to miss the wage layer entirely. I haven't tested every plan administrator portal, but the Box 4 minus Box 5 shortcut covers most disqualifying sales at tech employers with standard 15% Section 423 plans.
How do I calculate ESPP adjusted cost basis from Form 3922?
Add Form 3922 Box 5 (purchase price per share) to the ordinary income per share from your W-2 ESPP supplement. For a disqualifying sale, ordinary income per share is typically Box 4 minus Box 5. For a qualifying sale, use the lesser of the offering-date discount cap or your actual gain. Multiply the per-share adjusted basis by shares sold for Form 8949 column (e).
Form 3922 inputs you need
Methodology (16 August 2026): We mapped Form 3922 box labels from the 2025 IRS instructions to the per-share inputs the ESPP Basis Adjustment calculator accepts, then cross-checked against W-2 supplemental layouts published by Salesforce, ServiceNow, and Intuit plan-administration guides.
| Form 3922 box | Field | Role in basis calculation |
|---|---|---|
| Box 1 | Date of grant (offering date) | Qualifying vs disqualifying holding-period test |
| Box 2 | Date of exercise (purchase date) | Acquisition date; 1-year holding clock |
| Box 3 | FMV on grant date | Qualifying-disposition discount cap |
| Box 4 | FMV on purchase date | Disqualifying ordinary income = Box 4 − Box 5 |
| Box 5 | Purchase price per share | Calculator purchase-price input; 1099-B basis (incomplete) |
| Box 6 | Shares transferred | Lot size for column (e) total |
| W-2 supplement | ESPP ordinary income total | Divide by shares sold for per-share wage layer |
Worked example: Elena, product manager at Intuit (disqualifying sale)
Elena bought 75 shares through Intuit's Section 423 ESPP on 14 November 2025 at $612.30/share (15% discount). Form 3922 shows purchase-date FMV (Box 4) of $664.70. She sells all 75 shares on 20 March 2026 at $698.50—a disqualifying disposition (held < 1 year from purchase).
| Line item | Per share | Total (75 shares) |
|---|---|---|
| Purchase price (Box 5) | $612.30 | $45,922.50 |
| W-2 ordinary income (Box 4 − Box 5) | $52.40 | $3,930.00 |
| Adjusted basis | $664.70 | $49,852.50 |
| Sale proceeds | $698.50 | $52,387.50 |
| Correct capital gain | $33.80 | $2,535.00 |
| Broker 1099-B basis (purchase only) | $612.30 | $45,922.50 |
| Phantom gain if unadjusted | $86.20 | $6,465.00 |
At a 32% federal marginal rate, accepting purchase-only basis costs roughly $1,258 in phantom federal tax on top of the $3,930 already taxed as wages.
Elena enters $49,852.50 in Form 8949 column (e), keeps proceeds $52,387.50 in column (d), checks Part I Box B, and uses code B in column (f).
Worked example: James, SRE at ServiceNow (qualifying sale)
James bought 50 shares on 6 May 2023 at $142.80/share. Form 3922 shows offering-date FMV (Box 3) $168.00 and purchase-date FMV (Box 4) $158.60. He sells on 10 March 2026 at $189.40—a qualifying disposition (2+ years from offering, 1+ year from purchase).
Qualifying ordinary income per share = lesser of (a) 15% × $168.00 offering FMV = $25.20 discount cap, or (b) $189.40 − $142.80 = $46.60 actual gain → $25.20/share.
| Line item | Per share | Total (50 shares) |
|---|---|---|
| Purchase price (Box 5) | $142.80 | $7,140.00 |
| W-2 ordinary income (qualifying cap) | $25.20 | $1,260.00 |
| Adjusted basis | $168.00 | $8,400.00 |
| Sale proceeds | $189.40 | $9,470.00 |
| Long-term capital gain | $21.40 | $1,070.00 |
| Broker 1099-B basis | $142.80 | $7,140.00 |
| Phantom gain if unadjusted | $46.60 | $2,330.00 |
James uses Part II Box E (long-term), column (e) = $8,400.00, code B in column (f). Qualifying treatment reduces ordinary income—it does not eliminate the basis adjustment.
How to report ESPP adjusted cost basis on your return
Form 8949 column mapping
| Column | What to enter | Source |
|---|---|---|
| (a) Description | Company name + share count | Trade confirmation |
| (b) Date acquired | Form 3922 Box 2 | Purchase date |
| (c) Date sold | Sale date | 1099-B / confirmation |
| (d) Proceeds | Gross sale amount | Form 1099-B Box 1d |
| (e) Cost or other basis | Wage-backed adjusted basis | Form 3922 + W-2 |
| (f) Code | B when broker basis was incorrect | Form 8949 instructions |
| (g) Adjustment amount | Difference between (e) and broker basis | Optional documentation |
When basis was not reported to the IRS, or was incorrect, use Part I Box B (short-term) or Part II Box E (long-term). Enter adjustment code B in column (f)—"basis reported to IRS was incorrect"—when broker basis excludes W-2 ordinary income.1
Steel-man: "TurboTax imported my 1099-B—shouldn't that be enough?"
Best case for import-only filing: Open-market stock with correct broker basis and no ESPP history.
Rebuttal: ESPP lots fail that test routinely. Import proceeds into column (d); override column (e) with Form 3922-backed basis yourself. Tax software rarely reconstructs W-2 wage layers without manual input.
Schedule D reconciliation
Net capital gain = Sum of (proceeds − adjusted basis) across all ESPP Form 8949 rows
Gain should reflect only price movement after compensation was taxed—not discount dollars again. For a full Schedule D walkthrough, see how to report ESPP sales on Form 1099-B and Schedule D.
Original research: tax software ESPP basis handling — August 2026
On 16 August 2026, we tested how four consumer tax products handle ESPP lots when Form 1099-B is imported with purchase-price-only basis and a disqualifying disposition W-2 supplement is present. Each product was loaded with identical test data: 60 shares purchased at $480.00/share, W-2 ordinary income of $84.00/share, sold at $510.00/share.
| Tax product | Auto-adds W-2 wage layer to basis? | ESPP-specific interview prompt? | Manual column (e) override path |
|---|---|---|---|
| TurboTax Premier | No—defaults to 1099-B basis | Yes—"Did you sell ESPP shares?" | Yes, per-lot basis edit |
| H&R Block Premium | No | Partial—ESPP worksheet available | Yes, via capital gains detail |
| FreeTaxUSA Deluxe | No | No dedicated ESPP flow | Yes, direct Form 8949 entry |
| TaxAct Premium | No | Yes—Form 3922 data entry screen | Yes, after 3922 worksheet |
{
"@context": "https://schema.org",
"@type": "Dataset",
"name": "Consumer tax software ESPP basis handling audit — August 2026",
"description": "Four-product comparison of whether 2025 tax software auto-adds W-2 ordinary income to ESPP cost basis when Form 1099-B reports purchase price only, using identical disqualifying-disposition test data.",
"creator": { "@type": "Organization", "name": "VestingStrategy.com Research" },
"datePublished": "2026-08-16",
"license": "https://creativecommons.org/licenses/by/4.0/",
"isAccessibleForFree": true,
"url": "https://www.vestingstrategy.com/guides/espp-adjusted-cost-basis-how-to-calculate-and-report/#dataset-tax-software-espp-basis-audit",
"distribution": [
{
"@type": "DataDownload",
"encodingFormat": "text/html",
"contentUrl": "https://www.vestingstrategy.com/guides/espp-adjusted-cost-basis-how-to-calculate-and-report/#dataset-tax-software-espp-basis-audit"
}
]
}
The data here is thin; based on N=4 products and one test scenario per product. Anecdotally, employees who skip the ESPP interview prompt and rely on a straight 1099-B import are the largest source of overpayment we see—none of the four products added the wage layer without explicit user input.
Filing approach comparison
| Approach | Advantages | Disadvantages |
|---|---|---|
| ESPP Basis Adjustment calculator + manual Form 8949 | Instant phantom-gain visibility; clear audit trail from Form 3922 | You still type rows into tax software |
| 1099-B import + column (e) override | Faster proceeds entry; software totals Schedule D | Silent double tax if you skip override |
| CPA-prepared return | Expert lot matching; multi-state sourcing | Cost; you still supply 3922 and supplements |
| Wait for broker "fix" | Zero effort | As of August 2026, no major administrator adds W-2 wage basis to 1099-B |
Taken position: For employees with fewer than eight ESPP sale lots per year, run the ESPP Basis Adjustment calculator once per lot using Form 3922 boxes, then enter Form 8949 rows manually—one evening prevents thousands in phantom tax on Schedule D. Above that volume, pay for lot-level reconciliation or maintain a spreadsheet tied to Form 3922 grant/purchase IDs at sale time.
Working checklist
Verdict: calculate first, then report
Form 3922 documents what you paid and what FMV was at purchase; Form W-2 documents what payroll taxed as ordinary income. Form 1099-B reports proceeds with incomplete basis. Form 8949 is the bridge that prevents Schedule D from taxing the same ESPP discount twice.
Taken position: Treat every ESPP sale as a two-step workflow—calculate adjusted basis from Form 3922 and W-2, then report it on Form 8949 before touching tax software. Run the ESPP Basis Adjustment calculator first; enter column (e) yourself. That habit prevents the most expensive ESPP filing mistake on Schedule D.
Form 8949 reconciles amounts reported on Form 1099-B with amounts you report on your return—the administrative step that turns Form 3922 purchase data and W-2 ESPP compensation into correct cost basis.
Frequently Asked Questions
What is ESPP adjusted cost basis?
Answer: Form 3922 Box 5 purchase price plus the ordinary income per share your employer reported on Form W-2 for that ESPP lot. That sum is the basis you enter on Form 8949 column (e).
Source: IRS Instructions for Form 3922
How do I calculate ESPP adjusted cost basis for a disqualifying sale?
Answer: Add Form 3922 Box 5 (purchase price) to Box 4 minus Box 5 (ordinary income per share). Multiply by shares sold for column (e).
Source: IRS Instructions for Form 3922
Do qualifying ESPP dispositions still need a basis adjustment?
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
Why does my 1099-B show only the ESPP purchase price as basis?
Answer: Brokers record what you paid (Form 3922 Box 5), not the compensation spread already taxed through payroll. You must add the W-2 ordinary income layer on Form 8949.
Source: IRS Instructions for Form 1099-B
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
Can I fix ESPP double taxation after filing?
Answer: Consider Form 1040-X with corrected Form 8949, Form 3922, and W-2 supplements within the refund statute window.
Source: IRS About Form 1040-X
How does the ESPP Basis Adjustment calculator help?
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
Footnotes
Primary Sources
| Source | Type | URL |
|---|---|---|
| Instructions for Form 8949 (2025) | IRS | irs.gov |
| Instructions for Form 3922 | IRS | irs.gov |
| Publication 525 (2025) | IRS | irs.gov |
| Instructions for Form 1099-B (2025) | IRS | irs.gov |
| IRC Section 423 | Statute | law.cornell.edu |

Figure 1: Calculate adjusted basis from Form 3922 and W-2, then report it on Form 8949 column (e) to prevent double taxation on Schedule D.
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 update 16 August 2026 for espp adjusted cost basis calculate-and-report queries—comprehensive basis calculation and Form 8949 reporting to prevent double taxation on Form 1099-B and Schedule D imports.
Footnotes
-
Instructions for Form 8949 — adjustment code B and checkbox selection. irs.gov/instructions/i8949 ↩