How to export Schwab transactions, and the settlement it writes as a trade

Eight columns, two dates on every resolution row, and an index settlement dressed up as a closing trade.

The steps

step 1
Go to Accounts, then History, and choose Transactions rather than Positions.
step 2
Set the range. Exporting the whole year every month is safe: rows already in the ledger are skipped.
step 3
Export to CSV. Both layouts are read, the plain one and the one with a title line above the header.

What you get, and what it means

what you get
03/06/2025 as of 03/05/2025
Buy to Close   SPXW 03/05/2025 5840.00 C
qty 1   price $2.63   fees empty
amount ($263.00)
what it means
a cash settlement of a short call that finished in the money
the session is 5 March, not the 6th
it resolves the position rather than trading it

read as written, this seller has never been assigned

Traps in this file

Every resolution row carries two dates

“03/06/2025 as of 03/05/2025” is booked on the sixth for something that happened on the fifth. The second one is the session, and taking the first moves a whole expiry onto the following Monday.

An in-the-money index settlement arrives as a trade

SPXW finishing in the money is written as a Buy to Close at intrinsic, dated as of the expiry, with the fee column empty. Nobody bought it back. Read as written it makes an index seller's assignment rate read as zero.

Schwab signs its resolutions correctly, alone among the five

An assigned short put reads +10 and an expiring long call reads -1: the quantity is already the change that flattens the position. Every other broker here needed a rule invented for that sign.

Excel mangles the file if you open it first

Long option symbols and REF numbers get reformatted. Import the CSV as downloaded.

Both current layouts are read, and the header is found wherever it starts. Corporate actions and cash-in-lieu rows are kept as money rather than filed as trades.

Drop your Schwab file