Skip to main content

Importing data

Statement formats, supported banks, brokers and crypto exchanges, smart trade import with AI, duplicate detection, and the optional Wallet by BudgetBakers sync.

Last updated: October 2, 2026

Assetli has no live bank connection. Everything you see was either typed in, imported from a file you downloaded from your bank or broker, or synced from Wallet by BudgetBakers with a token you pasted. This page describes each path.

Bank statements

Formats

Import reads statements from banks around the world. An automated test currently checks 203 bank export formats from 31 countries. The format is decided by the content of the file, not by its extension or the bank you select.

  • International standards: SEPA XML (camt.053), MT940, OFX / QFX / QBO and QIF.
  • National formats: GPC / ABO (Czech Republic, Slovakia), Norma 43 (Spain), CFONB 120 (France), CBI (Italy), CODA (Belgium) and Elixir (Poland).
  • Excel: XLSX, legacy XLS and an HTML table with the .xls extension.
  • PDF downloaded from online banking: the table is rebuilt from the positions of text on the page. On your explicit confirmation, a scanned statement can be transcribed by AI. The whole statement then goes to the AI provider and is paid from your AI credit, see Statement formats.
  • CSV from any bank: smart detection recognises columns by their content, not by header names. It handles decimal commas and points, dates in dozens of notations, separate debit and credit columns, a payment direction column, and credit cards that record purchases as positive amounts.
  • Dedicated parsers for Air Bank, Raiffeisenbank, UniCredit Bank and Wise.
  • Assisted mapping. If detection is unsure, you map columns by hand, or let the AI propose the mapping. The AI receives only the header row and a few sample rows, never the whole statement, and it returns a mapping, not transactions. The mapping is saved with the bank so the next import is free.

Upload a file with the “Import from file” button in the header of the Bank accounts page, or with the import icon on a specific account. Statement text without a file can be imported through an AI connection; see Importing through the AI connection.

All formats, character encodings, limits and how we verify coverage are described on the Statement formats page.

Supported banks

The bank list in the app carries an export guide for each bank. Banks with a parser or a standard format:

CountryBanks
Czech RepublicAir Bank, Raiffeisenbank, UniCredit Bank, ČSOB, Komerční banka, Česká spořitelna, Fio banka, Banka CREDITAS, Max banka
SlovakiaSlovenská sporiteľňa, VÚB, Tatra banka, ČSOB, 365.bank, Prima banka, mBank, Fio banka, UniCredit, J&T Banka
PolandPKO Bank Polski, mBank, Bank Millennium, Santander Bank Polska, Bank Pekao, ING Bank Śląski, Alior Bank, VeloBank
GermanyDeutsche Bank, Commerzbank, DKB, ING, Sparkasse, Volksbank / Raiffeisen, N26, comdirect, Postbank, HypoVereinsbank
AustriaErste Bank / George, Raiffeisen, Bank Austria, BAWAG P.S.K.
SwitzerlandUBS, PostFinance, Raiffeisen, Zürcher Kantonalbank, Credit Suisse
FranceBNP Paribas, Crédit Agricole, Société Générale, LCL, BoursoBank, La Banque Postale, Caisse d’Épargne, Crédit Mutuel
NetherlandsING, Rabobank, ABN AMRO, bunq, ASN Bank, SNS, Triodos Bank, Knab
BelgiumBNP Paribas Fortis, KBC, Belfius, Argenta
SpainSantander, BBVA, CaixaBank, Banco Sabadell, ING, Bankinter, Openbank
ItalyIntesa Sanpaolo, UniCredit, Poste Italiane, FinecoBank, BPER Banca, Crédit Agricole Italia, Banca Popolare di Sondrio
PortugalMillennium bcp, Santander Totta, Banco Montepio, Banco BPI, Caixa Geral de Depósitos
Nordic countriesDanske Bank, Lunar, Nordea, OP, Swedbank, SEB, Handelsbanken, DNB
United Kingdom and IrelandBarclays, HSBC UK, Lloyds Bank, Halifax, NatWest, Nationwide, TSB, Metro Bank, First Direct, Monzo, Starling Bank, AIB, Bank of Ireland
Hungary, Romania, GreeceOTP Bank, Erste Bank Hungary, BCR, Banca Transilvania, Raiffeisen Bank România, Alpha Bank
United StatesChase, Bank of America, Wells Fargo, Citi, Capital One, U.S. Bank, Ally Bank, Charles Schwab, USAA, American Express, Discover
CanadaRBC Royal Bank, TD Canada Trust, Scotiabank, BMO, CIBC, Tangerine
Australia and New ZealandCommBank, Westpac, ANZ, NAB, ING, Up, ASB, Kiwibank
Asia and Latin AmericaHDFC Bank, ICICI Bank, State Bank of India, Axis Bank, MUFG, SMBC, DBS / POSB, OCBC, Itaú, Nubank, BBVA México
Across countriesWise, Revolut

A bank that is not listed can be imported just the same. Choose “Other bank”, or do not choose a bank at all; the format is recognised from the content of the file.

What happens on import

  • Preview first. The file is parsed and shown with the number of new rows and duplicates before anything is written.
  • Duplicate detection uses the bank’s transaction code when present and a content match (date, amount, description) when it is not. Duplicates are skipped, not overwritten.
  • Transfers between your own accounts are detected and paired.
  • Balances of the target account are recalculated.
  • Every imported transaction carries the import source and an import batch id. The account’s “Clear Data” action can therefore delete all imported transactions (the “CSV imports” option) and leave manual entries and Wallet sync alone. A single statement sent by email can be undone within 14 days with the “Undo import” button; see Email import.
  • Categorisation. Your categorisation rules run on every import for free. AI categorisation is optional, off by default, and is paid from your AI budget (see Plans and credits).

