Broker guide
IBKR Activity Statement to Excel or CSV: what Statementizer reads and exports
For anyone holding an Interactive Brokers Activity Statement as a PDF: what is read from it, how one statement row becomes one ledger row, the checks that run, and what is left out.
Short answer
Statementizer converts an Interactive Brokers Activity Statement PDF into an Excel ledger: one row per stock, ETF or option trade with date, symbol, side, quantity, price, gross, fees and net, plus dividends, deposits, withdrawals, splits and itemised fees. Forex, interest and withholding tax lines are not read.
Which IBKR documents it reads
Statementizer reads the Activity Statement as a PDF with selectable text. IBKR lets you run an Activity Statement for a day, a month, a year, year to date or a custom range; the period a statement covers is printed in its header, and Statementizer records the period from there. What this page says about what is read comes from Statementizer’s own parser and its test statements; what IBKR prints comes from IBKR’s published guides.
| Document | Read? |
|---|---|
| Activity Statement, PDF with selectable text | Yes |
| Activity Flex Query (IBKR describes these as text or XML statements) | No. Statementizer reads PDFs only. |
| Trade Confirmation Reports and other IBKR report types | Not a supported document. A file that is not recognised as an Activity Statement is refused and its credits are refunded automatically. |
| A scan or photograph of a statement (no selectable text) | No. Scans are not supported. |
What is read from each part of the statement
| Section of the statement | What Statementizer does with it |
|---|---|
| Trades: Stocks and Bonds | One ledger trade per row: date, symbol, side, quantity (fractional shares kept exactly), price, gross, fees, net and currency. IBKR’s Code column is read for opening (O) and closing (C) trades. |
| Trades: Equity and Index Options | One ledger trade per row, with the contract (underlying, expiry, strike, call or put) kept in the symbol so two contracts are never merged. Multi-leg positions are read leg by leg. |
| Trades: Forex | Not read. |
| Corporate Actions | Splits are recorded with their ratio. Spin-offs are recorded as an action Statementizer does not yet adjust for, and are flagged. |
| Dividends | Each dividend becomes a dividend row. A payment in lieu of a dividend is read too and flagged, so it can be told apart. |
| Deposits & Withdrawals | Read as deposit and withdrawal rows. |
| Fees | Each fee row becomes a fee, itemised into commission, exchange, regulatory or other by its description. |
| Interest, Withholding Tax, performance summaries, open positions, cash report, net asset value | Not read in this release. No row is created from them. |
From a statement row to a ledger row
IBKR’s guide says the Trades section lists all trades sorted by asset class, then currency, then symbol, with these columns: Symbol, Date/Time, Quantity, T. Price, C. Price, Proceeds, Comm/Fee, Basis, Realized P/L, MTM P/L and Code. It says Proceeds is quantity times the transaction price, negative for buys and positive for sales, and Comm/Fee is the total commission and fees for the transaction. When a PDF wraps a row’s date and time onto two lines, Statementizer joins them.
Two invented rows, with only the columns IBKR documents and Statementizer uses (the others are left out):
| Symbol | Date/Time | Quantity | T. Price | Proceeds | Comm/Fee | Code |
|---|---|---|---|---|---|---|
| AURX | 2026-03-04, 10:15:32 | 40 | 21.3500 | -854.00 | -1.00 | O |
| AURX | 2026-03-11, 14:02:09 | -40 | 23.1000 | 924.00 | -1.00 | C |
The same two rows as Statementizer’s ledger holds them, and as they appear on the Trades sheet of the Excel export:
| Date | Symbol | Side | Quantity | Price | Gross | Fees | Net |
|---|---|---|---|---|---|---|---|
| 2026-03-04 | AURX | buy | 40 | 21.3500 | 854.00 | 1.00 | 855.00 |
| 2026-03-11 | AURX | sell | 40 | 23.1000 | 924.00 | 1.00 | 923.00 |
- Side comes from the sign of Quantity: negative is a sale.
- Gross is the size of Proceeds.
- Fees is the size of Comm/Fee. Where the statement itemises a fee, it is split into commission, exchange, regulatory or other.
- Net is the amount paid or received: gross plus fees on a buy, gross minus fees on a sale.
- Options: gross includes the contract multiplier, so it is quantity times multiplier times price. In the option trades of Statementizer’s test statements the multiplier is 100.
- Currency is the currency of the section the row was printed in.
The checks that run before you see a row
- Every trade must add up. Quantity times multiplier times price, plus fees on a buy or minus fees on a sale, has to equal the net amount to within 0.01. A row that does not is marked as needing review and is never accepted silently.
- IBKR’s own totals are compared with the rows. IBKR prints totals at the bottom of each symbol (quantity, proceeds and commission, among others). Statementizer reads those, and the section totals for dividends, fees and deposits and withdrawals, and compares each with the rows it read. A difference is reported; it is not ignored.
- Parts it does not read get no check. A printed total for a section Statementizer does not model, such as corporate actions or forex, is noted as unchecked so that nothing implies it was verified.
- Every row can be traced. Each row keeps its source page, how it was read and a confidence score, and the review screen shows the PDF page next to the rows so a row can be corrected or approved.
What you get
The Excel export opens with a notice sheet, then has Trades, Summary, Fees, PL and Raw sheets. The Trades sheet has the columns Date, Symbol, Side, Quantity, Price, Gross, Fees, Net, Currency, Confidence and Review Status, which are the same columns as the Trades sheet of the trading journal template, so the rows paste straight in. The same reviewed ledger also exports as CSV, as an OFX file, as a QuickBooks Online CSV, as a QuickBooks Desktop IIF file and as a Xero journal CSV.
Limits
- PDF with selectable text only. CSV and Flex Query files, HTML statements and scans are not read.
- Left out: forex trades, interest, withholding tax, and the performance, positions, cash and net asset value sections.
- Corporate actions: splits are recorded. Spin-offs are flagged, not adjusted for.
- Layouts: the parser is built for IBKR’s default Activity Statement layout. If a layout is not recognised the file is refused, with zero rows and an automatic refund, and not guessed at. IBKR can change its layout; the parser is tested against synthetic statements shaped like it and is changed when a layout changes.
- No accuracy figure is published. Statementizer’s test statements are synthetic, so a percentage would not mean what it appears to. Compare the totals with the ones IBKR prints.
- Not tax advice. Statementizer produces a ledger and summaries from what the statement says.
Getting the PDF from IBKR
IBKR’s guide says to click Performance & Reports, then Statements (or Menu, then Reporting, then Statements), select the Run arrow next to the statement, and choose the period: Daily, Custom Date Range, Monthly, Annually or Year to Date. The guide lists further options, such as whether to include crypto activity and the multi-account format. Choose PDF as the format and upload that file. Screens change, so IBKR’s own guide, linked below, is the reference.
Common questions
- Is the statement read by AI?
- No. It is read by a parser written for the Activity Statement layout, not by a language model. Today a layout the parser does not recognise is refused and the credits are refunded.
- Does it work for a monthly statement as well as an annual one?
- The period is taken from the statement’s own header, so an Activity Statement for a month, a year or a custom range in the same layout is read the same way.
- Are fractional shares kept exactly?
- Yes. Quantities and amounts are held as exact decimals, never as floating-point numbers, so a quantity such as 28.2 stays 28.2.
- Can I get a Canada or US tax summary from the ledger?
- Statementizer can produce summaries for Canada (Schedule 3 and T5008) and the United States (Form 8949 and Schedule D) from a reviewed ledger. They are summaries to check with your accountant, not a filed return and not advice.
- Why are forex trades and interest not read?
- They are outside what this release models. Rather than guess, Statementizer leaves them out and says so, so they are not mistaken for something that was checked.
What Statementizer does with this
Upload the Activity Statement PDF and Statementizer shows the extracted rows beside the statement page, flags anything that does not add up, and exports a spreadsheet, a CSV or accounting files once you have reviewed it.
See what Statementizer convertsRelated guides, tools and formats
Sources
Which columns an Activity Statement prints, the sign of Proceeds, the Code abbreviations, the printed totals and the steps to run a statement come from IBKR’s guides. What Statementizer reads and checks is described from its own parser and test statements, which are not public.
- Trades - Default Activity Statement (last updated March 20, 2025)
- Codes - Default Activity Statement
- How to Run a Statement (last updated April 27, 2026)
Verified on 2026-10-18 by the Statementizer Team.