Skip to main content

Import from your broker (⤓)

Don't want to retype your portfolio by hand? Upload an export from your broker and GrapeVest will recognize the format, match tickers and exchanges and create positions — with values in your base currency. A wizard guides you step by step, and the whole file is processed on your device (E2E model — nothing is sent to the server).

Entry points: the "Import from your broker" card at the top of Portfolio → Positions, the "Broker import" section in Settings, the "Update from a broker export" button in the values step of the monthly entry, the empty portfolio state, and a starting step in the welcome wizard ("I already invest with a broker").

How it works (wizard)

  1. Pick your broker from the gallery (major brokers / Polish brokerage houses / other).
  2. Export the file following the short per-broker instructions and drag it into the wizard (or paste data from a spreadsheet).
  3. Preview — you see recognized positions: an editable name (popular ETFs get a friendly name instead of the raw ticker, e.g. CSPX → "iShares Core S&P 500"), ticker, number of units and the value in your base currency. You can fix the instrument type (ETF / stocks / …).
  4. Per-row action. A row matching exactly one existing position (by ISIN/ticker) defaults to "Update" — it replaces only the numbers (quantity, cost, value); the position's name and settings stay. If you hold the same instrument split across several positions (e.g. per person), the wizard doesn't guess: it defaults to creating a new position and you pick the update target from a list. Any row can also be skipped. This way a re-import a month later updates your portfolio instead of duplicating it.
  5. Apply changes. If something goes wrong, there's "Undo import" — it removes the added positions and restores the previous values of updated ones. Past months' history (snapshots, contributions) is never touched.

Supported brokers

Recognized automatically (just upload the file):

  • XTB — open-positions export to Excel (.xlsx).
  • Trading 212 — transaction-history CSV.
  • Interactive Brokers — Activity Statement (CSV; "Open Positions" and "Trades" sections).
  • DEGIRO — Transactions (CSV; headers localized to your account language, e.g. Polish or English).
  • mBank eMakler — transaction-history CSV (GPW).

Guided + manual column mapping (brokers without a single, stable export format): PKO BP, ING, DM BOŚ (bossa), Alior, Santander, Erste, Revolut, and any other CSV file / paste. For these the wizard shows export instructions and pre-maps the columns — you fix them in one step. Two modes: transactions (buy/sell → we compute quantity, average price and cost from history using WAC) or balances (current value only).

Currency and values

Amounts are shown in your profile's base currency (PLN / EUR / …). Prices and values quoted by the broker in a foreign currency (e.g. USD, EUR) are converted at the current rate (NBP for a PLN base, ECB for a EUR base). The quote currency is stored as an instrument label so live pricing (below) can update it later.

note

Cost basis is converted at the current rate, not the rate on each transaction's date — a deliberate first-version simplification. The current position value is accurate; the historical cost may be an approximation.

Ticker and exchange matching

For recognized instruments GrapeVest tries to derive a Stooq symbol for live pricing — from the ticker and exchange (e.g. Nasdaq → aapl.us, LSE → .uk, Xetra → .de, GPW → bare symbol) or from a confident ISIN prefix (US/GB/PL). When the match isn't certain (e.g. UCITS ETFs listed on many exchanges) we don't guess — the value stays manual and nothing is zeroed. After import, quotes refresh just like for manually added ETFs/stocks (see Portfolio → "ETFs and stocks").

Privacy

Import runs entirely client-side: the file is read and parsed in the browser, and positions are saved through the normal encrypted store. The raw broker export never reaches the server. Model details: Privacy & security.

When a file isn't recognized

  • Make sure it's the right export (for XTB: open positions to .xlsx, with an "OPEN POSITION" sheet) — not, say, the account history.
  • The message "the open-positions table is empty" means the file is a valid export but the broker generated it without positions — XTB can do this when the report is downloaded from a view other than open positions. Generate the export again (in xStation: Account history → the "Open positions" tab → Export to Excel) and check in Excel that your positions are actually in the file.
  • The message "This tab is running an older version of the app" means an update was released in the background while this tab kept executing the previous code (typical for long-open or restored tabs). Refresh the page and upload the file again — the app detects this itself by comparing the tab's build with the server's build.
  • You can always pick "Other broker" and upload a CSV with manual column mapping.

Limitations

  • Brokers that provide PDF only (e.g. Trade Republic) aren't supported natively — use a CSV/XLSX export or convert the file.
  • The mBank eMakler parser was built from a documented column layout and awaits confirmation against a real file — if it doesn't catch, use the manual-mapping path and let us know via feedback. (DEGIRO has been verified against the real Transactions.csv layout — Polish and English headers.)