IBKR Flex-Import einrichten

WheelTrading liest Ihre Trade-, Dividenden- und Konto-Bewegungs-Historie aus dem IBKR Flex Web Service. Das ist die offizielle End-of-Day- Quelle von Interactive Brokers (mit Commissions, realisiertem G/V, Kostenbasis, Quellensteuer und Spin-Offs).

Sie brauchen genau drei Werte aus Ihrem IBKR-Account, die einmalig in WheelTrading eingetragen werden:

  1. Flex Token (1 Jahr gueltig)
  2. Transactions-Query-ID (eine kombinierte Query - empfohlen)
  3. (optional) zwei Einzel-Query-IDs (Trades + Dividenden) als Fallback

Alle drei Werte werden in WheelTrading verschluesselt gespeichert (Fernet/AES) und sind nur fuer den eigenen Account sichtbar. Anderen Usern (Multi-User-Betrieb) bleiben Ihre IDs verborgen - jeder User pflegt sein eigenes Tripel.

Empfehlung fuer neue User: Nur die Transactions-Query anlegen (Abschnitt 3). Die zwei Einzel-Querys sind seit Mai 2026 nicht mehr noetig - die kombinierte Query liefert alles und halbiert die IBKR-Aufrufe.

1. Flex Web Service in IBKR aktivieren

  1. Loggen Sie sich in Account Management (Lynx-/IBKR-Portal) ein.
  2. Reporting -> Settings -> Flex Web Service oeffnen.
  3. Klick auf "Configure" -> Service aktivieren.
  4. IBKR zeigt Ihnen einen langen alphanumerischen Flex Token an.

Diesen kopieren - er ist nur einmal sichtbar.

  1. In WheelTrading: Einstellungen -> Globals -> API-Keys ->

IBKR Flex Token -> einfuegen und Speichern.

Token-Gueltigkeit: 1 Jahr. WheelTrading warnt 14 Tage vor Ablauf per Banner; einfach in IBKR einen neuen Token erzeugen und in den Globals ersetzen.

2. Transactions-Query in IBKR anlegen

Reporting -> Custom Statements -> Flex Queries -> Create -> Activity Flex Query.

Name: beliebig, z.B. WheelTrading Transactions. Period: Last 365 Calendar Days (empfohlen) oder Year To Date. Format: XML, Version: 3.

Sections (Abschnitte) - bitte alle haken

In der deutschen IBKR-Maske heisst die Auswahl "Abschnitte (Bitte mehrere auswaehlen)". Setzen Sie folgende Haken:

Pflicht:

  • Trades
  • Bartransaktionen *(= Cash Transactions: Dividenden, Quellensteuer,

Ein-/Auszahlungen, Zinsen)*

  • Cash-Bericht (= Cash Report, Salden je Waehrung)
  • Provisionsdetails (= Commission Details, einzelne Fees)
  • Transaktionsgebuehren (= Transaction Tax, SEC- / Stempelfees)
  • Zinsdetails (Staffelung) (= Interest Accruals)
  • Forex-G&V-Details (= FX Transactions, USD<->EUR-Konvertierungen)

Stark empfohlen (Steuer-Vollstaendigkeit):

  • Kapitalmassnahmen *(= Corporate Actions, Spin-Offs etc. - Pflicht fuer

korrekte Kostenbasis bei VSNT, WBD, T-Mobile usw.)*

  • Veraenderung der aufgelaufenen Dividenden
  • Offene aufgelaufene Dividenden
  • Umsatzsteuer-Details

Brauchen Sie NICHT (nur Rauschen): Aufgelaufene Zinsen, IBSS, IBG-Notes, FDIC, HK IPO, CFD-Gebuehren, Debit-Card, Leihgebuehren, Fremdwaehrungssalden, Bezugsrechte.

Felder

Pro Section bietet IBKR detaillierte Feld-Listen an. Der einfachste Weg ist, in jeder gehakten Section auf "All" zu klicken (oder das oberste Haken-Symbol). WheelTrading nutzt aktuell folgende Pflichtfelder:

SectionPflichtfelder
TradestradeID, ibExecID, assetCategory, symbol, underlyingSymbol, currency, buySell, quantity, tradePrice, tradeDate, dateTime, proceeds, ibCommission, taxes, netCash, fxRateToBase, accountId, conid, notes, openCloseIndicator, multiplier, putCall, strike, expiry, settleDateTarget
Cash TransactionstransactionID, type, description, amount, symbol, isin, currency, fxRateToBase, exDate, payDate, reportDate, accountId, conid
Corporate ActionstransactionID, type, description, symbol, underlyingSymbol, dateTime, quantity, proceeds, costBasis, fifoPnlRealized, fxRateToBase, assetCategory, multiplier, currency
Commission DetailstradeID, commission, currency, dateTime
Mit "All" sind Sie auf der sicheren Seite. Fehlt ein Feld, ist das kein offensichtlicher Fehler im UI - aber Cost-Basis oder Steuerwerte koennen unvollstaendig sein.

Webhook-Feld

Das Feld "Webhook" auf der IBKR-Query-Seite leer lassen. WheelTrading nutzt das normale Pull-Verfahren (Polling alle 12 h); Webhooks sind ein Premium-Feature von IBKR und werden nicht unterstuetzt.

