How to reconcile wash sales across accounts and against your 1099-B

Each broker's 1099-B checks one account and one CUSIP; the rule covers all your accounts. Only one card computes the gap, and the second year is the trap.

Each broker's 1099-B reports wash sales found inside that one account, matched by identical CUSIP. The rule covers every account you own, your IRA and options included, so the gap is yours to find. TradeLog is the one card here that computes it from raw fills across accounts; the alternative is one ledger of every account's trades and a 61-day check by hand. The deferred loss then has to follow the replacement shares into next year's form.

The short way

Three records describe the same year's losses, and they are not meant to agree:

  • Your tracker or journal records the loss on each closed trade as it happened. No wash-sale adjustment at all.
  • Each broker's 1099-B applies the rule inside that account only. The Form 1099-B instructions require box 1g where the sale and the repurchase were in the same account and were covered securities with the same CUSIP; they permit, but do not require, a broker to report wash sales across different accounts.
  • The rule itself covers every account you own. IRS Publication 550 counts a purchase of substantially identical stock or securities within 30 days either side of the loss sale — in another brokerage account, in your IRA or Roth IRA, by your spouse, or through an option to buy them — and says a wash-sale loss is not deductible even when the 1099-B does not report it. The mechanism is set out under wash sale.

Reconciling means finding the third number from the first two:

  1. Gather every account's fills — not the 1099-B — for the tax year, plus the last 30 days of the year before and the first 30 days of the year after. The window crosses year end.
  2. For each sale at a loss, list every purchase of the same security, and every option on it, in any account, from 30 days before to 30 days after. That is a 61-day window, and the 30 days before are the half people forget.
  3. Split the matches in two. Those in the same account with the same CUSIP should already be in that broker's box 1g; check them. The rest are the ones no form shows, and Form 8949's instructions have you report them with code W and the disallowed amount as a positive number in column (g).
  4. Move the disallowed loss onto the replacement shares in your own records, and keep it there until they are sold. Step 4 is the one that bites next year.

What the options are

Software that does all four steps. TradeLog exists for this. It imports raw history per account, adjusts wash sales across stocks, options and short sales, between separate accounts and against IRAs, and carries deferred losses into the next year's file. It deliberately refuses to build from a 1099-B, for the reason in the first section: the form already carries the broker's own adjustments without saying which cost figures they changed. It asks instead for the gross proceeds on each 1099-B and reconciles its total against them before it will finalise the year. Windows only, $219 a year for up to 1,500 records, and a record is one fill — about double your count of round trips. Its wash-sale settings are user-defined, and the vendor says it computes rather than advises.

One ledger and a manual check. TradingDiary Pro imports statements from about 30 brokers into one local database on Windows and prints a capital-gains report across them. Its card claims no wash-sale handling, so what it gives you is steps 1 and 2 in one place — every account's fills in one database — and an unadjusted realised gain to start from. The matching and the basis adjustment are yours.

That is the whole list, and the reason is the catalogue rather than the page: nothing else here claims the computation. TradesViz says outright it does no tax reporting and no wash sales. Sharesight runs real tax logic for Australia, New Zealand and Canada, and for US investors a sold-securities report on average cost with no wash-sale handling. A tool that is not on this list is not doing it quietly.

Where this breaks

The deferred loss has to cross two brokers and two years. Suppose a loss at broker A is disallowed because you bought the same stock at broker B the following week. Broker B's records do not know about the loss, so when you later sell those replacement shares, B's 1099-B reports their cost without the disallowed amount added. The adjustment exists only in your records. Form 8949 handles a 1099-B whose basis is not the right one with code B and an adjustment in column (g) — so a wash sale found by hand this year is a basis correction to remember next year, or the year after. This is the part TradeLog's carried deferrals exist for, and the part a one-off spreadsheet loses.

The IRA case is permanent. Under Rev. Rul. 2008-5, a replacement bought inside an IRA or Roth IRA disallows the loss and does not increase the basis of anything, so there is nowhere for the deferral to land. A reconciliation that treats it like the taxable-account case shows a deferred loss that will never come back.

