Skip to content
Equity Compensation
Browse topics
Guide Updated 2026

Reporting NSOs: your W-2, your 1099-B, and the basis fix

The spread lands in your wages on the W-2, the sale shows up separately on the 1099-B, and the basis is the link between them. Read them as one story, fix the basis on Form 8949, and you pay tax once instead of twice.

NSOs · Forms & reporting

Why do NSOs show up on two different tax forms? Because two different things happened: you earned compensation when you exercised, and you sold property when you sold. The compensation lands on your W-2. The sale lands on your 1099-B. Read them as one story and the tax makes sense. Read them apart and you can end up paying twice on the same dollars.

This is the complete reporting guide for non-qualified stock options. First the W-2 side and where the spread hides in your wages, then the 1099-B side and the basis trap that links the two forms, then the exact column-by-column fix on Form 8949 that kills the double tax. After that a full worked example with every number tied out, and a pre-exercise checklist you run before you ever click the button. Read it in order the first time. Come back to the Form 8949 section or the checklist when you are actually filing or about to exercise.

The W-2 side: the spread is wages

When you exercise an NSO, the bargain element, the spread between the share price and your strike, is ordinary income. For an employee, your company runs it through payroll. It gets added into your total wages, and income tax plus Social Security and Medicare are withheld, just like a bonus.

The spread is baked into your total wages in Box 1, so it is already in the big number at the top of the form. Many employers also call it out separately in Box 14 with a code like “NQSO” or “NQ” so you can see exactly how much of your wages came from the exercise. Box 14 is informational; the income is already counted in Box 1, so do not add it again.

If you are a contractor or advisor, not an employee, there is no W-2 and no withholding. The spread shows up on a 1099-NEC instead, and the entire tax bill waits for you at filing.

The 1099-B side: the sale is a capital transaction

The 1099-B comes from your broker and reports the sale of the shares. This form does not know anything about the income you already recognized. It only sees that you sold stock for some amount of money. Your gain or loss is the sale price minus your cost basis.

Caution

Here is the trap that links the two forms. Your true basis is the value at exercise, the strike plus the spread that already hit your W-2. But the 1099-B often reports only the strike, or sometimes $0. If you file it as-is, you pay tax again on the spread. This is the most common NSO mistake there is, and the rest of this guide is built to stop it. The conceptual “why” lives in how NSOs are taxed; the fix is below.

Your true basis is the exercise-day value, strike plus the spread you were already taxed on. Strike plus spread always equals the exercise-day price, so if your reported basis is lower than the exercise-day price, it is wrong and you have the error to fix.

Reading both forms together

Confirm the spread on the W-2

Check that the bargain element from your exercise is in your wages. If your employer used Box 14, it shows the amount; remember it is already inside Box 1, not on top of it.

Pull the broker supplemental statement

Alongside the 1099-B, brokers usually send a supplemental statement with the corrected, higher basis. That is the number you actually want.

Check the 1099-B basis

If the basis equals only your strike, it is too low. Plan to adjust it so your gain reflects only the move after exercise.

Report the sale, adjusted

Carry the sale to Form 8949 and Schedule D, fixing the basis to the true exercise-date value. The income stays on the W-2; the capital gain stays on the 1099-B; nothing gets counted twice.

Two forms, two issuers, two kinds of income, and no arrow connecting them. The W-2 comes from payroll. The 1099-B comes from the broker. Neither one says “by the way, the spread is in both places, do not double-count it.” Tax software imports each form cleanly and still produces the wrong answer if you skip the basis fix. The only defense is knowing what each form is for.

The column-by-column fix on Form 8949

Where exactly do you fix a wrong NSO basis? On Form 8949, in the adjustment columns, with the right code. You do not call the broker and argue, and you do not overwrite the 1099-B. You report what the broker reported, then you correct it on the form the IRS built for exactly this. Get the columns right and the double tax disappears.