Speichern -> Query-ID notieren

Nach dem Speichern zeigt IBKR die Query-ID an (5- bis 7-stellige Zahl, z.B. 1532801).


3. Query-ID in WheelTrading eintragen

Einstellungen -> Globals -> API-Keys -> IBKR Flex Query-ID (Transactions) -> Query-ID einfuegen und Speichern.

Sobald gespeichert:

  • Der combined-flex-scheduler holt das XML zentral 2x taeglich

(Cron 06:30 + 18:30 UTC) und fuettert daraus parallel:

  • Trade-Historie + Cost-Basis (Steuer)
  • Dividenden + Quellensteuer
  • Corporate Actions (Spin-Off-Override fuer Kostenbasis 0)
  • Transaktionen / Cash-Bewegungen
  • Die zwei aelteren Einzel-Schedulers (Trades 06:15/18:15, Dividenden

06:00/18:00) ueberspringen Ihren User automatisch - kein Doppel-Call.

  • Bei jedem Lauf zeigt das Globals-Panel: Letzter Sync (mit Alter),

Ergebnis-Badge (+3 neu, 12 bekannt gruen / rot bei Fehler).

Tipp: Direkt nach dem ersten Eintragen den manuellen Import-Button (Globals -> IBKR-Datenimport -> "Trade-Historie importieren") druecken, damit Sie nicht auf den naechsten Cron-Tick warten muessen.

4. Multi-User-Hinweise

  • Jeder User pflegt sein eigenes Tripel (Token + Query-ID).
  • Ihre IDs werden niemals anderen Usern angezeigt oder geteilt.
  • Wenn Sie ein Familien-/Joint-Konto mit mehreren Login-Usern haben,

legen Sie pro WheelTrading-User einen eigenen IBKR-Sub-Account an und je Sub-Account eine eigene Query - sonst sehen alle dieselben Trades.

  • Der combined-flex-scheduler iteriert pro Sync-Tick alle aktiven User

sequentiell mit 2-3 Sekunden Abstand, um IBKRs 15-Minuten-Rate-Limit (Fehler 1018 Too many requests) zu schonen.

  • Bei 1018 wiederholt der Scheduler den Aufruf automatisch mit

exponentiellem Backoff (max. 3 Versuche).


5. Optional: getrennte Trades- und Dividenden-Querys (Legacy)

Wenn Sie die kombinierte Transactions-Query nicht nutzen wollen (z.B. weil Ihr IBKR-Plan keine grossen Querys erlaubt), koennen Sie wie frueher zwei einzelne Querys anlegen:

  • `WheelTrading Trades` (Trade Confirmation Flex Query, nur Section

Trades) -> Query-ID in IBKR Flex Query-ID (Trades)

  • `WheelTrading Dividends` (Activity Flex Query, nur Section

Cash Transactions) -> Query-ID in IBKR Flex Query-ID (Dividenden)

Sobald die Transactions-Query-ID gesetzt ist, ueberschreibt sie diese zwei Felder fuer den Auto-Sync. Die manuellen Import-Buttons nutzen weiter die jeweilige Einzel-Query, falls vorhanden.


6. Was passiert nach dem Import?

  • Historie: Alle Trades sichtbar unter Trades -> Historie.
  • Cost-Basis: Automatisch berechnet aus BUY / SELL / Assignment +

Premium-Adjustment der Wheel-Strategie.

  • Spin-Offs: Aktien aus Corporate Actions vom Typ SO bekommen

automatisch cost_basis = 0 (§ 20 Abs. 4a EStG); voller Erloes beim Verkauf wird als Gewinn ausgewiesen. Marker: "Spin-Off-Lot (Kostenbasis 0)" in der Description.

  • Steuern: Quellensteuer wird auf 15 % DBA-Satz gekappt und im Tab

Steuern -> Dividenden ausgewiesen.

  • Transaktionen (in Vorbereitung): Die kombinierte Query liefert

bereits alle Daten; die UI-Seite folgt.

Idempotent: Bekannte Eintraege werden als skipped gezaehlt; den Import koennen Sie beliebig oft wiederholen.


7. Haeufige Fehler

  • `Code 1001: Statement could not be generated`

Query ist frisch angelegt. IBKR braucht 5-15 Minuten zum Registrieren. WheelTrading retried automatisch 4x mit linearem Backoff. Wenn es weiter fehlt: Period in IBKR auf Last 365 Calendar Days setzen und speichern.

  • `Code 1018: Too many requests`

15-Minuten-Rate-Limit getroffen (z.B. weil Sie zusaetzlich manuell importiert haben). Einfach 15 Min warten.

  • Token expired

Flex-Tokens sind 1 Jahr gueltig. Neuen Token in IBKR erzeugen, in Globals ersetzen.

  • Query liefert 0 Trades

Period falsch (z.B. Today statt Last 365 Days) oder Section Trades nicht angehakt.

  • Spin-Off-Aktie hat negativen G/V im Steuertab

Section Kapitalmassnahmen fehlt in der Query. Edit in IBKR -> ergaenzen -> in WheelTrading manuellen Import erneut druecken.

  • `Code 1019: Statement generation in progress`

IBKR ist gerade dabei, die Daten zu erstellen. Scheduler wartet automatisch ab; bei manuellen Imports einfach 30 s spaeter erneut.