CUSIP is the broker's test; the rule's is "substantially identical". A broker matches identical CUSIPs because that is what it can check mechanically. Publication 550 decides substantially identical on the facts — ordinarily one company's stock is not substantially identical to another's, and a convertible preferred can be identical to the common it converts into. Two securities with different CUSIPs are never matched by the form; whether they should be is a question the form does not answer.

Reinvested dividends and options are purchases. A dividend reinvested into the same stock inside the window buys shares, and an option to buy them counts too. Neither looks like a trade in a journal built around round trips, so a check that only scans buy orders misses them.

Partial matches spread across lots. If the replacement is a different number of shares from the sale, Publication 550 matches shares in the order they were bought, and only the matched ones are covered. One sale can then adjust the basis of several replacement lots, in proportion. Any check done on whole positions rather than on lots gets this wrong.

Two trackers that choose different lots find different losses. One set to first-in-first-out and another on average cost report different losses for the same sale, so they will find different wash sales. Settle the lot method before comparing anything; see cost basis.

Fills, not trades, count. Every partial fill is a record. TradeLog's own example is that 100 round trips come to 200 records or more, which is the number its plan limit counts.

If you outgrow this

When an account moved broker during the year, the basis arriving at the new broker is the old one's adjusted figure, wash sales included; carrying cost basis across an account transfer covers that side.

When the history has to come out of the brokers first, exporting your broker trade history is the step before this one.

This page describes the mechanism the IRS documents. It is not tax advice, and what a particular pair of securities counts as is a question for the IRS's own material or for somebody paid to answer it.

The rest of the category is portfolio trackers.

The tools that do this

In the order this page recommends trying them. Paid placement does not affect this order.

  1. TradeLog

    Rebuilds the year from raw fills in every account, IRAs included, adjusts wash sales and carries deferrals forward. Windows only.

    Wash sales and Form 8949 rebuilt from raw broker trade history, not from the 1099-B.

    $219/yr

  2. TradingDiary Pro

    One Windows ledger of fills from about 30 brokers, with a capital-gains report. Its card claims no wash-sale logic, so the 61-day check is yours.

    A Windows trade journal you buy once, with broker statement import and a local MCP server.

    $49/yr

FAQ

Why do my tracker, my journal and my 1099-B show three different losses for the same year?

Because each answers a different question. A tracker or journal shows the loss on each closed trade with no wash-sale adjustment at all. The 1099-B shows the broker's adjustment for repurchases in the same account with the same CUSIP. The rule covers repurchases in any of your accounts, your IRA and your spouse's, and options on the same stock. Only the third is what the rule describes, and nothing produces it automatically unless it sees every account.

Why does only one tool on this page compute wash sales?

Because only one card in this catalogue claims it. TradeLog rebuilds the year from raw fills across accounts and adjusts wash sales; every other tracker and journal here either says it has no US tax logic or reports realised gains without the adjustment. A how-to that listed more would be listing tools that do not do the job.

If my broker already reported a wash sale in box 1g, do I count it again?

Once, not twice. Form 8949 takes a broker-reported disallowed loss and one the broker could not see the same way — code W in column (f), the disallowed amount as a positive number in column (g) — and a 1099-B with anything in box 1g rules out skipping Form 8949 for those sales. What differs is where the number comes from, box 1g for one and your own matching for the other. Matching one purchase against two sales is the error to check for.

Sources

  1. Publication 550 (2025), Investment Income and Expenses — Internal Revenue Service, read
  2. Instructions for Form 1099-B (2026) — Internal Revenue Service,
  3. Instructions for Form 8949 (2025) — Internal Revenue Service, read
  4. Rev. Rul. 2008-5, Internal Revenue Bulletin 2008-3 — Internal Revenue Service, . Publication 550 (2025) still lists a purchase in an IRA or Roth IRA as a wash-sale trigger with no basis adjustment.

The catalogue next door

This page names a handful of cards. The rest of them are in Stock Portfolio Trackers, each filled in against the same schema, with the fields to narrow it yourself.

Last updated . Corrected in place: this is a reference page, not a dated post.

Report an error on this page

Quote the line and say what it should be.

The vendor’s page, filing or documentation that says otherwise.

Only if you want to hear back. Never published.

Read by a person. It fixes a fact and moves nothing else.