Frequently asked questions about the IBKR tax return with BubbleTax

Sorted by topic, the way they reach our support inbox. Tax statements cite their legal basis. If your question is missing, write to us.

Exporting from Interactive Brokers

What exactly do I need to export from IBKR for this to work?

A Flex Query in XML format from IBKR account management. It contains nine sections, including trades at execution level, the statement of funds, corporate actions, open positions and transfers; every field must be enabled in each section. IBKR limits the query period to 365 days, so export year by year and as many years as possible so that all acquisition costs are included. You will find an illustrated guide on the upload page and in the tax knowledge section.

I cannot find the Flex Query. Where do I click?

Four steps in the IBKR Client Portal lead to the file: log in, open Performance & Reports in the main menu and then Flex Queries, create a new query with the plus sign next to Account Activity Flex Query, add the nine sections and save, then run the query from the list and download the export as XML. Menu labels depend on your language setting at IBKR; in German they are Performance & Berichte, Flex-Queries and Kontoumsatz-Flex-Query. The guide under Tax Knowledge walks through the nine sections and their settings with a tickable checklist, and there is a video tutorial as well; the setup is a one-time step of about 15 to 30 minutes. Introducing brokers such as LYNX or CapTrader use the same account management.

My export is a CSV, not an XML. Does that work too?

No, BubbleTax reads only the XML format of the Flex Query. Open your query at IBKR, set the format to XML in the delivery configuration and run the export again; sections and fields stay as they are. Activity statements as PDF or CSV are not processed either.

My export stops in the middle of the year. What do I do?

Export the missing period from IBKR and upload the additional XML file to your tax year. BubbleTax checks your exports for gaps before calculating and shows you exactly which period is missing. Without that data the calculation does not start, because purchases or sales would be missing and the FIFO matching would be wrong. Gaps in which only cash moved do not block the calculation.

I have two IBKR accounts. Do I have to pay twice?

No, as long as your plan covers the accounts: Lite and Basic cover one account, Pro up to two accounts, Ultimate any number. BubbleTax detects the matching plan from your data on upload. The accounts may also belong to different people. If positions were transferred from an earlier IBKR account, upload its exports as well, because that is where the original purchases are.

Does BubbleTax also work for LYNX, CapTrader and other introducing brokers?

Yes. LYNX, CapTrader, BANX, MEXEM, AGORA direct and WH SelfInvest use Interactive Brokers as their custodian. The Flex Query has the same format, the same fields and the same transaction types there, and BubbleTax processes it identically. From the perspective of German tax law there is no difference to a direct IBKR account.

CapTrader tax returnLYNX tax return

Preview, purchase and plans

Can I see the result before I pay?

Yes. After the upload BubbleTax calculates everything and shows you the preview free of charge and without payment details. The preview contains your complete report; only some figures are partially redacted and the detail section is shortened. You choose a plan only when you want to download the full report as a PDF.

Which plan fits me if I traded a lot?

You do not have to decide that yourself: BubbleTax detects the plan from your uploaded data, based on the instruments traded, the number of transactions and the number of accounts. Lite covers pure stock portfolios up to 200 trades, Basic stocks and ETFs up to 500 trades, Pro options up to 2,000 trades and two accounts, Ultimate futures and CFDs without limits. You see the detected plan in the preview before you pay.

Do I pay per year or per report?

Per tax year, once. There is no subscription and no automatic renewal; you decide anew for the next tax year. Within a purchased tax year you can upload and recalculate as often as you like, for example when additional data arrives, at no extra cost.

I have three open tax years. What does that cost in total?

Each tax year is a separate purchase at the plan its data requires; the total is the sum of the three individual plans on the pricing page. Still upload all available years, including those for which you do not buy a report: they supply the acquisition costs for later sales. Uploading and the preview are free.

Can I get my money back if the result does not fit?

Yes: if we find an error in the calculation that we cannot fix, we refund the purchase. Before that, the preview applies: you see the result before you buy, and the paid report contains exactly the figures of the preview, only complete and unredacted. If you find something in the preview or the report that is not right, write to support@bubbletax.de; we check the calculation and provide a corrected report. If your portfolio outgrows the purchased plan, you only pay the difference to the higher plan.

Do I get an invoice?

Yes, automatically by e-mail after payment, with German VAT shown. This applies to private individuals as well as company accounts.

