ESPP taxes: qualifying vs disqualifying dispositions, the complete guide
How long you hold ESPP shares changes how the discount is taxed, splitting your gain between salary rates and the lower capital-gains rate. This is the whole story: the two clocks, the two formulas, the basis trap that taxes you twice, and the state and AMT wrinkles most people miss.
ESPPs · Taxation
When should you sell your ESPP shares? It depends on whether you want the simple, certain outcome or the tax-optimized one, and most people are better off with the simple one. How long you hold decides how the discount is taxed, splitting your gain between your salary rate and the lower capital-gains rate. This guide is the whole picture: the two clocks that define a qualifying sale, the two formulas that figure the ordinary-income slice, the worst-case for getting that figure wrong, the basis trap that quietly taxes your discount twice, and the state and AMT questions that catch people who thought they were done.
Here is the thread that runs through all of it. The discount is taxable no matter what you do, so the real decision is never “do I owe tax,” it is “which rate, and is the lower rate worth holding a concentrated stock for years to get.” Answer the second question first and the tax falls out of it. Answer it backward, by chasing the tax break, and you can end up worse off than if you had just sold and paid.
The two outcomes
A qualified ESPP has holding-period rules that split every sale into one of two types, and they tax completely differently.
Disqualifying disposition (sold sooner)
You sell before clearing both holding periods. The discount you got is taxed as ordinary income, the same as salary, and any gain on top of that is capital gain. This is the common, simple path: sell soon after purchase, lock the discount, move on. Higher tax, but certain and easy to compute.
Qualifying disposition (held longer)
You sell after clearing both holding periods. Part of the benefit is still ordinary income, but more of the gain becomes long-term capital gain at the lower rate. The tax can be lower, at the cost of holding a concentrated position longer and taking the risk that comes with it.
Two clocks, not one
The qualifying-disposition rule has two separate holding periods, and a sale only qualifies when both have run out at the same time.
- More than two years from the first day of the offering period.
- More than one year from the purchase date.
Both, together. People remember the one-year stock rule from regular investing and stop there. With an ESPP, the two-year offering clock usually controls, because the offering starts well before you ever buy.
The holding-period definitions
A qualifying ESPP disposition requires more than two years from the first day of the offering period and more than one year from the purchase date. Both clocks have to clear together; miss either one and the sale is disqualifying.
Count from the offering start, not the purchase
The long clock begins on the first day of the offering period, which can be six months or more before your purchase date. So you are often holding the shares well past the one-year purchase mark before the two-year clock finally clears. When in doubt, the offering date is the date that matters.
Does hitting the one-year clock alone help at all?
It changes the character of the post-purchase gain, but it does not make the sale qualifying on its own. If you have held more than a year from purchase but not yet two years from the offering start, the sale is still disqualifying: the discount at purchase is ordinary income, while any appreciation after purchase is long-term capital gain. You get the lower rate on the appreciation, not on the discount. Both clocks have to clear for the full qualifying treatment.
The discount is real income
Before the formulas, the thing people miss. When you buy a dollar of stock for 85 cents, that 15-cent gap is value you received, and value you received is taxable. It is not a coupon. It is compensation, the same way a signing bonus is. A qualified Section 423 plan can discount up to 15% of price 2026, and a lookback can make your effective discount larger when the stock rises during the offering period. Either way, the discount you actually captured is the amount in play at tax time. The only thing in your control is which rate it gets taxed at, and that comes down to timing.
Two statutory limits frame every qualified Section 423 plan:
The one number that runs everything: the ordinary-income slice
Every ESPP sale splits into two buckets: a slice taxed as ordinary income at your salary rate, and the rest taxed as capital gain. The ordinary-income slice is the figure you have to compute. It lands on your W-2 in some cases, gets added to your basis in all of them, and decides how much of the deal you actually keep. Get this one number right and everything downstream falls into place, because it is the same number that fixes your cost basis and stops you paying tax twice.
There are two formulas, and which one applies turns on whether your sale is qualifying or disqualifying. Same shares, different math.
The ordinary income is the full spread on the day you bought: the purchase-date market value minus what you actually paid, times your shares. That captures the headline discount and any lookback gain you grabbed, all of it taxed like salary.
This is the bigger ordinary-income number, and for most people who sell soon after each purchase it is the expected one. Whatever the stock did after purchase is a separate capital gain or loss: short-term if you sold within a year of purchase, long-term if you held more than a year, even when the overall sale is still disqualifying on the two-year clock.
The disqualifying formula
The disqualifying ordinary-income amount is the bargain element at purchase: purchase-date fair market value minus the price you paid, times your shares. Any further gain or loss is capital, measured from the purchase date.
The ordinary income shrinks to the lesser of two numbers: your actual gain on the sale, or the discount measured against the price on the first day of the offering period.
The offering-date price is the key. Because the lookback usually prices off a date earlier than your purchase, the discount measured at the offering start is often smaller than the discount measured at purchase. Hold to qualify and part of what would have been ordinary income gets reclassified as long-term capital gain instead, taxed at the lower rate. Everything left over after the ordinary slice is long-term capital gain. That is the reward for waiting, and the reason the calculation flips.
The qualifying formula
The qualifying ordinary income is the lesser of (a) the actual gain on the sale, or (b) the offering-date discount: offering-date fair market value times the plan discount percentage. Everything left over after that ordinary slice is long-term capital gain.
The offering-date trap
In a qualifying sale the ordinary-income piece is capped using the price on the first day of the offering period, not your purchase price. People reach for the purchase-date discount out of habit and overstate their wages. Count from the offering start.
Why the same sale produces two different ordinary-income numbers
Because the tax code rewards the longer hold by moving the lookback gain out of the wages bucket. In a disqualifying sale you pay ordinary tax on the entire discount captured at purchase. In a qualifying sale you only pay ordinary tax up to the offering-date discount, and the lookback gain you captured rides along as capital gain. Same shares, lower-taxed mix, in exchange for years of holding a single stock.
The basis trap that taxes your discount twice
This is the part that quietly costs careful people real money, and it happens on both qualifying and disqualifying sales. The discount you pay ordinary tax on gets added to your cost basis in the shares. But your brokerage often reports a basis on the 1099-B of only what you paid, the discounted price, leaving the already-taxed discount out.
Cost basis is what you paid plus anything already taxed as income on the shares. For ESPP shares that is two pieces: the discounted price you actually paid, and the ordinary-income slice from above. Trust the broker’s low number and a low basis becomes a high gain, so the discount gets taxed a second time: once as ordinary income through your W-2 or at sale, and again as capital gain when you sell.
A basis that is too low is a gain that is too high
This is not a rare glitch. It is the default behavior of most brokers on most ESPP sales, which is why the mistake is so common and so quiet. The numbers look reasonable. They are just wrong in the IRS’s favor. The fix is to raise your basis by the ordinary-income amount already taxed.
The correction is one adjustment on one form.
Pull your Form 3922
Your employer sends it for the year you bought shares. It carries the offering-start price, the purchase-date price, and the price you paid. You need all three.
Find the ordinary income already counted
Use the right formula above for your case, qualifying or disqualifying. That single figure is what the broker leaves out.
Add it to the broker's basis
Your corrected basis is the discounted price you paid plus that ordinary-income amount. This is your true cost basis, and it is what your gain should be measured against.
Report the adjustment on Form 8949
List the broker’s basis, then use the adjustment column and the correct code to add back the ordinary-income piece. Your capital gain shrinks to the correct, smaller number. Keep the worksheet and Form 3922 together.
The mistake compounds if you buy through the plan every period, because the wrong basis can appear on every batch you sell. One habit fixes it: check the basis before you file, every year. For the full reporting walkthrough, see ESPP reporting with Form 3922 and Form 8949.
A worked example: the same shares, two sale dates
Let me run one set of round numbers through both paths so you can see exactly where the money goes. These are example figures, not a claim about any real stock.
Say your plan has a 15% discount and a lookback, so the price is set off the lower of the offering-date and purchase-date prices.
- Offering-date price: $20
- Purchase-date price: $30
- Your price with the lookback and discount: 85% of the lower $20, so $17 per share
- You buy 100 shares for $1,700
- You later sell all 100 at $40, for $4,000
Your total economic gain is the same either way: $4,000 minus $1,700, so $2,300. What changes is how much of that $2,300 is taxed as ordinary income versus the lower capital-gains rate.
You sold before clearing the clocks. The ordinary income is the discount measured at purchase: ($30 minus $17) times 100, so $1,300 of ordinary income, taxed at your regular rate.
Your basis becomes what you paid plus that income: $1,700 plus $1,300, so $3,000. The rest of the gain is capital gain: $4,000 minus $3,000, so $1,000 of capital gain. Sold within a year of purchase, that piece is short-term, taxed at your ordinary rate too. Nearly all of the $2,300 ends up at your salary rate.
You held past both clocks. The ordinary income is the lesser of the actual gain or the offering-date discount. The offering-date discount is 15% of $20, so $3 per share, or $300 of ordinary income across 100 shares. Far less than the $1,300 disqualifying figure.
Your basis is $1,700 plus $300, so $2,000. The remaining gain is capital gain: $4,000 minus $2,000, so $2,000 of long-term capital gain, taxed at the lower long-term rate. Only $300 sits at your salary rate.
Lower tax is not the same as more money
The qualifying path wins on tax in this example because the stock rose. The hidden price is that you had to hold a concentrated position for the full clock to get there. If the stock had fallen instead, the tax saving would not have covered the loss. Run the position-size question before you assume holding pays.
In both paths the ordinary-income piece is already taxed, so it belongs in your basis. The broker usually reports only the price you paid, which leaves that income out and inflates your gain. Correct it on Form 8949 or you pay tax on the discount twice.
The long-term capital gain a qualifying sale unlocks is taxed at the 0, 15, or 20 percent rate, set by where your total taxable income lands:
The rate steps up at each dollar threshold. Long-term gains stack on top of your ordinary income to decide which band they fall in. Band widths are illustrative, not to scale.
Does an ESPP affect your AMT?
Almost never, and that is the good news that surprises people who have heard the AMT horror stories from option holders. A qualified ESPP does not create the kind of hidden preference item that exercising ISOs does, so for most people an ESPP and the alternative minimum tax never meet.
The AMT is a parallel tax system that adds back certain items the regular system leaves out, then taxes the result if the parallel number comes out higher. The classic trap is the ISO bargain element: exercise and hold incentive stock options and the spread is invisible to your regular tax but fully counted by the AMT, so you can owe real cash on a paper gain you never sold. That is the AMT trap that catches option holders.
An ESPP works differently. The discount you receive is treated as ordinary income, and ordinary income already sits in your regular taxable income. The AMT starts from that same income, so there is no separate preference item bolted on and nothing extra for it to grab. ISOs are loud because the bargain element hides from the regular tax and only the AMT sees it. The ESPP has no such hiding place.
The one indirect way it can matter
An ESPP will not create an AMT adjustment on its own. It can still nudge your overall tax picture, because a big ordinary-income year from any source raises your income, and a higher income interacts with the AMT exemption and its phase-out. So a large ESPP gain stacked on a year where you also exercised ISOs is part of the total picture, even though the ESPP piece itself is not a preference item. The work there is the ISO exercise and your overall income, not the ESPP discount.
If your equity is all ESPP, you can mostly forget the AMT exists. Where it bites is ISOs, so if you hold both, look at the option side. For the full mechanism, see how exercising ISOs triggers the AMT.
State taxes: the two halves can land in two states
Can a state you no longer live in still tax your ESPP? For part of it, yes. An ESPP sale has the same two pieces everywhere, and states treat them differently. The ordinary-income slice behaves like compensation. High-tax states generally source compensation to the days you worked in-state while you earned it, and they will tax a former resident on that in-state portion even after the move. The capital-gain slice is usually an intangible, sourced to your state of residence when you sell. Leave a high-tax state before selling and the gain often follows you out. The compensation slice may not.
Leaving does not always cut the cord
Moving to a no-tax state before you sell can spare you state tax on the capital-gains piece. It will not necessarily spare you on the ordinary-income piece, because some states reach back to the in-state workdays during the period you were contributing. California and New York both do this: California allocates the compensation slice by your California workdays over the offering and holding period (a reasonable workday split under its rules) 2026, and New York uses its own New York workday fraction 2026. Either state can tax a former resident on that allocated share once the income is recognized federally, even after the capital gain has followed you out. Run both halves separately, by state.
State sourcing turns on workdays, residency dates, and each state’s own rules, so the answer is genuinely fact-specific. A few moves keep you out of trouble: keep your offering dates, purchase dates, and where you were working for each; separate the two pieces before you file, because they can owe to different states; and if you moved mid-offering, expect part of the income to belong to the old state and part to the new one. If you have moved or are about to and a real ESPP sale is in play, this is worth getting right the first time.
The trade nobody names
Everything above is mechanics. Here is the judgment the mechanics serve. The qualifying path saves tax only if the stock cooperates while you hold it for years. You are trading a known tax saving against an unknown stock risk, in a single company you are already exposed to through your job. The tax saving is real. So is the chance the stock erases it.
The tax tail wagging the dog
I have watched people hold for the qualifying break, ride the stock down, and end up worse off than if they had sold at purchase and paid ordinary tax on a clean discount. The lower rate on a smaller pile is no win. With an ESPP the dog is years of single-stock exposure, and the market does not care that you were holding for a better tax rate. This is the principle I keep coming back to: I do not manage money for people who can live forever.
What this means for you
For most people, selling shortly after purchase is the clean default. You capture the discount, pay ordinary tax on it, fix the basis so you do not pay twice, and diversify before the position grows. Hold for a qualifying disposition only when you have decided the position size on purpose and can carry the risk, not because a tax rate told you to. If you would not buy that much of your employer’s stock at full price today, the qualifying clock is not a reason to keep it.
The whole job comes down to a sequence: know both clocks, compute the one ordinary-income number, correct the basis on Form 8949, and check your state. For why the discount is worth capturing in the first place, see how an ESPP works. For where every number goes on your return, see ESPP reporting with Form 3922 and Form 8949. And if your ESPP sale is large enough to move your tax year, talk it through with me before you sell.
More in ESPPs
Still have questions about your equity?
Join the community to ask directly, or take the two-minute fit check to see if a planning call makes sense.