First, get three things in front of you: the 1099-B (look at the reported basis), the broker’s supplemental statement (it usually carries the corrected, higher basis you actually want), and your exercise confirmation (your backup for the spread that ran through your W-2, in case anyone ever asks where the corrected basis came from).

Report the sale as the broker did

Enter the proceeds and the broker’s reported basis on Form 8949 in the normal columns. Start from their numbers, exactly as shown, so the form ties back to the 1099-B the IRS already received.

Flag the basis as incorrect in the adjustment-code column

Report it following the current year’s instructions: there is a column for the adjustment code and a code that flags the reported basis as incorrect. That code tells the IRS you are fixing the basis on purpose, not making an error of your own.

Put the correction in the adjustment-amount column

The adjustment is a negative number equal to the basis the broker left out, the spread already taxed as wages. It reduces your gain by exactly the spread, so you stop paying capital gains tax on income you already paid ordinary tax on.

Let the corrected gain flow to Schedule D

The adjusted gain or loss carries from Form 8949 to Schedule D. Now the W-2 holds the ordinary income, the 8949 holds only the real capital gain, and nothing is counted twice.

Caution

The adjustment reduces your gain, so it is entered as a negative figure in the adjustment column. Putting it in as a positive number does the opposite of what you want, raising your gain and the tax. Negative adjustment, lower gain. Check the sign before you file.

Form mechanics shift year to year

The Form 8949 column layout, the adjustment-code letters, and how they map to Schedule D are procedural and can change from one year to the next. Report it following the current year’s instructions: there is a column to adjust the basis and a code for the adjustment. Confirm the exact column and code in the instructions for the tax year you are filing.

What if the basis shows $0 instead of the strike?

Some brokers report $0 basis rather than just the strike. The fix is the same, the adjustment is bigger. Your correction has to add back the entire exercise-day value, both the strike you paid and the spread, so the gain reflects only the move since exercise.

Tax software usually has a checkbox for “the basis on my 1099-B is wrong” that walks you to the same place. Import the 1099-B, then use that flag to enter the corrected basis. The software fills the code and the adjustment for you, but it will not catch the error on its own, so you have to know to trigger it.

A full worked example, every number tied out

Want to see the whole NSO tax story in one set of numbers? Let us run a single exercise from start to finish, so every line ties out and nothing gets taxed twice. One grant, one exercise, one sale.

The grant: 2,000 NSOs, $5 strike. The stock is worth $30 the day you exercise, and you sell two years later at $50.

Step 1: Exercise. The spread becomes wages.

You pay the strike

$5 times 2,000 is $10,000, the cash that leaves your account to buy the shares.

The spread is ordinary income

($30 minus $5) times 2,000 is $50,000. That bargain element lands on your W-2 as wages this year, taxed like salary.

Step 2: Withholding. The flat rate falls short.

Your employer withholds the $50,000 spread at the flat supplemental rate. For a high earner, that is below your real marginal rate, so the withheld amount will not cover the tax.

2026 withholding rate

At the flat 22% supplemental rate 2026, withholding on the $50,000 spread is $11,000. If your real marginal rate is 35%, the actual federal income tax on the spread is $17,500, so you are short about $6,500 before payroll tax and state. State withholding stacks on top: a California exercise withholds another 10.23% 2026 on the spread, and a New York one 11.70% 2026, plus 4.25% 2026 inside New York City. Confirm your own marginal rate before relying on the gap.

Payroll tax applies too, since the spread is wages. Set the shortfall aside the day you exercise so the underwithholding does not become a penalty.

Step 3: Basis. This is where money gets lost.

Your cost basis in the shares is the full value at exercise: strike plus the spread you already paid tax on. $10,000 plus $50,000 is $60,000, which is just $30 a share, the exercise-day price.

Caution

Your broker will likely report the basis as only the $10,000 strike, or as $0. If you file it that way, the sale below looks like a $90,000 gain instead of the real $40,000. You would pay capital gains tax on the $50,000 spread a second time. The fix is the Form 8949 adjustment above, and it is entirely on you to make.