What does preparing my IBKR data cost at a tax advisor?

Manual preparation of IBKR data by a tax advisor quickly costs several hundred euros depending on transaction volume, and considerably more for active portfolios. Many firms do not know the specifics of international brokers in detail. BubbleTax takes over the calculation; you can hand the finished report directly to your tax advisor, who then only reviews instead of calculating.

What is calculated

What does BubbleTax make of my IBKR data?

Your Flex Query export becomes a finished tax report for the German income tax return: gains and losses under FIFO, conversion at ECB rates, dividends and interest with withholding tax, corporate actions, foreign currency gains, funds with partial exemption and advance lump sum (Vorabpauschale), options, futures and CFDs. Every value sits on the line of Anlage KAP, KAP-INV or SO where it belongs. You receive two PDFs: the tax summary with the form values and the detail report with every single transaction. One report covers everything that occurs in an IBKR account; no rework is intended.

Why can I not simply use the IBKR report?

Most people mean the German Tax Report that IBKR provides for customers in Germany. It is explicitly informational and does not replace a tax certificate. It makes assumptions that do not fit every investor, and it does not treat all asset classes in the same depth. BubbleTax calculates from the same raw data under German law, documents every assumption in the report and places the results on the lines of Anlage KAP, KAP-INV and SO. That is why several introducing brokers have decided on a partnership with BubbleTax and recommend our report to their customers: MEXEM, WH SelfInvest, AGORA direct and ProRealTime.

Which income and transactions are covered, and which are not?

Covered are dividends, interest, fund distributions with advance lump sum and partial exemption, gains and losses from stocks, ETFs, bonds, options, futures and CFDs, foreign currency gains from interest-bearing currency accounts, corporate actions such as splits, spin-offs and mergers, return of capital, option exercises and cash settlements, as well as private sales transactions under section 23 EStG, for example Xetra-Gold. Not supported are MLPs (master limited partnerships), LPs and royalty trusts; their distributions are particularly complex for tax purposes and require manual rework, ideally with a tax advisor.

Does BubbleTax calculate FIFO the way the tax office expects?

Yes. Under section 20 (4) sentence 7 EStG, where several identical securities are held in one account, the securities acquired first are deemed to be sold first. BubbleTax sorts all purchases per security chronologically, reflects splits and spin-offs in the holdings and matches every sale against the oldest purchases. In the detail report you see for every sale which purchase was assigned to it, with date, quantity and price.

Where do the exchange rates come from, and for which day?

BubbleTax uses the reference rates of the European Central Bank. Every amount is converted at the rate of the day on which it arises for tax purposes: acquisition costs at the purchase date, sale proceeds at the sale date, dividends and interest at the date of receipt. The detail report names the rate and its date for every entry so that you can recompute every euro figure.

Are my dividends offset against withholding tax?

The report shows your dividends gross and, separately next to them, the foreign withholding tax deducted, per country. The credit itself is granted by the tax office under section 32d (5) EStG; the report supplies the creditable amount for line 41 of Anlage KAP (2025 form). BubbleTax caps the creditable amount per country at the rate provided in the double taxation treaty, at most 25 percent.

I transferred a portfolio from another broker. Does BubbleTax know the acquisition costs?

Only partly. The Flex Query export shows the transfer as an inbound delivery, but not the original purchase. BubbleTax detects positions acquired before your oldest uploaded data and asks you for purchase date and price before calculating; you enter them once and they stay stored for the tax year. If the transfer came from an earlier IBKR account, also upload its old exports, because that is where the purchases are.

What happens to losses, and are the loss pots kept separate?

The report keeps losses separate the way the form requires: losses from stock sales go to line 23 of Anlage KAP, all other losses to line 22 (2025 form). The background is section 20 (6) EStG: stock losses may only be offset against gains from stock sales, while all other losses from capital assets can be offset among themselves. There is no longer a separate pot for forward transactions and no 20,000 euro limit; the Annual Tax Act 2024 removed them retroactively. The offsetting itself, including across years and other accounts, is done by the tax office; the report supplies the separated amounts for it.

Options, futures, CFDs, foreign currency

I trade options. How are writer premiums and expiry treated?

