BorderFolio/Security & data handling

Security and what happens to your statement

Last reviewed 31 August 2026

A broker statement is one of the more revealing documents a person owns, and uploading one to a small product is a reasonable thing to hesitate over. This page answers the hesitation concretely: what is asked for, what is read from the file, what is kept and for how long, what leaves the server and to whom, who can look at it, and how to remove all of it. Where the honest answer is a limitation rather than a reassurance, it is written as a limitation.

Broker credentials
Never a password or OAuth login. One optional read-only connection (Freedom24) uses API keys you generate and can revoke; the secret is stored encrypted
Original file
Held in private storage so a failed import can be retried, then deleted automatically within 7 days
Kept long-term
Instruments, quantities, prices, dates, dividends and statement metadata — not account numbers, not names printed on the document
Leaves the server
The document contents go to OpenAI for extraction; nothing else receives them
Encryption
TLS 1.2 / 1.3 in transit; AES-256 at rest for stored files and backups
Access
One person — the founder. No employees, no contractors, no analytics vendor with a view of your holdings
Deletion
Self-service in the app, immediate and irreversible, for a single portfolio or the entire account
Certification
None. No SOC 2, no ISO 27001, no third-party penetration test yet — see the limits

1. Broker passwords are never requested

There is no field for a broker login anywhere in BorderFolio, and no hidden one either: no passwords, no OAuth connection into a brokerage, no aggregation service such as Plaid or SnapTrade. A portfolio is built in three ways: you upload a document, you type holdings in by hand, or — for one broker — you connect it with API keys of your own. The manual path exists for privacy as much as convenience: if sharing a statement or a key with anyone — including us — is more than you're comfortable with, picking your positions manually builds the same portfolio, and no document or credential is ever involved.

The one direct integration is Freedom24, and it is deliberately narrow. You generate the API key pair yourself in the broker's cabinet and can revoke it there at any moment; the pair is proven with a single read-only call before anything is saved; the secret is stored encrypted, decrypted only to sign a request, and never logged. The integration implements exactly two calls — current positions and trades history — and contains no code that could place, modify or cancel an order. Details on the Freedom24 connection page.

The consequence worth stating plainly is what BorderFolio therefore cannot do. It cannot place a trade, move money or change a beneficiary — at Freedom24 or anywhere else. Even a total compromise of this service would expose, at worst, read access that you can cut off in the broker's cabinet; no trading route exists to steal.

The only optional third-party sign-in is Sign in with Google, which requests the openid email profile scopes — your email address and display name. It grants no access to Gmail, Drive or anything else, and you can use an email and password instead.

A direct Interactive Brokers connection appears on the roadmap. If it ships, it will follow the same pattern: an opt-in addition to statement import, never a requirement.

2. What is actually stored from the document

The extractor is looking for a small number of financial facts. Everything else on the page — your name, your address, cash balances, account totals, transfer instructions, bank details — is not a field it writes anywhere.

From the statementKept?Where it ends up
Ticker, ISIN, market (MIC), countryYesIdentifies the instrument you hold
Quantity and average purchase priceYesYour position
Each purchase: quantity, price, date, stated commissionYesContribution history — the record that separates deposited capital from market growth
Dividends received in the period, per instrumentYesDividend history and withholding estimates
Original file name, upload time, rows extracted, duplicates skippedYesThe import journal, so you can see what a past upload did
Broker account number printed on the pageNoRead during the import only, to keep two accounts in one document apart. There is no account-number column in the database
Your name, address, cash balances, account totals, anything else on the pageNoNot extracted into any field

Nothing enters your portfolio automatically. Every import stops at a review screen showing what was read, what was skipped as a duplicate and what could not be imported; the data is written only when you confirm it. See how statement import works.

Separately from the statement, an account holds what you gave it: name, email, a bcrypt hash of your password (never the password), optional date of birth, the tax residence and rates you configure, and your plan and usage counters.

3. Is the original file kept?

Yes, briefly, and then it is deleted whether you ask or not.

What survives the file is the extracted data and the journal entry — the file name, when it was uploaded and how many rows it produced.

4. What leaves the server: AI extraction

Reading an arbitrary broker's layout is done by a language model rather than a per-broker parser, which is why any statement works without a supported-broker list. That has a privacy cost, and it should be stated rather than buried: the contents of the document you upload are sent to OpenAI's API over TLS, so the model can extract the holdings and transactions from it. A PDF is sent as a file, a screenshot as an image, a CSV or text export as text.

Two things bound that transfer:

No other third party receives the document or its contents. If sending a statement to an AI provider is not acceptable to you, entering holdings manually avoids it entirely and produces the same portfolio.

5. Encryption, in transit and at rest

On the account side: sign-in and password-reset endpoints are rate-limited per IP address and per email address, sign-up and password reset are additionally protected by a Cloudflare Turnstile challenge, repeated failed logins trigger a captcha, and every upload endpoint sits behind an authenticated, email-confirmed session.

6. Who has access

BorderFolio is built and run by one person — Steffan Kharmaaiarvi, the founder (about). There are no employees, no contractors and no outsourced support desk, so the honest answer to "who could look at my portfolio" is: one named individual with production access, and nobody else.

