An employee stock purchase plan is one of the better benefits a company can offer: you buy shares at a discount, often 15%, and frequently at the lower of two prices. The tax side is where people get tripped up. When you sell ESPP shares, part of your profit is ordinary income and part is a capital gain, and the split depends on how long you held the shares. On top of that, the brokerage form most people file from usually shows a cost basis that leaves out income you were already taxed on, which can quietly tax the same income twice.
Here is how ESPP sales are taxed, the reporting trap to watch for, and the decisions worth making before December 31.
How an ESPP purchase works
Most plans run in offering periods. At the end of each purchase period, your payroll contributions buy shares at a discount of up to 15%. Many plans add a lookback, so the discount applies to the lower of the share price on the first day of the offering (the offering date) or the price on the purchase date. You owe no tax when the shares are purchased. The tax comes when you sell, and your employer sends you Form 3922 for each year you buy shares, showing the dates and prices you will need.
Qualifying vs. disqualifying sales
The holding period decides how your profit is split:
- Qualifying disposition. You sold more than two years after the offering date and more than one year after the purchase date. The ordinary-income piece is the smaller of your actual gain or the discount measured at the offering date. Everything above that is long-term capital gain.
- Disqualifying disposition. You sold before meeting both holding periods. The ordinary-income piece is the full spread on the purchase date: the share price that day minus what you paid. Any further gain or loss after the purchase date is a capital gain or loss, short-term or long-term depending on how long you held the shares.
In both cases the ordinary-income piece is taxed like wages, but no Social Security or Medicare tax applies, and employers usually do not withhold income tax on it. That gap can leave you owing at filing time.
An illustration
Suppose the share price was $100 on the offering date and $120 on the purchase date, and your plan has a 15% discount with a lookback. You buy at $85 per share (85% of the lower $100 price) and later sell 100 shares at $150.
- Sold as a disqualifying disposition: $3,500 of ordinary income (the $35 spread on the purchase date times 100 shares) and a $3,000 capital gain ($150 minus your $120 adjusted basis, times 100 shares).
- Sold as a qualifying disposition: $1,500 of ordinary income (the $15 discount at the offering date, which is smaller than your $65 actual gain per share) and a $5,000 long-term capital gain.
Same shares, same sale price, but waiting to qualify moved $2,000 from ordinary income into long-term capital gain, which is taxed at lower rates. Whether waiting is worth it depends on your bracket, the stock and how much of your net worth is already tied to one company.
The 1099-B trap: paying tax twice
This is the most common ESPP mistake we see on returns. Under the reporting rules, your broker generally reports your cost basis on Form 1099-B as the price you actually paid, $85 in the illustration, and leaves out the ordinary income you were already taxed on. That income usually shows up in box 1 of your W-2.
If the return is filed straight from the 1099-B, the $35 per share counts once as wages and again as capital gain. On 100 shares, that is $3,500 of income taxed twice. The fix is an adjustment on Form 8949 that raises your basis to include the ordinary income, using the figures from Form 3922 and your broker’s supplemental statement. Tax software rarely makes this adjustment on its own.
Year-end moves for ESPP shares
- Check your holding dates before you sell. A sale a few weeks later can turn a disqualifying disposition into a qualifying one. Your Form 3922 shows both dates.
- Decide which year the income lands in. Selling in December or in January moves both the ordinary income and the gain between tax years. In a year with a large bonus or RSU vest, January may be better.
- Watch the wash-sale rule. If you sell ESPP shares at a loss within 30 days before or after a new purchase in the plan, the loss can be disallowed for now. Look at your next purchase date before harvesting a loss.
- Cover the tax in advance. Because ESPP income usually has no withholding, a fourth-quarter estimated payment or a larger December withholding can head off an underpayment penalty.
- Mind the 3.8% surtax. The capital-gain piece can add net investment income tax once income is over $250,000 for married couples filing jointly, or $200,000 for single filers.
How we approach it
We start with your Forms 3922 and broker statements and build a lot-by-lot view of your ESPP shares: offering and purchase dates, which lots qualify and when, and the corrected basis for each. Then we run a full-year projection showing the tax on selling now, waiting to qualify, or splitting the sale across two years, alongside your RSUs, bonus and other income. If you also hold RSUs or ISOs, our article on RSUs and ISOs covers those, and our Stock Options & Equity Compensation page explains how we work with equity-compensation clients. We work with clients in every state by video.
Start with a complimentary tax projection
New clients start with a complimentary tax projection and a short conversation with one of our tax planning specialists, who will map your ESPP lots and show the tax on each option before you sell. Book a consultation on our Contact page.
This article is general information about federal tax rules as of 2026. It is not tax advice for your situation; the right answer depends on your facts, your state and your full return.