Writer premiums are income under section 20 (1) no. 11 EStG and taxable in the year you receive them. If you close the position, the premium paid counts as negative income at the time of payment; BubbleTax nets premium and closing trade per option series (underlying, expiry, type and strike) and tax year, not per underlying. If a written option expires worthless, the premium received stands and no further event arises. If a purchased option expires worthless, a loss equal to the premium paid arises, which the report shows as a loss from forward transactions.

I trade spreads and other combinations. How are the individual legs calculated?

Each leg is a separate transaction. BubbleTax keeps the FIFO stack per option series (underlying, expiry, type and strike) and account; for tax purposes a vertical spread therefore consists of two positions that are opened, closed, exercised or expire separately. The report does not evaluate the combination as a strategy and does not net across legs. The premium of the written leg is writer income under section 20 (1) no. 11 EStG, the purchased leg is a forward transaction under section 20 (2) sentence 1 no. 3 EStG; both results appear in Anlage KAP on the lines of the respective tax year.

I had an option that ran across the year end. Is it assigned correctly?

Yes. Every entry is assigned to the tax year in which the money flows: a writer premium received in December belongs to the old year, the closing trade in January counts as negative income in the new year (section 20 (1) no. 11 EStG). For purchased options the result is recorded with the closing trade, exercise or expiry in the new year, while the acquisition costs come from the previous year. That is why we need the exports of both years; if the previous year is missing, the openings are missing.

Are futures and futures options covered?

Yes. Futures and options on futures are covered and treated as forward transactions under section 20 (2) sentence 1 no. 3 EStG: the cash settlement per contract is gain or loss, converted at the ECB rate. The report presents the results and assigns them to the lines of Anlage KAP. Futures require the Ultimate plan.

I traded CFDs. Are they included?

Yes. CFD results are treated as forward transactions and appear together with the other derivatives in Anlage KAP; the financing costs of CFD positions from the export are also taken into account. CFDs require the Ultimate plan. As with all instruments, you see every single entry with rate and date in the detail report.

How does BubbleTax treat USD that I left in the account and exchanged later?

As a foreign currency balance with its own FIFO stack per currency and account. Every deposit or credit in USD is recorded with its date and ECB rate; every exchange into euros and every purchase of a security with those USD counts as a disposal, valued at the rate of that moment, and the oldest holdings go first. The report shows the difference between acquisition and disposal rate as a foreign currency gain or loss. BubbleTax treats all foreign currency balances uniformly as capital income under section 20 (2) sentence 1 no. 7 EStG and assigns them to Anlage KAP. This is the conservative reading without the one-year period; it applies regardless of whether the account earned interest, and the report's methodology section says the same. Whether a private sale transaction under section 23 EStG with its one-year period applies in your case instead (BMF letter on withholding tax, para. 131) is not checked by BubbleTax; that assessment rests with you or your tax advisor. Every foreign currency movement is listed in the detail report with its rate and matched holding, so the calculation remains traceable.

Funds, ETFs and the InvStG

Is the partial exemption for my ETFs applied automatically?

For European UCITS funds, yes: the category comes from WM Datenservice, the same source banks use, and the partial exemption under section 20 InvStG is applied automatically: 30 percent for equity funds, 15 percent for mixed funds, 60 percent for real estate funds and 80 percent for foreign real estate funds. For US ETFs and US closed-end funds there is no reliable classification, so you choose the category yourself after the upload. Your choice flows into all values of the report.

How is the advance lump sum calculated, and what if I have already paid tax on it?

The advance lump sum (Vorabpauschale) under section 18 InvStG is the amount by which a fund's distributions in the calendar year fall short of the base income; the base income is the redemption price at the start of the year multiplied by 70 percent of the base rate, capped at the increase between the first and the last redemption price of the year plus the distributions (section 18 (1) sentences 2 and 3 InvStG); pro rata per month for purchases during the year (section 18 (2) InvStG). BubbleTax calculates it automatically from your holdings and distributions, including partial exemption. It is deemed received on the first working day of the following year and therefore appears in the report of the following year. At IBKR no German tax was withheld on it, so there is nothing that would be taxed twice.

My ETF shows 0 percent partial exemption in the report. Why?

The partial exemption depends on the fund's category, not on its name. 0 percent means the fund is classified as an other fund, for example because its investment terms do not continuously require more than 50 percent equity participations (section 2 (6) InvStG), or that a US fund has not yet been classified by you. For European funds we adopt the WM Datenservice classification unchanged. For US funds you set the category yourself after the upload; the justification rests with you. We do not assess individual funds.