7. Deleting a portfolio

In the app, open Manage portfolios and choose Delete portfolio. It takes effect immediately and removes, in one cascade: the positions, the contribution history, the monthly snapshots, the dividend records and the statement journal entries belonging to that portfolio.

The uploaded files behind those imports are already gone, or go with the next daily sweep at the latest. Deleting your only portfolio is allowed on any plan — you land back on the upload screen and can start over. Your monthly import allowance is deliberately not refunded by the delete, so a delete-and-recreate cycle is not a way to reset the counter.

8. Deleting your account

Self-service, in the app: Profile & Settings → Security → Danger zone → Delete account, confirmed by typing DELETE. No email to support, no waiting period, no retention offer. It is irreversible.

What the deletion does:

The deletion is built to succeed even when its dependencies do not: if the billing provider or the storage service is unreachable at that moment, your account is still erased and the remaining cleanup is retried hourly until it completes. An outage somewhere else must never leave you with an account you cannot delete.

Two things survive, and both should be said out loud:

Access, correction and portability requests under GDPR and comparable laws go to admin@borderfolio.app, as described in the Privacy Policy.

9. External processors

Everything outside this service that touches your data, and what each one gets. Production runs on Amazon Web Services in the United States, so this is where your data is processed regardless of where you live; for EEA, UK and Swiss users that transfer relies on the European Commission's Standard Contractual Clauses.

ProcessorWhat it receivesWhy
Amazon Web Services (US)Everything: the application host, the database, uploaded statement files, backupsHosting and storage
OpenAIThe contents of the documents you upload; portfolio figures and your configured tax residence for analysisExtracting holdings and transactions from an arbitrary statement layout; portfolio insights
FreemiusName, email and billing details you enter at checkoutPayments, subscriptions and licensing. Card details go to the payment provider and are never seen or stored by BorderFolio
CloudflareConnection metadata: IP address and browser signals, at DNS level and for the Turnstile challengeDNS, proxying and bot protection on sign-up and password reset
MailgunYour email address and the contents of transactional messagesConfirmation emails, password resets, monthly reports
SentryError reports and application logs: identifiers, stack traces, technical context — not request bodies, not statementsKnowing that something broke before you have to report it
GoogleOnly if you choose Sign in with Google: your email address and display nameOptional authentication
Market data providersTicker symbols and exchange codes onlyPrices, dividend data, instrument reference and FX rates. A quote request says which symbol, never who is asking
PostHog (EU region)Only if you accept cookies: page views, the channel you arrived from, and named product events. Autocapture and session recording are switched off and event text is masked — no ticker, holding or amount is ever sentKnowing which pages produce signups. See the Cookie Notice

The list is exhaustive as of the review date at the top of this page. A new processor with access to portfolio data would be added here, and the page's review date updated, before it goes live.

10. What this page does not claim

Security pages tend to imply more than the product has. These are the gaps, stated plainly, so you can judge the risk yourself rather than discovering the limits later.

Found a vulnerability? Email admin@borderfolio.app with enough detail to reproduce it, and expect a reply. There is no paid bounty programme; there is a fast fix and public credit if you want it. Please test only against your own account.

Common questions

Does BorderFolio ask for broker credentials?

Never a password. There is no broker login, password or OAuth connection anywhere in the product, and no aggregation service. The one direct integration — Freedom24 — uses an API key pair you generate in the broker's own cabinet: it is proven with a single read-only call before being stored, the secret is kept encrypted, only positions and trade history can be read, and you can revoke the keys in the cabinet at any time. Every other portfolio is built from a file you upload or holdings you type in. BorderFolio cannot place trades or move money anywhere.

Is the original statement file kept?

Temporarily. The file is stored in a private Amazon S3 bucket so a failed import can be re-run, and a job deletes every stored file older than 7 days. Deleting your account removes the files immediately rather than waiting for that sweep.

Is my broker account number stored?

No. A statement may print an account identifier, and the extractor reads it during the import to keep two accounts in the same document apart. It is not written to any table — there is no account-number column in the database.

Does the statement leave BorderFolio's servers?

Yes, once: the document is sent over TLS to OpenAI's API, which extracts the holdings and transactions from it. OpenAI's API terms state that data submitted through the API is not used to train their models. No other third party receives the document or its contents.

How do I delete a portfolio or my whole account?

A portfolio is deleted in the app under Manage portfolios, which removes its positions, contributions, snapshots, dividend records and statement history. The whole account is deleted under Profile & Settings → Security → Danger zone; that erases the profile, every portfolio, the uploaded files and all sessions, cancels an active subscription and is irreversible.

For advisersWhat applies when the statement you upload belongs to a client rather than to you. Broker statement importWhat is extracted from a PDF or CSV, and how overlapping statements are de-duplicated. Privacy PolicyThe formal notice: legal bases, your rights, international transfers, retention. FAQCredentials, duplicates, supported securities and the limits of the estimates. AboutWho builds this, and why it is a document-in product rather than a broker connection.
Start tracking free Explore a sample portfolio No broker passwords · uploaded files deleted within 7 days · delete your account yourself, at any time.