You're reviewing the Form 8949 your tax software produced and column (f) says MO. You go looking for "code MO" in the IRS instructions and it isn't there. Neither is MW, or BO, or any of the other two-letter combinations that show up on real returns.
There is no code MO. There's code M and code O, entered together in alphabetical order in the same box. That's the entire answer to the search — but the reason they appear together is worth understanding, because the M code carries an attachment requirement that people miss, and missing it is what turns a filed return into IRS correspondence.
Multiple Codes Go in One Box, Alphabetically
Tired of reading?
Upload your 1099-B PDF and get CSV/TXF in 30 seconds.
Column (f) of Form 8949 holds adjustment codes. When a transaction needs more than one, you enter them all in the same box, in alphabetical order, with no spaces and no commas.
So:
- M plus O becomes MO
- B plus O becomes BO
- M plus W becomes MW
- B plus M plus W becomes BMW
Every combination you'll see is just single-letter codes concatenated. Our complete Form 8949 adjustment codes reference covers all of them individually.
The amount in column (g) is the net of all the adjustments the codes represent, not one amount per code. That's the part that requires care when codes stack.
What Code M Means
Code M means the row represents more than one transaction.
Instead of listing 400 individual sales, you enter one row with the combined totals — total proceeds in column (d), total basis in column (e), the net adjustment in column (g), and total gain or loss in column (h) — and mark it with M.
Code M is not itself an adjustment. It doesn't change any number. It's a disclosure flag telling the IRS that this row is an aggregate, and that detail exists elsewhere.
You'd use it when:
- You have hundreds or thousands of transactions and listing each is impractical — see what to do with a large 1099-B
- You're grouping transactions that share the same box category and adjustment treatment
- Your tax software chose to summarize on your behalf, which most do above a threshold
The critical condition: code M obligates you to provide the detail separately. More on that below.
What Code O Means
Code O is the catch-all: an adjustment that none of the other codes describes.
The lettered codes cover specific situations — B for an incorrect basis reported by the broker, W for a disallowed wash sale loss, D for accrued market discount, T for an incorrect holding period, and so on. When your adjustment doesn't fit any of them, you use O and put the amount in column (g).
Common code O situations:
- Adjusting for a basis the broker never reported in an unusual posture that code B doesn't fit
- A partial disallowance from a rule with no dedicated code
- Reconciling a summary total to correct figures when several unrelated corrections net together
- Certain wash sale adjustments across accounts where the broker couldn't see the offsetting position — see wash sales across IRA and taxable accounts
Because O explains nothing on its own, attach a brief statement describing what the adjustment is. A one-line explanation prevents the correspondence that an unexplained adjustment invites. Treat O as a code that comes with homework.
Why M and O Appear Together
MO means: this row is a summary of multiple transactions, and the combined figures required an adjustment that no other code covers.
The realistic scenarios:
1. Summarized transactions with mixed corrections. You're aggregating 300 sales. Several had basis problems, one had an odd reconciliation item, and the corrections net to a single figure that isn't cleanly attributable to code B or code D. The row gets M for being a summary and O for the net adjustment.
2. Summary reporting against a broker total that's wrong. You're reporting a broker's section totals with M, but the broker's figures need correcting in aggregate. The correction rides in column (g) under O.
3. Software behavior. Many programs default to O when they can't map an adjustment to a specific code, then add M when they summarize. A fair number of MO rows exist because the software chose the safe generic code, not because O was the only correct answer.
That last point is worth acting on. If your adjustment does fit a specific code, use it. A row marked B or W tells the IRS exactly what happened. A row marked O says "something was adjusted, figure it out." Specific codes draw less attention.
The Attachment Requirement — Where This Goes Wrong
This is the part that causes actual problems.
When you use code M, the IRS still requires the underlying transaction detail. You aren't excused from providing it; you're excused from typing it onto Form 8949.
You satisfy the requirement one of two ways:
Attach a statement. A schedule listing each transaction with the same information Form 8949 would have shown. Your broker's 1099-B detail pages usually qualify as-is, which is the whole point of the provision. Our guide to attaching a statement instead of listing on Form 8949 covers what the statement must contain.
Mail it with Form 8453 after e-filing. If you e-file, you generally can't attach a PDF schedule directly. You file Form 8453, check the box for Form 8949 attachments, and mail it with the statement to the address in the instructions within the required window. See mailing your 1099-B statement with Form 8453.
The exception people rely on: for transactions where basis was reported to the IRS and no adjustment is needed, you can report totals directly on Schedule D lines 1a and 8a with no Form 8949 row and no attachment at all. But an MO row has an adjustment by definition, so that exception never applies to it. Our guide to Schedule D line 1a vs line 1b covers where the line is drawn, and the TurboTax summary totals walkthrough covers the software flow.
Filing an MO row with no attachment is the failure mode: the IRS has a summary figure with an unexplained adjustment and no supporting detail. That's a letter.
M and W — The Other Common Pair
Worth distinguishing, since it's the combination people confuse with MO.
MW means a summarized row that includes disallowed wash sale losses. Code W is specific: it identifies the adjustment as a wash sale, and column (g) holds the disallowed amount.
Use MW rather than MO when the adjustment is wash sales. They're common enough on active accounts that using the generic O code for them is a needless flag. See wash sales on Form 8949.
A row with summary reporting, a broker basis error, and wash sales all at once gets BMW — the three codes alphabetically, with column (g) holding the net of the basis correction and the wash sale disallowance combined.
How to Fill Out an MO Row
- Group the transactions correctly. All rows in one summary must share the same Form 8949 box category — you cannot mix Box A with Box B, or short-term with long-term. See Box A vs B vs C.
- Column (a) description — something like "See attached statement — 312 transactions" or "Various securities."
- Columns (b) and (c) — "Various" for dates.
- Column (d) — total proceeds for the group, which must reconcile to your 1099-B.
- Column (e) — total cost basis as reported.
- Column (f) — MO.
- Column (g) — the net adjustment amount.
- Column (h) — proceeds minus basis plus or minus the adjustment.
- Prepare the attachment with the full transaction detail.
- Attach it, or mail Form 8453 after e-filing.
FAQ
What does code MO mean on Form 8949?
It's two codes: M for summary reporting of multiple transactions, plus O for an adjustment no other code covers. Multiple codes go in column (f) in alphabetical order.
Is there a code MO in the IRS instructions?
No. The instructions list single-letter codes. Combinations like MO, MW, and BMW are those letters entered together alphabetically.
What is code M on Form 8949?
A flag indicating the row aggregates multiple transactions rather than reporting one. It doesn't change any dollar figure, and it requires you to provide the transaction detail separately.
What is code O on Form 8949?
The catch-all for adjustments that don't fit any other code. The amount goes in column (g), and you should attach a short explanation.
Do I have to attach a statement when I use code M?
Yes. Summary reporting on Form 8949 requires the underlying detail, either attached to a paper return or mailed with Form 8453 after e-filing.
Can I use code M with wash sales?
Yes — use MW. Code W identifies the adjustment as a wash sale disallowance specifically, which is preferable to the generic O.
Why did my tax software use code O instead of a specific code?
Software defaults to O when it can't map an adjustment to a specific code. If your adjustment does fit code B, D, or W, using the specific code is better — it explains itself.
What order do multiple codes go in?
Alphabetical, no spaces or commas. B before M, M before O, M before W.
Bottom Line
MO isn't a code — it's M and O sharing a box, and the alphabetical concatenation rule explains every strange two- and three-letter combination you'll see in column (f).
The substance is in what each letter obligates you to do. M means you owe the IRS the transaction detail, through an attached statement or Form 8453. O means you owe an explanation, because the code itself provides none. Handle both and an MO row is routine. Skip either and it's the row that generates the letter.
Summarizing hundreds of transactions and still need the detail statement? Try it on your 1099-B — upload the PDF and get every transaction as a clean CSV or Excel file, ready to serve as the attachment your code M row requires, with proceeds, basis, dates, and wash sale adjustments intact.
By 1099-B Converter Editorial Team
The 1099-B Converter editorial team writes guides on 1099-B tax filing, broker import issues, and Form 8949 / Schedule D reporting.