How we parse your broker files
Exactly which rows from each broker statement map to which category, how the tricky cases are handled, and what is not covered. These mapping tables are generated live from the parser code, so they are always current.
trade (buy/sell) |
Stock/ETF/option buy or sell — §10 capital gains (FIFO-paired). |
dividend |
Dividend income — §8 (foreign dividends recalculated to gross). |
withholding_tax |
Tax withheld at source — claimed as a foreign-tax credit. |
interest |
Interest / bond coupon — §8 interest income. |
fee |
Broker fee — optionally deductible under §10(4). |
deposit / withdrawal |
Cash in/out of the account — not taxable. |
fx_conversion |
Currency conversion leg — not a taxable disposal. |
capital_return |
Return of capital — reduces cost basis, not income. |
fund_distribution |
Fund / PTP distribution. |
cash_settlement |
Cash settlement of a corporate action. |
stock_split / spinoff / merger / delisting / isin_change / rights_issue / exchange_offer |
Corporate actions — adjust position & cost basis (not a sale). |
stock_grant |
RSU/ESPP grant — taxable income at vest, opens a position. |
transfer_in / transfer_out |
Broker-to-broker self-transfer — non-taxable; opens/closes the position. |
_skip / _skip_internal |
Recognised but intentionally not booked (internal transfer, DRIP cash leg, rights received). |
Soubor: Account.csv
Exportovat: Activity → Account statement → export CSV for the full date range.
Detected by: CSV header with Datum/Produkt/ISIN/Popis columns.
Mappings (58)
| Description / action | Category | Direction |
|---|---|---|
stock split: nákup |
stock_split | buy |
stock split: prodej |
stock_split | sell |
stock split: |
stock_split | — |
úprava splitu: |
stock_split | — |
uprava splitu: |
stock_split | — |
spin off: nákup |
spinoff | buy |
spin off: prodej |
spinoff | sell |
merger: nákup |
merger | buy |
merger: prodej |
merger | sell |
take over: nákup |
merger | buy |
take over: prodej |
merger | sell |
delisting: prodej |
delisting | sell |
změna isin kódu: nákup |
rename | buy |
změna isin kódu: prodej |
rename | sell |
změna produktu: nákup |
rename | buy |
změna produktu: prodej |
rename | sell |
rights issue: nákup |
rights_issue | buy |
exchange offer: nákup |
exchange_offer | buy |
exchange offer: prodej |
exchange_offer | sell |
konverze peněžního fondu: nákup |
fee | — |
konverze peněžního fondu: prodej |
fee | — |
nákup |
trade | buy |
prodej |
trade | sell |
daň z dividendy |
withholding_tax | — |
oprava srážkové daně |
withholding_tax | — |
partnership - srážková daň |
withholding_tax | — |
reinvestice dividendy |
_skip_internal | — |
dividenda |
dividend | — |
partnership distribuce |
fund_distribution | — |
fund distribution |
fund_distribution | — |
vrátka kapitálu |
capital_return | — |
vratka kapitálu |
capital_return | — |
korporátní akce hotovostní vypořádání akcie |
cash_settlement | — |
degiro transaction and/or third party fees |
fee | — |
degiro peněžní fond - kompenzace |
fee | — |
degiro poplatek za obchodování na zahraničních burzách |
fee | — |
adr/gdr pass-through poplatek |
fee | — |
londýn/dublin kolkovné |
fee | — |
náklady akcie |
fee | — |
francouzská transakční da |
fee | — |
degiro kompenzace |
fee | — |
degiro poplatek za schodek |
fee | — |
flatex interest income |
interest | — |
flatex interest |
interest | — |
interest income distribution |
interest | — |
úrok |
interest | — |
fx vyučtování konverze měny |
fx_conversion | — |
fx vyúčtování |
fx_conversion | — |
vklad |
deposit | — |
flatex deposit |
deposit | — |
processed flatex withdrawal |
_skip_internal | — |
zpracovávaný výběr |
_skip_internal | — |
flatex withdrawal |
withdrawal | — |
výběr |
withdrawal | — |
degiro cash sweep transfer |
_skip_internal | — |
transfer to your cash account at flatexdegiro bank |
_skip_internal | — |
transfer from your cash account at flatexdegiro bank |
_skip_internal | — |
změna ceny peněžního fondu |
fee | — |
- Fee merging: Trade fees on separate rows are merged into their parent trade via the transaction UUID.
- Stock splits: Both the verbed ("Stock split: Nákup/Prodej …") and verbless ("Stock split: 30 X @ …") formats are recognised; the split ratio is derived from the paired rows.
- Return-of-capital reclass: Cross-year ROC dividend reclassifications are back-dated to the original payment year.
- Languages: English and German exports follow the same mapping (German uses Kauf/Verkauf etc.).
- No options data (Degiro does not export it).
- Any row whose description matches no rule is SURFACED for review (never silently dropped or mis-filed as a fee).
Soubor: Obchody_<rok>.csv
Exportovat: e-Broker → Přehledy → Obchody → export CSV per year.
Detected by: Semicolon-separated file with a "Datum obchodu" header.
Mappings (12)
| Description / action | Category | Direction |
|---|---|---|
Nákup |
trade | buy |
Prodej |
trade | sell |
Převod z účtu … |
deposit | — |
Převod na účet … |
withdrawal | — |
… poplatek / fee |
fee | — |
Srážková daň / Daň z divid. zaplacená v USA / regulace 1446(f) / Refundable U.S. Fed Tax |
withholding_tax | — |
Úrok / Kupón / Výnos z dluhopisu / Bond Interest |
interest | — |
Rights Distribution |
_skip | — |
Partnership Distribution |
fund_distribution | — |
Return of Principal |
capital_return | — |
Dividenda / dividend |
dividend | — |
Vloženo |
deposit | — |
- Czech dividends reconstructed to gross: CZ-issuer dividends are reported net (15% withheld); the parser reconstructs gross + a synthetic withholding-tax row.
- Bond coupons: Coupons become interest; the tax engine treats them as §8 when the row has an instrument.
- Rights are received (not sold) → skipped; a later sale would surface on its own.
- Any row whose description matches no rule is SURFACED for review (never silently dropped or mis-filed as a fee).
Soubor: from_<date>_to_<date>.csv (or API sync)
Exportovat: History → Export → CSV (or connect the API key for autosync).
Detected by: CSV header starting "Action,Time,ISIN,…".
Mappings (18)
| Description / action | Category | Direction |
|---|---|---|
market buy |
trade | buy |
market sell |
trade | sell |
limit buy |
trade | buy |
limit sell |
trade | sell |
stop buy |
trade | buy |
stop sell |
trade | sell |
dividend (dividend) |
dividend | — |
interest on cash |
interest | — |
lending interest |
interest | — |
deposit |
deposit | — |
withdrawal |
withdrawal | — |
transfer out |
transfer_out | sell |
transfer in |
transfer_in | buy |
spin off |
spinoff | buy |
stock acquisition |
spinoff | buy |
card debit |
card_transaction | — |
spending cashback |
card_transaction | — |
new card cost |
fee | — |
- Cross-currency trades: A trade priced in a non-account currency is split into the trade leg + two FX-conversion legs so units never mix.
- Pence sterling: The LSE quotes in pence. Prices sent in pence are converted to GBP on import, so everything you see is pounds.
- Broker-to-broker transfers: Transfer in/out are non-taxable self-transfers: transfer_out closes at zero realized gain, transfer_in opens at the carried basis.
- Withholding tax: A dividend row's withholding tax is emitted as its own row.
- CSV exports over ~1 year are chunked automatically on sync.
- Any row whose description matches no rule is SURFACED for review (never silently dropped or mis-filed as a fee).
Soubor: Account statement (.xlsx) + optionally Open Position History (.xlsx)
Exportovat: xStation → Account history → Cash Operations → export to Excel. For transferred-in positions: also export Account History → Open Position History and upload that file too.
Detected by: Converted sheet rows (Cash Operations + Closed/Open Positions).
Mappings (27)
| Description / action | Category | Direction |
|---|---|---|
stock purchase |
trade | — |
stock sell |
trade | — |
stock sale |
trade | — |
dividend |
dividend | — |
divident |
dividend | — |
withholding tax |
withholding_tax | — |
free funds interest |
interest | — |
free funds interest tax |
withholding_tax | — |
stamp duty |
fee | — |
sec fee |
fee | — |
rights_issue |
rights_issue | — |
spin off |
spinoff | — |
transfer |
deposit | — |
deposit |
deposit | — |
withdrawal |
withdrawal | — |
nákup akcií |
trade | — |
nákup akcie |
trade | — |
prodej akcií |
trade | — |
prodej akcie |
trade | — |
dividenda |
dividend | — |
srážková daň |
withholding_tax | — |
úrok z volných prostředků |
interest | — |
daň z úroku z volných prostředků |
withholding_tax | — |
převod |
deposit | — |
vklad |
deposit | — |
výběr |
withdrawal | — |
STC Transfer IN (Open Position History sheet) |
transfer_in | — |
- Quantity from Closed Positions: Cash rows carry the amount; share quantities come from the Closed/Open Positions sheets.
- Stamp duty / SEC fee: UK stamp duty and US SEC fees arrive as standalone fee rows; the file sign is preserved.
- Open Position History (transfer-in): Rows with "STC Transfer IN" in the Comment column of the Open Position History sheet are emitted as transfer_in events, establishing the original cost basis for positions transferred in from another broker.
- CFD vs stock classification is reviewed per account.
- Any row whose description matches no rule is SURFACED for review (never silently dropped or mis-filed as a fee).
Soubor: Flex Query (XML/CSV) — autosync or manual
Exportovat: Performance & Reports → Flex Queries → run the configured query (or connect the Flex token for autosync).
Detected by: Flex section codes (TRNT, CTRN, CORP, DIV, …).
Mappings (8)
| Description / action | Category | Direction |
|---|---|---|
Dividends |
dividend | — |
Payment In Lieu Of Dividends |
dividend | — |
Withholding Tax |
withholding_tax | — |
Broker Interest Paid |
interest | — |
Broker Interest Received |
interest | — |
Bond Interest Received |
interest | — |
Other Fees |
fee | — |
Deposits/Withdrawals |
_deposit_withdrawal | — |
- Open/close hints: IBKR provides explicit open/close flags, so FIFO pairing uses the broker's own trade side.
- Deposits vs withdrawals: The single "Deposits/Withdrawals" cash type is split by amount sign.
- Bond mark prices: Position summaries seed bond market prices into the pricing engine.
- The manual Activity-Statement format is parsed too (its rule table will be added here next).
- Any row whose description matches no rule is SURFACED for review (never silently dropped or mis-filed as a fee).