CSV import is the most common onboarding step for new JournalPlus users — and the most common place setup stalls. Different brokers export radically different file structures, and a single misconfigured setting produces silent errors that are frustrating to diagnose. This guide is for traders who are setting up JournalPlus for the first time and want their imported data to match their broker statement exactly.

By the end, you will know how to export from thinkorswim, Schwab, IBKR, and Robinhood; fix the five most common format errors; and verify your import using a four-point checklist.

Step 1: Configure Import Settings Before You Upload

Two settings control how JournalPlus interprets your CSV data, and both must be correct before you import. Changing them afterward requires a full re-import.

Gross vs. Net P&L — Navigate to Settings > Import Preferences. If your broker CSV includes a commission column and you want your journal P&L to match your broker statement, enable “include commissions from broker CSV.” JournalPlus defaults to gross P&L (Price x Quantity). A trader with 200 trades paying $1 commission each will see a $200 discrepancy if this is left on gross.

Options Multiplier — Go to Settings > Options Multiplier. Most brokers export options premium per share, not per contract. If your CSV shows a price of $1.50 for an options trade, JournalPlus needs to know to multiply by 100 to get the $150 contract value. Set this to 100 for standard equity options before importing any options data.

Step 2: Export the CSV from Your Broker

Each broker buries the export in a different location:

BrokerPath
thinkorswimMonitor > Account Statement > select date range > Export
SchwabAccounts > History > select Date Range > Export CSV
IBKRReports > Flex Query > Trade Confirmations preset > Run
RobinhoodAccount > Statements & History > Download CSV

IBKR users: Use the Trade Confirmations Flex Query report, not the standard Trades report. The Trades report includes forex hedges and currency conversion rows that inflate your trade count by 30-40% and cause P&L errors.

Export 90 days of history to start. Importing a smaller window lets you validate the process before committing a full year of data.

Step 3: Clean Broker-Specific Formatting Issues

Raw broker exports are rarely import-ready. Apply these broker-specific fixes before uploading:

thinkorswim: The CSV has 3 header rows above the column names, plus inline subtotal and total rows mixed into the data. Open the file in a spreadsheet editor and delete any row where column A contains “Account” or “Total.” Also delete the first 3 rows. The fourth row should be your column headers.

IBKR Trade Confirmations: Generally clean, but verify that the file does not include currency conversion rows (rows where the Symbol column contains a currency pair like “EUR.USD”). Delete those rows before uploading.

Robinhood: The CSV has no unified “Side” column. JournalPlus infers direction from the Trans Code field: BTO (Buy to Open) and BTC (Buy to Close) map to BUY; STO and STC map to SELL. For equity trades, positive Quantity = BUY. This inference is handled automatically by the Robinhood preset in the import wizard — select it explicitly rather than using the generic CSV importer.

Step 4: Map Columns and Set the Date Format

JournalPlus requires five columns to calculate P&L. Everything else is optional:

Required ColumnDescription
DateTrade execution date
SymbolTicker (e.g., AAPL, SPY)
SideBUY or SELL
QuantityNumber of shares or contracts
PriceExecution price per share/contract

If your CSV includes a net P&L column, JournalPlus will use it directly. If not, P&L is calculated as Price x Quantity (adjusted for side and multiplier).

Date format is the single most common silent failure. Schwab, Fidelity, and Robinhood all export dates as MM/DD/YYYY. JournalPlus’s import wizard has a date format selector — use it. Do not do a find-replace in a spreadsheet, because partial matches on date strings cause data corruption.

In the import wizard: select your date format from the dropdown before clicking Import. If your CSV shows dates like “01/15/2025,” select MM/DD/YYYY. If it shows “2025-01-15,” select YYYY-MM-DD.

Step 5: Validate Imported Data Against Your Broker Statement

After import, run through this four-point checklist before closing the wizard:

  1. Trade count matches — Compare the total trades in JournalPlus to your broker’s activity statement for the same period. A 5% discrepancy is worth investigating; more than 10% means something was skipped or duplicated.
  2. Net P&L within tolerance — A difference under 0.1% of total gross P&L is typically rounding on fractional shares or currency conversion. A gap over 1% warrants investigation — check the commission setting first.
  3. No trades stuck in 1970 — Go to your trade log and sort by date ascending. If any trades show a 1970-01-01 date, you have a date format mismatch. Re-import with the correct format selected.
  4. Symbols resolve correctly — Options symbols like AAPL230616C00150000 should map to a readable options chain. If they appear as raw OCC strings, verify the options multiplier setting and re-import.