I hold a US closed-end fund. Is that a fund within the meaning of the InvStG?

BubbleTax does not decide that for you. For US closed-end funds there is no classification by WM Datenservice because they are not regular European investment funds. After the upload you choose in which category (equity fund, mixed fund, other fund) the fund is treated, and BubbleTax calculates accordingly. Whether a specific vehicle falls under the InvStG is something to clarify with your tax advisor if in doubt.

Can I change the partial exemption category myself?

Yes. After the upload you set the category equity fund, mixed fund or other fund yourself for funds without a WM classification, above all US ETFs and closed-end funds. BubbleTax carries the selection through the entire calculation, from distributions to sales and the advance lump sum; no rework in the report is needed. Responsibility for this classification rests with you; change it only with a justification you can defend to the tax office.

Anlage KAP and ELSTER

Which value goes into which line of Anlage KAP?

The report contains a chapter that reconciles the results to the tax forms, listing every value with line number and label from the official form, separated into Anlage KAP, KAP-INV and SO. For Anlage KAP 2025 these are above all line 19 (foreign capital income), line 20 (gains from stock sales contained therein), line 22 (losses other than stocks), line 23 (losses from stock sales) and line 41 (creditable foreign taxes). Because your account is held with a foreign broker, the income belongs in the line for foreign capital income. The complete mapping is on the product page.

Do I also need KAP-INV and Anlage SO?

You need Anlage KAP-INV as soon as you hold units in investment funds or ETFs: distributions (lines 4 to 8), advance lump sums (lines 9 to 13) and gains on disposal (lines 14 to 28) are entered there per fund type, each before partial exemption (2025 form). Anlage SO concerns private sales transactions under section 23 EStG, for example Xetra-Gold. Foreign-currency gains always go to Anlage KAP in the report, because it treats all currency balances as interest-bearing (see the question on USD balances). The report only outputs the forms for which you have values.

Does BubbleTax transmit the data directly to ELSTER?

No. There is no ELSTER interface; BubbleTax neither prepares a tax return nor transmits data to the tax office. You transfer the values from the reconciliation into ELSTER or your tax software yourself, line by line, or hand the report to your tax firm. You keep the report itself as evidence.

Will the tax office accept this report?

Nobody can promise that a tax office will accept a report, and neither can we. The report is built to be reviewed: it discloses every calculation with its legal basis, traces every figure back to the individual transaction and names the ECB rate with its date for every conversion. For complete documentation we recommend keeping the corresponding account statements or broker documents at hand as well.

The tax office has questions. What do I send?

There are two reports. The summary contains the values for the lines of Anlage KAP, KAP-INV and SO. The detail report breaks down every transaction: which purchase was matched with which sale, which ECB rate was used and how the gain or loss arose; it therefore serves as the derivation of the calculation. Whether the tax office wants to see the summary, the detail report or additionally the Flex Query exports from IBKR as original documents is best clarified with the responsible tax officer if in doubt.

Why do I not get a tax certificate from IBKR?

Interactive Brokers is based in Ireland and is not a German credit institution. It therefore withholds no German flat-rate tax and issues no annual tax certificate under section 45a EStG. You are obliged to declare your capital income yourself in Anlage KAP. The same applies to introducing brokers such as LYNX, CapTrader or BANX that use IBKR as their custodian.

Does IBKR report my account to the tax office?

Under the automatic exchange of information (CRS), IBKR Ireland reports certain account data to the German tax authorities, including the existence of the account, the account balance and the total of capital income. These are not tax-prepared values: FIFO calculation, ECB conversion and the separation of losses under German law remain your task. That is exactly the part the report takes over.

Limits, account and data protection

Does BubbleTax replace my tax advisor?

No. BubbleTax calculates and documents, it does not advise; using it does not replace tax advice and is not assistance in tax matters within the meaning of the German Tax Advisory Act. For individual questions, for example the classification of a fund or loss carryforwards, a tax advisor is the right address. You can hand the report directly to them; the manual preparation of the IBKR data is then no longer needed.

What happens if I find an error in the report?

