{% extends "base.html" %}
{% from "_macros.html" import year_picker %}
{% block title %}Form 8949 {{ year }}{% endblock %}
{% block content %}
Each sale, matched to the shares bought first (FIFO). Compare with your broker's 1099-B.Form 8949 / Schedule D — {{ year }}
| (a) Description | (b) Acquired | (c) Sold | (d) Proceeds | (e) Cost basis | (f) Code | (g) Adjustment | (h) Gain or (loss) | Account |
|---|---|---|---|---|---|---|---|---|
| {{ d.quantity|qty }} sh {{ d.symbol }}{% if d.replacement_notes %} wash sale — replaced by {{ d.replacement_notes|join(', ') }} {% endif %} |
{{ d.acquired.isoformat()|usdate if d.acquired else 'Unknown' }} | {{ d.sold.isoformat()|usdate }} | {{ d.proceeds_cents|money }} | {{ d.basis_cents|money if not d.missing_basis else '?' }} | {{ d.code }} | {{ d.wash_disallowed_cents|money(true) }} | {{ d.gain_cents|money if not d.missing_basis else '?' }} | {{ rep.accounts.get(d.account_id, '') }} |
| No sales. | ||||||||
| Totals | {{ s.proceeds|money }} | {{ s.basis|money }} | {{ s.adjustment|money(true) }} | {{ s.gain|money }} | ||||
Code W = wash sale: the loss was disallowed because the same stock was bought within 30 days before or after the sale. The disallowed amount is added to the cost basis of the replacement shares, so it isn't lost — it comes back when you sell them. If your broker already reports a sale with basis on the 1099-B, the 1099-B figures are what the IRS sees; differences usually mean a missing or extra trade here.
{% endblock %}