The Free plan imports up to 500 transactions per month. Premium and Max have no import limit.

CSV import and Wallet sync cannot share an account

An account that receives Wallet by BudgetBakers sync will refuse CSV imports, because the two sources identify the same movement differently and would create duplicates. Use a separate account, or disconnect Wallet first.

Email import

On the Premium and Max plans you can email a statement to your own secret address instead of uploading it. The statement goes through the same import as an uploaded file; it just waits for your approval first. Steps, security and limits are described on the Email import page.

Broker trades

Stock and ETF trades are imported per broker account from an export file, or from pasted text through smart import. Recognised formats:

  • XTB “Cash Operations” export, as Excel or CSV, including fractional shares.
  • DEGIRO “Transactions” export, as CSV or Excel. The export contains no ticker, so the position is listed under its ISIN.
  • Portu CSV export, including portfolios with several strategies.
  • Any other broker by the column names in the header. The import understands common names in English, Czech (and mostly Slovak), Polish, German, French and Spanish. It works out the delimiter, decimal comma or point, and the order of day and month on its own (03/14/2026 is US notation). If the file has no column with the trade type and buys cannot be told from sells by the sign either, it is not read automatically. Buys and sells are never guessed.
  • Manual column mapping when the format is not recognised: the file structure is shown and you assign date, symbol, quantity, price and currency by hand; the wizard pre-fills the columns from their names. The mapping supports Czech and German number formats. Next to manual mapping, the app offers smart import with AI for the same file (CSV or Excel, up to 2 MB).

A file saved from Excel as “Unicode Text” (UTF-16) and files with a BOM at the start are read correctly.

Broker accounts can be labelled as XTB, DEGIRO, Interactive Brokers, Fio banka, Portu, Revolut, Trading 212, eToro, Saxo Bank or Other. The label does not limit the import; the file format does.

Trade import also previews first, detects duplicates and recalculates holdings and average cost from the full trade history. Dividends and withholding tax from the XTB and Portu exports are not imported yet; add them by hand. A row with an unreadable date is skipped with a warning; it is never given today’s date. For a date such as 03/04/2026 that cannot be read unambiguously, the preview shows a warning.

Crypto trades

Crypto accounts represent an exchange or a wallet: Binance, Coinbase, Kraken, Bitstamp, Bitfinex, KuCoin, Bybit, OKX, Gate.io, Gemini, Huobi, Crypto.com, Revolut, Anycoin Direct, Simplecoin, Trezor, Ledger, MetaMask or Other. Binance, Coinbase, Kraken, Bitstamp, Crypto.com, Revolut, Anycoin Direct, Trezor and Ledger have dedicated parsers for their CSV exports. If the export belongs to a different exchange than the one set on the account, the app recognises the format from the file header. A crypto-to-crypto trade is stored as a swap, and prices in other currencies are converted at the exchange rate of the trade date. Rows of an unknown type are skipped, never stored as purchases. Other files go through a generic CSV reader that finds the columns by their header names (date, symbol, quantity, price, fee), in other languages too, and handles European dates (05.03.2024). Manual column mapping is not available here yet; instead you can paste the trades as text through smart import. Prices are updated from CoinMarketCap.

Smart trade import with AI

For stocks and ETFs as well as crypto, the trade import window has a “Paste text (AI)” option. You paste raw text: a statement copied from your broker, a trade confirmation email, a table or a paragraph. The AI lists the trades in it (date, buy or sell, ticker or ISIN, quantity, price, currency and fee).

The app then checks every value against the pasted text. Anything that does not appear in the text is not taken over: the AI must not infer anything, for example a ticker from the company name. In that case the ISIN, or the name, is used and the preview says so. The app also checks that quantity times price matches the amount, the date is not in the future and the currency is a valid code. For a date such as 03/04/2026 that cannot be read unambiguously, the preview shows a warning.

A preview with duplicates always comes first, as with a file, and nothing is saved without your confirmation. Saving goes through the same path as a file import. Dividends, deposits, withdrawals and fees in the text are counted but not saved as trades. Trades from smart import are marked, and just that batch can be deleted without deleting the rest of the account.

The text can be at most 20,000 characters, roughly 200 statement lines; split longer text. It is paid from your AI credit by actual usage. The text is sent to an Anthropic model for processing, as with the other AI features; see Who processes your data.

Smart import is also offered for a broker file whose format is not recognised (see above). In the mobile app it is part of the stock and ETF trade import wizard and requires consent to sharing data with AI.

Wallet by BudgetBakers sync

If you already use the Wallet app, you can sync its records instead of importing statements. This is a paid-plan feature (Premium and Max), and you also need your own Wallet Premium account.

  1. In Wallet, generate an API token.
  2. In Assetli Settings (the “Bank Sync” section), paste the token and map Wallet accounts to Assetli accounts.
  3. Start a sync with the “Sync WBB” button in the header of the Bank accounts or Transactions page; a green dot on the button shows that Wallet is connected. The sync does not run on its own in the background.

The token is stored encrypted with AES-256-GCM. Assetli only reads from the Wallet API; it never writes to Wallet. Wallet itself may be connected to your bank, but that connection stays between you and Wallet.

Manual entry

Every module has a form for adding records by hand: transactions, trades, property income and expenses, vehicle costs, utility readings, valuables, loans. Records added through the AI assistant or the MCP connection use the same models as the forms.

Importing through the AI connection

With a write-enabled MCP connector you can paste the text content of a statement (CSV, MT940, GPC, QIF and the other text formats on this page) into the chat and ask the AI to import it. The prepare_bank_import tool returns the same preview as the web (detected bank, new rows, duplicates, sample rows); import_bank_transactions then runs the same import routine as the Bank page. See MCP tools.