Write to support@bubbletax.de with the tax year and the position concerned. We check the calculation; if the error is ours, we correct it and provide the report again at no extra cost. You can also recalculate a purchased tax year yourself as often as you like, for example after adding missing exports. Responsibility for the correctness of your return stays with you; that is why the report is built so that you can check every figure.

How long do you keep my data, and how do I delete it?

Your last successful report per tax year and the associated XML files stay stored in encrypted form as long as your account exists, so that you can download it again later. Older versions and failed processing runs are deleted automatically after 30 days. Under My Data you see what is stored, and in the settings you delete your account and its data with one click; backups follow within 7 days. Invoices must be kept for 10 years (section 147 AO). Details are on the page Data protection explained.

Who can see my portfolio data?

Nobody but us. Your tax and portfolio data goes to no AI providers, no advertising platforms and no data brokers; the calculation is a conventional program that runs entirely on our servers. The calculation runs on Hetzner servers in Germany; the database holding your account, files and results is operated by our processor Neon under a data processing agreement pursuant to Art. 28 GDPR. Which providers see what is listed on the page Privacy, explained. Transmission and storage are encrypted. From your export we process only the fields needed for the tax calculation.

Why do I need an account at all?

Because a tax report spans several years: the acquisition costs from earlier exports, your purchase data for legacy holdings and your fund categories must be there again for the next tax year, and you want to download or recalculate your purchased report later. The account only needs an e-mail address; you sign in with a login link or a passkey. You can delete it yourself at any time in the settings.

For tax firms

Do you approach our clients or sell them anything?

No. We do not contact your clients, we do not advertise our own plans to them, and we do not appear in your engagement. The invoice goes to your firm. What you charge your clients is up to you.

How do I spot-check a report without recalculating it myself?

Every value in the report is resolved down to the individual transaction: acquisition date, price, conversion rate with its date and legal basis. You pick a position, follow the FIFO chain back to the purchases and compare the entries with the client's Flex Query export.

What does it cost per client, and is there a minimum purchase?

Billing is per billing unit, that is per client account set and tax year, in the tiers Pro and Ultimate. There is no base fee for the firm account, no minimum purchase and no term. The invoice arrives monthly as a PDF with ZUGFeRD data.

Can several colleagues in the firm work with the same clients?

Yes. Your firm is set up as an organisation; all activated members see the same clients, orders and reports. Tell us the e-mail addresses of additional colleagues and we activate them for your firm.

Who is liable if a calculation is wrong?

The tax assessment and the declaration to the tax office remain with you. BubbleTax calculates and documents but does not advise. The report is built so that you can check every figure down to the transaction. If you find an error, report it to us: we correct the calculation and provide the report again. Otherwise our terms and conditions apply.

For brokers

What do we need to provide technically, and what happens in our system?

That depends on the tier. With the referral and discount code you provide nothing; your clients upload their Flex Query export to BubbleTax themselves. Co-branding adds a landing page within your presence, and with white label the report appears under your brand. Only in the embedded tier is the report generated in your client portal and triggered from your system; we clarify the effort for that in a conversation, because it depends on your system.

How quickly could we start with the simplest tier?

Within days. The referral with discount code requires no technical effort: you receive a code for your clients and recommend BubbleTax, everything else runs on our platform. The further tiers build on the same calculation, so a later switch is possible.

Who supports our clients with questions about the report?

Questions about the calculation and the report are answered by our support at support@bubbletax.de; your client does not need to call you for that. For everything concerning the brokerage account you remain the contact. How the support path looks for white label and embedded is something we define together in a conversation.

Can we offer this under our own brand?

Yes. In the white label tier the tax report appears under your brand; your client stays in your world and we remain in the background. In the embedded tier the report is generated directly in your client portal and is your feature from the client's point of view. Terms and timeline are clarified in a conversation.

Where is our clients' data stored, and who is the data controller?

Processing runs on Hetzner servers in Germany; the database is operated by our processor Neon under a data processing agreement pursuant to Art. 28 GDPR, and the full list of providers is on the page Privacy, explained. No AI providers, advertising platforms or data brokers are involved, and transmission and storage are encrypted. With referral and co-branding your client contracts with BubbleTax GmbH, which is therefore responsible for the processing. For white label and embedded we define the roles contractually to match your setup.

Question missing?

Write to us via the contact page or directly at support@bubbletax.de. We usually reply within one to two working days.