An employee stock purchase plan (ESPP) lets you buy company stock through payroll, usually at a discount of up to 15%. Many plans also have a lookback: the price is based on the lower of the stock price at the start of the offering period or on the purchase date. That makes ESPP one of the best benefits in tech, but the tax rules are easy to get wrong.
Nothing is taxed when you buy
For a qualified (Section 423) plan, buying the shares is not a taxable event. The tax depends on when you sell, and how long you held the shares decides how the discount is taxed.
Qualifying vs disqualifying
- Qualifying disposition: you sell more than 2 years after the offering (grant) date and more than 1 year after the purchase date.
- Disqualifying disposition: you sell before meeting both holding periods.
A worked example
Say the stock was $100 at the start of the offering and $150 on the purchase date. With a 15% discount and a lookback, you pay $85 a share. You buy 100 shares and later sell them at $160.
| Sold at $160 | Disqualifying | Qualifying |
|---|---|---|
| Ordinary income | $6,500 | $1,500 |
| Capital gain | $1,000 | $6,000 (long-term) |
Disqualifying: the whole spread on the purchase date ($150 minus $85, times 100 shares) is ordinary income, and it usually appears on your W-2. Anything above $150 is a capital gain.
Qualifying: ordinary income is the lesser of your actual gain ($75 a share) or the discount measured at the offering date (15% of $100, so $15 a share). Everything else is a long-term capital gain, taxed at lower rates.
Is it always worth waiting?
Not always. Holding for a qualifying disposition can lower the tax, but it also means holding a single stock for up to two years. If the price falls, a disqualifying sale can actually produce less ordinary income. Many people sell some shares right away to lock in the discount and hold others. Think about how much of your net worth is already tied to your employer before deciding.
Reporting it correctly
Your company sends Form 3922 for each purchase. When you sell, the broker’s 1099-B often shows only what you paid ($85 in the example) as your basis. The ordinary income you already reported has to be added back on Form 8949, or you pay tax on the discount twice. It is the same problem as RSU cost basis.