Step 4: Sale. Only the move after exercise is a capital gain.

Proceeds

$50 times 2,000 is $100,000 from the sale.

Gain over the correct basis

$100,000 minus $60,000 is $40,000. That is the only capital gain, because the first $25-a-share move was already taxed as wages at exercise.

Long-term, because you held over a year

You held more than a year past exercise, so the $40,000 is a long-term capital gain at the lower rate, not your ordinary rate.

2026 long-term rates

For 2026, long-term capital gains are taxed at 0%, 15%, or 20% by taxable-income breakpoint. Single filers pay 0% up to $49,450 2026, 15% up to $545,500 2026, and 20% above; married filing jointly pay 0% up to $98,900 2026, 15% up to $613,700 2026, and 20% above. A 3.8% net investment income tax 2026 rides on top once your modified AGI passes $250,000 2026 married filing jointly or $200,000 2026 single. Which rate applies to your $40,000 depends on your total income that year.

Tie it out

You earned $50,000 of ordinary income at exercise and $40,000 of long-term capital gain at sale. Two separate taxes on two separate things, $90,000 of total economic gain, taxed once each. The only way this goes wrong is the basis: report it as the strike alone and you pay on the spread twice. The holding period after exercise is what earned you the lower rate on the second piece.

The pre-exercise checklist

What should you check before you exercise NSOs? Four things, in order: the cash, the tax, the basis setup, and the timing. The exercise itself is one click. The decision behind it is this list, and running it first is what separates a planned exercise from an expensive surprise.

Know the full cash cost, not just the strike

Add the strike, the income tax on the spread, and the payroll tax. The true cost is strike plus the whole tax, not strike plus what gets withheld.

Plan for the withholding gap

The spread is withheld at the flat supplemental rate, below most equity holders’ real rate, so set aside the difference the day you exercise and plan a quarterly estimate if it is large. The withholding gap is the most common cash surprise there is.

Confirm where the cash comes from

If the shares are public, you can sell some to cover the bill. If they are private, you usually cannot sell anything, so the cash has to come from elsewhere. Do not fund a tax bill on stock you cannot sell without a plan for the cash.

Pick the year on purpose

The spread is taxed in the year you exercise, so check your bracket headroom and whether a low-income year is coming. Often the cheapest move is to spread the exercise across years, not do it all at once.

Set up your basis records now

Save the exercise confirmation and the spread amount the day you exercise. That is your proof of the real basis later, so you can fix it on Form 8949 when the broker reports only the strike.

Caution

The one thing you cannot undo is the year. Once you exercise, the spread is income in that tax year, full stop. Confirm the timing is right before you click, because there is no taking it back in April.

After you exercise, three follow-through moves: park the tax set-aside somewhere you will not spend it before the bill comes due; decide sell or hold deliberately, since holding starts the long-term clock while selling diversifies you out of a concentrated position; and when the 1099-B arrives, check the basis and file the adjustment if it shows only the strike.

What if I already filed a past year with the basis wrong?

An amended return can pull the overpaid money back, within the normal time limits for amending. The money is not automatically lost, but nobody hands it back unless you ask, and if the spread was large the overpayment can be large too.

Does the holding clock change my basis?

No. Holding longer changes the rate on the gain (long-term versus short-term), not the basis itself. The basis is locked the day you exercise. What you hold for is the lower long-term rate on whatever the stock earns after that.

What this means for you

The W-2 carries the ordinary income from the exercise. The 1099-B carries the capital gain or loss from the sale. The link between them is your cost basis, and that is the number to guard. Verify the spread is in your wages, correct the basis on the sale with a negative adjustment on Form 8949, and the two forms tell one clean story instead of taxing the same dollars twice. Run the pre-exercise checklist before you click, because the year is the one move you cannot reverse.

If your exercise was large, or it spanned a job change or a move, the reporting gets fiddly fast, and a second set of eyes helps.

More in NSOs

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.