What is supported
capi.tax processes exports from Interactive Brokers (including via LYNX or CapTrader), Tastytrade and DEGIRO (beta) and turns them into the figures for the Anlage KAP and Anlage KAP-INV. This page shows honestly what works today, what works only in part and what is missing – and what you have to do yourself in each case. The table under "Overview" is the same as on the home page.
Which brokers and files are supported?
- Interactive Brokers: the
Activity StatementasCSV, in German or English, or a Flex Query asXML. Both give the same tax result. Guide: Interactive Brokers. - LYNX, CapTrader and other introducing brokers: your account technically sits at Interactive Brokers. You export there and choose Interactive Brokers as the broker in capi.tax.
- Tastytrade: the transaction history with
All Transactions, asCSV. Tastytrade has no Flex format. Guide: Tastytrade. - DEGIRO (beta): two
CSVfiles, Transactions and Account statement. Stocks and ETFs, dividends, withholding tax and interest; no options. Guide: DEGIRO.
capi.tax does not read other brokers, such as German banks, neobrokers or crypto exchanges. With a German broker you usually don't need the tool anyway: it pays the tax itself and gives you a tax certificate.
Tax years: from 2021 up to the most recent completed year. Rules and form lines follow the year you select.
One account per calculation. If you have several accounts, calculate each one separately and add up the Anlage KAP figures yourself; the saver's allowance applies only once across all accounts. Several files of the same account – such as earlier years – can be uploaded together. capi.tax finds purchases from earlier years when you upload those years' files as well, or one file covering several years – see Upload earlier years. Otherwise you add them as an opening position.
Overview
| Topic | IBKR | Tastytrade | DEGIRO | Note |
|---|---|---|---|---|
| Data Formats | ||||
| CSV Export | ✓ | ✓ | ✓ | |
| XML Flex Query | ✓ | ✕ | ✕ | Supported for Interactive Brokers. Tastytrade has no Flex format. |
| Several years or accounts in one run | ✕ | ✕ | ✕ | Several years of the same account: yes (prior-year holdings when the history can be verified). Several accounts: one per calculation. |
| Transaction Types | ||||
| Stocks & ETFs | ✓ | ✓ | ✓ | |
| Options | ✓ | ✓ | ✕ | DEGIRO (beta): options are not calculated; such rows are reported with a notice. |
| Bonds & T-bills | ✓ | ✕ | ✕ | IBKR: purchase, sale and repayment at maturity. Short sales of bonds are skipped with a notice. Bonds are calculated only from IBKR exports. |
| Futures | ~ | ~ | ✕ | The contract size (multiplier) is not always detected; you then get a notice. Check the result. DEGIRO: not calculated; such rows are reported with a notice. |
| Dividends | ✓ | ✓ | ✓ | |
| Interest | ✓ | ✓ | ~ | DEGIRO: credit interest of flatexDEGIRO Bank is booked by interpretation as German interest (line 18). |
| Corporate Actions | ✕ | ✕ | ✕ | Not carried forward under § 20 Abs. 4a EStG. Tastytrade: split rows are skipped with a notice. Interactive Brokers: not applied; flagged with a notice for Flex XML, not for the CSV. DEGIRO: reported with a notice and left out of the calculation. |
| Cryptocurrencies | ✕ | ✕ | ✕ | Not supported (Anlage SO). Crypto trades are skipped with a notice; crypto securities and futures count as usual. |
| Tax Features | ||||
| FIFO Calculation | ✓ | ✓ | ✓ | |
| Currency Gains | ~ | ✕ | ✕ | IBKR: FIFO per currency, classified under § 23 or § 20, Anlage SO amount. Tastytrade: not calculated, because the export lacks the euro price of the deposited dollars. DEGIRO: not calculated. |
| Withholding Tax | ✓ | ✓ | ✓ | |
| Partial Exemption | ✓ | ✓ | ✓ | You set the fund type yourself; it is not in the broker export. |
| Vorabpauschale | ✓ | ✓ | ✓ | You enter your fund's redemption prices under Adjustments; capi.tax calculates the Vorabpauschale from them. |
| Loss Offsetting | ✓ | ✓ | ✓ | |
| Option Assignment | ✓ | Planned | ✕ | Tastytrade: assignment and exercise with share delivery are read; cash settlement not yet. DEGIRO: options are not calculated. |
| Adding opening positions | ✓ | ✓ | ✓ | |
| Export Formats | ||||
| KAP-Ready Report | ✓ | ✓ | ✓ | |
| Anlage KAP-INV | ~ | ~ | ~ | Lines 4–14, 17, 20, 23 and 26 for units bought from 2018, gross per fund kind. Not covered: units bought before 2018. You set the fund kind yourself. |
| Excel Export | ✓ | ✓ | ✓ | |
| PDF Export | ✓ | ✓ | ✓ |
✓ Full support · ~ Partial support · Planned: not included yet · ✕ Not supported
Which instruments and transactions are covered?
- Shares: buys and sells by FIFO, long and short, with fees in acquisition cost and proceeds. Share losses go into their own share-loss pot.
- ETFs and funds: sales and distributions go into the Anlage KAP-INV, split by fund type. The fund type is in no broker export; you set it yourself. See Partial exemption.
- Options: bought options as Termingeschäfte, written options as option writing (Stillhaltergeschäfte), including closing trades and expirations – also across the year end (premium in the year written, buyback in the year paid). Exercise and assignment with share delivery are handled for both brokers. See Options.
- Futures and futures options: classified as Termingeschäfte, but only partly supported.
- Bonds and T-bills (Interactive Brokers): purchase, sale and repayment at maturity by FIFO, in euros at each day's rate. Gains and losses go in line 19 (German issuers: line 18), losses also in line 22, in the general loss pot. Accrued interest received is part of the sale proceeds. See Bonds and accrued interest.
- Dividends: gross, with the foreign withholding tax withheld. Dividends of German shares with German tax deducted are settled and go on no line; without tax deducted, in line 18 – see Dividends of German shares.
- Interest: credit interest as capital income; at Interactive Brokers including December's interest booked in early January, in the right year. Accrued interest paid on a bond purchase reduces your interest. Margin interest is not deductible under § 20 Abs. 9 EStG and is left out. See Interest.
Which tax rules does capi.tax apply?
- FIFO: sales are matched to the oldest purchases of the same position – by statute for securities in collective custody (§ 20 Abs. 4 Satz 7 EStG), for options and futures by analogy under administrative practice. See FIFO.
- Bundesbank rates: every foreign-currency amount is converted to euros at the rate of its own day.
- Loss offsetting: share losses only against share gains (§ 20 Abs. 6 Satz 4 EStG; whether this restriction is constitutional is pending at the Federal Constitutional Court, 2 BvL 3/21). Share gains, by contrast, can absorb other losses. Termingeschäft losses without the former €20,000 cap, which JStG 2024 repealed for all open cases. See Loss offsetting.
- Withholding tax: credited under § 32d Abs. 5 EStG, capped at the rate of the relevant tax treaty. See Withholding tax.
- Partial exemption under § 20 InvStG, once you have set the fund type.
- Vorabpauschale under § 18 InvStG: under Adjustments → Record Vorabpauschale you enter, per fund, the fund type, the redemption prices at the start and end of the year, the distributions per unit and, per purchase, the units held on 31 December. For units bought during the year you give the purchase month: the Vorabpauschale is reduced by one twelfth for each full month before the purchase (§ 18 Abs. 2 InvStG). capi.tax calculates it with that year's Basiszins.
- Form lines of the Anlage KAP per tax year, including the separate lines for option writing and Termingeschäfte up to 2024.
You can export the results as PDF, Excel, CSV or JSON, with an audit trail down to the single booking.
What is not supported – and what do you do instead?
The principle: what capi.tax cannot calculate reliably stays out of the totals and gets a notice. Nothing is guessed silently.
| Not supported | What happens | What you do |
|---|---|---|
| Exercise of an option bought in a previous year, without that year's file | The shares run at the bare strike, the premium is missing | Upload that year's file, or add the premium to the acquisition cost (call) or the proceeds (put) yourself |
| Corporate actions (splits, spin-offs, mergers) | Stock splits are carried forward (Tastytrade: only forward splits with a whole-number ratio; IBKR Flex: when the ratio is readable); other corporate actions are skipped with a notice and the IBKR CSV does not read them. Exception: bond repayments are calculated | For spin-offs, mergers and bonus shares, carry quantity and cost basis forward yourself, see Corporate actions |
| Currency gains (non-interest-bearing balance: § 23 EStG, Anlage SO; interest-bearing: Anlage KAP on the disputed view of the tax authorities) | Interactive Brokers: calculated (FIFO per currency), shown in the “Currency gains” section on the KAP Form tab, not yet in the Anlage KAP lines. Tastytrade: not calculated | Transfer the amounts yourself; for Tastytrade work them out yourself, see Currency gains |
| Cryptocurrency | Crypto trades are skipped with a notice; crypto securities and futures count as usual Anlage KAP transactions | Declare directly held crypto in the Anlage SO yourself. Physically backed crypto ETNs may fall under § 23 EStG like Xetra-Gold (BFH VIII R 35/14, VIII R 4/15), and the InvStG status of US spot crypto ETFs is unclear – check such products individually |
| Short sales of bonds, convertible and reverse convertible bonds settled in shares, bond defaults | Skipped with a notice; the bond stays open | Determine the gain or loss yourself, see Bonds and accrued interest |
| Several accounts in one calculation | One account per run | Calculate each account separately, add the figures |
| Purchases before the tax year without a complete history | The sale shows as unmatched and is missing from the totals | Upload the earlier years' files or add an opening position |
| Fund units bought before 2018 | Not covered in the Anlage KAP-INV | Clarify with a tax advisor |
| Cash settlement of written index options | Booked like a closing trade; for 2021–2024 the loss line may differ | Check the result and the line |
| Return of capital | No automatic classification | The determination procedure at the Federal Central Tax Office (§ 27 Abs. 8 KStG) exists only for EU/EEA companies and is applied for by the company. For US companies you must prove the return of capital in your own assessment (BFH VIII R 47/13, VIII R 73/13, I R 15/16); a US "return of capital" is not automatically an Einlagenrückgewähr |
| Loss carryforward, saver's allowance, church tax, Günstigerprüfung | Not included; capi.tax shows the tax base | The tax office applies them from your return and assessment |
How do I notice that something is missing?
After uploading, your result shows three kinds of notices:
- Skipped rows: the export contains something capi.tax deliberately does not calculate, such as a split without a certain ratio or a crypto trade. The notice gives the number of rows and examples with date and symbol.
- Unmatched transactions: a sale is missing its purchase, or a position its closing. You find them in the Adjustments tab and can complete them there with one click on "Resolve". Positions still open at year-end are normal. Written options don't appear there: capi.tax books their premium in the year written.
- Funds without a fund type: a security looks like a fund, but its type is unknown. Without your input it would be treated as a share and lose its partial exemption.
A notice is not a bug in the tool but a point where your decision is needed. Clear them all before you copy figures into your tax return.
What you need to add yourself
Some facts are in no broker export.
- Add them in capi.tax: the fund type for the partial exemption, missing opening positions and the redemption prices for the Vorabpauschale – see What we need from you.
- Handle them yourself in the tax return: currency gains on Tastytrade and transferring the calculated amounts (currency gains), corporate actions, crypto, and how to treat a return of capital.
If something is missing that is not listed here, check the notices in your result first. Every skipped row is named there with date and symbol. Try it with your export: upload a file.