Real example: A trader imported 847 rows of Schwab trades covering 3 months. The dashboard showed $0 P&L for all January trades. The cause: Schwab exports dates as “01/15/2025,” but the import wizard was set to YYYY-MM-DD, mapping every January trade to 1970-01-01 — invisible in the default 90-day view. After re-importing with MM/DD/YYYY selected, P&L showed -$1,240 vs. the broker statement’s -$1,052 — a $188 gap. The fix: enabling “include commissions from broker CSV” in Settings captured the $0.65/contract commissions on 289 options trades, reconciling the figure to within $2 (fractional ETF share rounding).

Pro Tips

  • Import one broker at a time. If you have accounts at two brokers, complete the full validation for the first before starting the second. Mixing imports makes it impossible to trace errors to their source.
  • Save a copy of your cleaned CSV before uploading. If you need to re-import with different settings, starting from the cleaned file is faster than re-cleaning the raw export.
  • For thinkorswim, the “Account Statement” export covers equities and options in one file. The “Trade History” export covers equities only — use Account Statement.
  • If your broker’s options symbols use non-standard formats, paste one example into JournalPlus’s symbol lookup before importing. Confirm it resolves before running the full import.
  • Set your default view to “All time” before validating — the 90-day default view hides trades outside that window and makes date errors look like missing data.

Common Mistakes to Avoid

  1. Changing P&L settings after import. JournalPlus applies commission handling at import time, not retrospectively. If you change Settings > Import Preferences after importing 500 trades, none of those trades update. Always configure settings first, then import.

  2. Using the IBKR Trades report instead of Trade Confirmations. The Trades report includes forex conversions and hedging rows that are not trades. On an active account, this inflates import count by 30-40% and corrupts P&L totals. Use the Flex Query > Trade Confirmations preset.

  3. Skipping the thinkorswim cleanup step. Uploading a raw thinkorswim export with 3 header rows and subtotal rows causes the import wizard to misidentify your column headers. The import will appear to succeed but map all data to the wrong columns.

  4. Assuming a successful import means correct data. The import wizard confirms that the file was parsed, not that the data is accurate. Always run the four-point validation checklist — especially checking for 1970 dates and verifying trade count.

  5. Re-importing after manually editing trades. JournalPlus deduplicates on a hash of Date + Symbol + Side + Quantity + Price. If you edit a trade’s price or quantity and then re-upload the original CSV, the edited record and the original both exist as separate entries. If you need to re-import, delete the existing trades for that date range first.

How JournalPlus Helps

JournalPlus’s import wizard includes broker-specific presets for thinkorswim, Schwab, IBKR, and Robinhood that automatically map column names and apply the correct date format — no spreadsheet editing required for standard exports. The deduplication engine means re-uploading a corrected CSV is safe without manual cleanup. Once trades are imported, the analytics dashboard calculates P&L by symbol, strategy, and tag automatically, and the broker setup guide covers direct API connections if you prefer to skip CSV entirely after the initial historical import.

People Also Ask

Will re-uploading a CSV double-count my trades?

No. JournalPlus deduplicates on a hash of Date + Symbol + Side + Quantity + Price, so re-uploading the same file is safe. The exception is if you manually edited a trade after the first import — the edited record no longer matches the hash, so re-importing creates a duplicate.

Why do all my January trades show $0 P&L?

This is almost always a date format mismatch. Brokers like Schwab export dates as MM/DD/YYYY, but if the import wizard is set to YYYY-MM-DD, those trades get mapped to 1970-01-01 and fall outside your default 90-day view. Re-import with the correct date format selected.

Why does my imported P&L differ from my broker statement?

The most common cause is the gross vs. net P&L setting. JournalPlus defaults to gross (before commissions). A trader with 289 options contracts at $0.65/contract will see a $187.85 gap. Enable "include commissions from broker CSV" in Settings > Import Preferences to reconcile.

How do I import options trades correctly?

Verify your options multiplier before importing. Most brokers export premium per share ($1.50), not per contract ($150). Check Settings > Options Multiplier and set it to 100 for standard equity options.

Which IBKR report gives the cleanest import?

Use the Trade Confirmations report via Reports > Flex Query, not the standard Trades report. The Trades report includes forex hedges and currency conversion rows that inflate your trade count by 30-40%.

Was this article helpful?

J
Written by

JournalPlus Team