Trading 212: Stocks, ETFs, ISA icon

Trading 212 wallets, ISA allowance and pie holdings

Trading 212 · Banking

Trading 212: Stocks, ETFs, ISA is Trading 212's Android brokerage for European retail investors. After email or SSO sign-in, customers switch between Invest, Stocks ISA, Cash ISA, SIPP, CFD and Crypto accounts, place commission-free stock and ETF tickets (including value orders), build AutoInvest pies, borrow shares for lending income, park uninvested cash on daily interest, spend on a 212 debit card with cashback and round-ups, and fund or withdraw over bank transfer, Adyen cards and Google Pay. Charts (including TradingView), watchlists, economic calendar, share-lending and in-app support sit around the order ticket. The client ships as com.avuscapital.trading212 (build 8.52.0) under dealers AVUS, AVUS_UK and T212_CY, competing with Trade Republic, Scalable Capital, eToro and Revolut Invest in Germany, France, Spain and the wider EEA.

Invest-account freeFunds sit beside blockedFunds and pendingDeposit on the cash strip, while a Stocks ISA row carries isaAllowance against the current taxYear. AutoInvest pies expose each slice as ticker, quantity, actualWeight and targetWeight with unrealised ppl; CFD summaries add equity, margin and leverage. Share-lending stamps annualPercentYield on lent inventory, and a 212 card reports cardStatus with cardLastFour.

Tax-wrapper bots, pie rebalancers, CFD margin desks and card-spend monitors consume those fields. openData Studio turns them into callable open data.

Screenshots

  • Trading 212: Stocks, ETFs, ISA screenshot 1
  • Trading 212: Stocks, ETFs, ISA screenshot 2
  • Trading 212: Stocks, ETFs, ISA screenshot 3
  • Trading 212: Stocks, ETFs, ISA screenshot 4
  • Trading 212: Stocks, ETFs, ISA screenshot 5
  • Trading 212: Stocks, ETFs, ISA screenshot 6
  • Trading 212: Stocks, ETFs, ISA screenshot 7
  • Trading 212: Stocks, ETFs, ISA screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Mobile sign-in

    POST /v1/sessions/mobile-signin openbanking

    Exchanges email plus password (or a stored loginToken) for customerSession / accountSession cookies, the customer row (uuid, dealer, lang) and the current account (tradingType, currencyCode, readyToTrade).

    Auth: Unauthenticated. Email plus password (or a stored login token / SSO) in the sign-in body. The response's customerSession and accountSession are kept as a session cookie; later calls also send a client-descriptor header (platform, app version, accountId).

    • email
    • password
    • rememberMe
    • customerSession
    • accountSession
    • loginToken
    • backupCode
    • serverTimestamp
    • customer.id
    • customer.uuid
    • customer.email
    • customer.dealer
    • customer.lang
    • customer.registerDate
    • account.id
    • account.type
    • account.tradingType
    • account.status
    • account.currencyCode
    • account.readyToTrade
    • account.createdDate
    • account.lastSwitchedDate
    • account.registerSource
    POST /v1/sessions/mobile-signin HTTP/1.1
    Content-Type: application/json
    X-Client-Info: platform=android,appVersion=8.52
    
    {
      "email": "[email protected]",
      "password": "••••••••",
      "rememberMe": true
    }
    {
      "customerSession": "sess-c-7f21a9",
      "accountSession": "sess-a-3c90e1",
      "loginToken": "lt-9b12d4",
      "backupCode": null,
      "serverTimestamp": "2026-10-21T08:14:02.511Z",
      "customer": {
        "id": 18492011,
        "uuid": "6e3c1a52-71b4-4e08-8d2a-5c0e1f7b3a64",
        "email": "[email protected]",
        "dealer": "AVUS_UK",
        "lang": "en",
        "registerDate": "2019-03-12T10:22:00.000Z"
      },
      "account": {
        "id": 55210188,
        "type": "EQ",
        "tradingType": "INVEST",
        "status": "ACTIVE",
        "currencyCode": "EUR",
        "readyToTrade": true,
        "createdDate": "2019-03-12T10:22:11.000Z",
        "lastSwitchedDate": "2026-10-21T08:14:02.000Z",
        "registerSource": "MOBILE"
      }
    }
  • Switch trading account

    POST /v1/sessions/active-account openbanking

    Switches the live session onto another account the customer holds (Invest, Stocks ISA, Cash ISA, SIPP, CFD or Crypto) and returns a fresh accountSession plus readyToTrade / currencyCode.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • accountId
    • tradingType
    • accountSession
    • account.id
    • account.type
    • account.status
    • account.currencyCode
    • account.readyToTrade
    • account.lastSwitchedDate
    POST /v1/sessions/active-account HTTP/1.1
    Cookie: session=sess-a-3c90e1
    X-Client-Info: platform=android,appVersion=8.52,accountId=55210188
    Content-Type: application/json
    
    {
      "accountId": 55218801,
      "tradingType": "ISA"
    }
    {
      "accountSession": "sess-a-8e22c0",
      "account": {
        "id": 55218801,
        "type": "EQ",
        "tradingType": "ISA",
        "status": "ACTIVE",
        "currencyCode": "GBP",
        "readyToTrade": true,
        "lastSwitchedDate": "2026-10-21T08:15:44.000Z"
      }
    }
  • Invest account wallets

    GET /v1/accounts/invest/cash openbanking

    Reads per-currency Invest cash wallets: freeFunds available to trade, blockedFunds reserved for open orders, pendingDeposit in flight, and total cash.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • wallets
    • currencyCode
    • freeFunds
    • blockedFunds
    • pendingDeposit
    • cash
    GET /v1/accounts/invest/cash HTTP/1.1
    Cookie: session=sess-a-3c90e1
    X-Client-Info: platform=android,appVersion=8.52,accountId=55210188
    {
      "wallets": [
        {
          "currencyCode": "EUR",
          "freeFunds": 4210.55,
          "blockedFunds": 180.00,
          "pendingDeposit": 0.00,
          "cash": 4390.55
        },
        {
          "currencyCode": "USD",
          "freeFunds": 850.10,
          "blockedFunds": 0.00,
          "pendingDeposit": 200.00,
          "cash": 1050.10
        }
      ]
    }
  • Cash ISA summary

    GET /v1/wrappers/cash-isa/overview openfinance

    Reads the Cash ISA home: cash on the wrapper, current-tax-year isaAllowance, remaining allowanceLeft, taxYear and the advertised AER.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call. Account must be switched to a Cash ISA account type.

    • cashIsaSummary
    • currencyCode
    • cash
    • isaAllowance
    • allowanceLeft
    • taxYear
    • aer
    GET /v1/wrappers/cash-isa/overview HTTP/1.1
    Cookie: session=sess-a-8e22c0
    X-Client-Info: platform=android,appVersion=8.52,accountId=55218801
    {
      "cashIsaSummary": {
        "currencyCode": "GBP",
        "cash": 12500.00,
        "isaAllowance": 20000.00,
        "allowanceLeft": 7500.00,
        "taxYear": "2026/27",
        "aer": 0.038
      }
    }
  • SIPP contributions

    GET /v1/wrappers/sipp/contributions openfinance

    Reads SIPP contributions for the current tax year: thisYear paid in, taxRelief claimed, and remainingDepositLimit still open on the wrapper.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call. Account must be a SIPP.

    • sippAccountId
    • sippContribution
    • thisYear
    • taxRelief
    • remainingDepositLimit
    • taxYear
    • currencyCode
    GET /v1/wrappers/sipp/contributions HTTP/1.1
    Cookie: session=sess-a-91bb04
    X-Client-Info: platform=android,appVersion=8.52,accountId=55219002
    {
      "sippAccountId": 55219002,
      "sippContribution": {
        "thisYear": 4800.00,
        "taxRelief": 1200.00,
        "remainingDepositLimit": 31200.00,
        "taxYear": "2026/27",
        "currencyCode": "GBP"
      }
    }
  • Crypto account summary

    GET /v1/accounts/crypto/overview openfinance

    Reads the Crypto account home: summaryValue in account currency, per-asset wallets (ticker, quantity, value) and any lockedQuantities.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call. Account type Crypto.

    • currencyCode
    • summaryValue
    • wallets
    • ticker
    • quantity
    • value
    • lockedQuantities
    GET /v1/accounts/crypto/overview HTTP/1.1
    Cookie: session=sess-a-c4aa11
    X-Client-Info: platform=android,appVersion=8.52,accountId=55220110
    {
      "currencyCode": "EUR",
      "summaryValue": 3120.40,
      "wallets": [
        {
          "ticker": "BTCcrypto",
          "quantity": 0.0215,
          "value": 1980.10
        },
        {
          "ticker": "ETH",
          "quantity": 0.40,
          "value": 1140.30
        }
      ],
      "lockedQuantities": []
    }
  • CFD account summary

    GET /v1/accounts/cfd/overview openfinance

    Reads the CFD account strip: equity, freeFunds versus blockedFunds, unrealised ppl, margin in use and the account leverage.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call. Account type CFD.

    • currencyCode
    • equity
    • freeFunds
    • blockedFunds
    • ppl
    • margin
    • leverage
    • readyToTrade
    GET /v1/accounts/cfd/overview HTTP/1.1
    Cookie: session=sess-a-d7ee20
    X-Client-Info: platform=android,appVersion=8.52,accountId=55221044
    {
      "currencyCode": "EUR",
      "equity": 15420.88,
      "freeFunds": 9800.12,
      "blockedFunds": 2100.00,
      "ppl": 312.40,
      "margin": 3520.76,
      "leverage": 5,
      "readyToTrade": true
    }
  • AutoInvest pie holdings

    GET /v1/portfolios/pies/holdings openfinance

    Lists AutoInvest pie slices: pieId plus per-instrument ticker / isin, quantity at averagePrice versus currentPrice, unrealised ppl, and actualWeight against targetWeight.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • holdings
    • pieId
    • ticker
    • isin
    • quantity
    • averagePrice
    • currentPrice
    • ppl
    • actualWeight
    • targetWeight
    GET /v1/portfolios/pies/holdings HTTP/1.1
    Cookie: session=sess-a-3c90e1
    X-Client-Info: platform=android,appVersion=8.52,accountId=55210188
    {
      "holdings": [
        {
          "pieId": "pie-8f21c4",
          "ticker": "VUSAd_EQ",
          "isin": "IE00B3XXRP09",
          "quantity": 42.15,
          "averagePrice": 88.40,
          "currentPrice": 91.22,
          "ppl": 118.86,
          "actualWeight": 0.41,
          "targetWeight": 0.40
        },
        {
          "pieId": "pie-8f21c4",
          "ticker": "AAPLd_EQ",
          "isin": "US0378331005",
          "quantity": 6.00,
          "averagePrice": 172.10,
          "currentPrice": 189.55,
          "ppl": 104.70,
          "actualWeight": 0.22,
          "targetWeight": 0.20
        }
      ]
    }
  • Equity value-order review

    POST /v1/orders/value/preview openfinance

    Previews a commission-free equity value order before submit: converts value into estimated quantity at currentPrice and itemises cost, fxFee and commission.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • ticker
    • instrumentCode
    • isin
    • side
    • value
    • quantity
    • currentPrice
    • cost
    • fxFee
    • commission
    • orderType
    POST /v1/orders/value/preview HTTP/1.1
    Cookie: session=sess-a-3c90e1
    X-Client-Info: platform=android,appVersion=8.52,accountId=55210188
    Content-Type: application/json
    
    {
      "ticker": "AAPLd_EQ",
      "side": "BUY",
      "value": 500.00,
      "currencyCode": "EUR"
    }
    {
      "ticker": "AAPLd_EQ",
      "instrumentCode": "AAPLd_EQ",
      "isin": "US0378331005",
      "side": "BUY",
      "value": 500.00,
      "quantity": 2.637,
      "currentPrice": 189.55,
      "cost": 500.00,
      "fxFee": 0.75,
      "commission": 0.00,
      "orderType": "VALUE"
    }
  • Open positions

    GET /v1/positions/{positionId} openfinance

    Reads one open CFD (or Invest) position: ticker, side, quantity at averagePrice versus currentPrice, unrealised ppl, margin and leverage.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • positionId
    • ticker
    • side
    • quantity
    • averagePrice
    • currentPrice
    • ppl
    • margin
    • leverage
    • currencyCode
    GET /v1/positions/pos-441902 HTTP/1.1
    Cookie: session=sess-a-d7ee20
    X-Client-Info: platform=android,appVersion=8.52,accountId=55221044
    {
      "positionId": "pos-441902",
      "ticker": "EURUSD",
      "side": "BUY",
      "quantity": 10000,
      "averagePrice": 1.08410,
      "currentPrice": 1.08740,
      "ppl": 33.00,
      "margin": 216.82,
      "leverage": 30,
      "currencyCode": "EUR"
    }
  • Interest on cash status

    GET /v1/cash/interest-status openfinance

    Reads whether interest-on-cash is ENABLED, the per-currency interestRate / apy, uninvestedCash the rate applies to, and today's dailyInterest.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • status
    • currencyCode
    • interestRate
    • apy
    • uninvestedCash
    • dailyInterest
    • eligibility
    GET /v1/cash/interest-status HTTP/1.1
    Cookie: session=sess-a-3c90e1
    X-Client-Info: platform=android,appVersion=8.52,accountId=55210188
    {
      "status": "ENABLED",
      "currencyCode": "EUR",
      "interestRate": 0.0205,
      "apy": 0.0207,
      "uninvestedCash": 4210.55,
      "dailyInterest": 0.24,
      "eligibility": true
    }
  • Share-lending account status

    GET /v1/lending/status openfinance

    Reads share-lending enrolment: ENABLED/OFF status, account-level annualPercentYield, lentValue of inventory on loan and estimatedMonthlyIncome, plus per-ticker quantity still lent.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • status
    • annualPercentYield
    • lentValue
    • estimatedMonthlyIncome
    • instruments
    • ticker
    • quantity
    GET /v1/lending/status HTTP/1.1
    Cookie: session=sess-a-3c90e1
    X-Client-Info: platform=android,appVersion=8.52,accountId=55210188
    {
      "status": "ENABLED",
      "annualPercentYield": 0.012,
      "lentValue": 8420.00,
      "estimatedMonthlyIncome": 8.40,
      "instruments": [
        {
          "ticker": "AAPLd_EQ",
          "quantity": 6.00,
          "annualPercentYield": 0.018
        }
      ]
    }
  • Withdrawable total cash

    GET /v1/funds/withdrawable openbanking

    Reads cash available to start a withdrawal: totalCash on the account versus freeFunds already unblocked.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • currencyCode
    • totalCash
    • freeFunds
    • blockedFunds
    GET /v1/funds/withdrawable HTTP/1.1
    Cookie: session=sess-a-3c90e1
    X-Client-Info: platform=android,appVersion=8.52,accountId=55210188
    {
      "currencyCode": "EUR",
      "totalCash": 4390.55,
      "freeFunds": 4210.55,
      "blockedFunds": 180.00
    }
  • Deposit bank accounts

    GET /v1/funds/deposit-accounts openbanking

    Lists the customer's saved deposit bank accounts (iban, swiftCode, paymentProviderId) together with the slider depositLimit (min / max / defaultValue / recurringMin).

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • bankAccounts
    • id
    • iban
    • swiftCode
    • paymentProviderId
    • currencyCode
    • depositLimit
    • min
    • max
    • defaultValue
    • maxSlider
    • recurringMin
    GET /v1/funds/deposit-accounts HTTP/1.1
    Cookie: session=sess-a-3c90e1
    X-Client-Info: platform=android,appVersion=8.52,accountId=55210188
    {
      "bankAccounts": [
        {
          "id": 901122,
          "iban": "BG80BNBG96611020345678",
          "swiftCode": "BNBGDBGXXXX",
          "paymentProviderId": 14,
          "currencyCode": "EUR"
        }
      ],
      "depositLimit": {
        "min": 10.0,
        "max": 50000.0,
        "defaultValue": 100.0,
        "maxSlider": 10000.0,
        "recurringMin": 50.0
      }
    }
  • 212 card status

    GET /v1/cards/{cardId}/state openbanking

    Reads one 212 debit card: cardStatus (ACTIVE / Frozen / Terminated) and cardLastFour used when pushing the card into Google Wallet.

    Auth: Session cookie plus client-descriptor header obtained from the sign-in call.

    • cardId
    • cardStatus
    • cardLastFour
    • displayName
    GET /v1/cards/crd-220198/state HTTP/1.1
    Cookie: session=sess-a-3c90e1
    X-Client-Info: platform=android,appVersion=8.52,accountId=55210188
    {
      "cardId": "crd-220198",
      "cardStatus": "ACTIVE",
      "cardLastFour": "4412",
      "displayName": "212 Card"
    }

Data categories

  • session cookies
  • multi-account switch
  • invest wallets
  • ISA allowance
  • SIPP contributions
  • crypto wallets
  • CFD margin
  • pie holdings
  • equity orders
  • open positions
  • cash interest
  • share lending
  • withdrawals
  • deposit IBANs
  • debit cards

Where teams use this data

  • ISA headroom versus Invest freeFunds

    A tax-wrapper bot reads isaAllowance and allowanceLeft on the Cash ISA summary, then compares Invest freeFunds so a transfer into the Stocks ISA does not overshoot the current taxYear cap.

  • Pie actualWeight versus targetWeight

    A rebalance job pages AutoInvest holdings and flags slices whose actualWeight drifted from targetWeight, using quantity, averagePrice and currentPrice to size the buy or sell ticket.

  • CFD margin versus equity

    A risk desk watches CFD equity, margin, leverage and unrealised ppl against freeFunds so a margin call is raised before blockedFunds consume the account.

  • Share-lending yield versus lent inventory

    An income monitor joins annualPercentYield and lentValue from share-lending status with per-ticker quantity still on loan, then nets dailyInterest from the cash-interest strip.

Frequently asked questions

How does Trading 212 authenticate a session?

POST /v1/sessions/mobile-signin returns customerSession and accountSession, which the client keeps as a session cookie. Every later call also carries a client-descriptor header with the platform, app version and accountId. POST /v1/sessions/active-account issues a fresh accountSession when the customer moves between Invest, ISA, SIPP, CFD and Crypto.

Which fields split Invest cash from an ISA wrapper?

GET /v1/accounts/invest/cash returns per-currency freeFunds, blockedFunds, pendingDeposit and cash. GET /v1/wrappers/cash-isa/overview is the wrapper view: isaAllowance, allowanceLeft and taxYear on cashIsaSummary. SIPP money is a third bucket at GET /v1/wrappers/sipp/contributions (thisYear, taxRelief, remainingDepositLimit).

How are AutoInvest pies marked to market?

GET /v1/portfolios/pies/holdings lists each slice with ticker, isin, quantity, averagePrice, currentPrice, unrealised ppl, actualWeight and targetWeight. A rebalance job sizes tickets from the weight gap; equity value orders are previewed first at POST /v1/orders/value/preview (value, estimated quantity, fxFee, commission).

What CFD and lending fields sit next to the cash strip?

GET /v1/accounts/cfd/overview returns equity, margin, leverage and ppl. Individual tickets load at GET /v1/positions/{positionId} with averagePrice versus currentPrice. Share-lending status at GET /v1/lending/status adds annualPercentYield and lentValue; cash interest at GET /v1/cash/interest-status adds apy and dailyInterest on uninvestedCash.

Apps similar to Trading 212: Stocks, ETFs, ISA

  • Trade Republic: Broker & Bank — Trade Republic is a Berlin online broker and bank whose mobile app offers stock and ETF brokerage, and after a 2023 European Central Bank banking licence it added savings and current-account products.
  • Scalable Capital — Scalable Capital is a Munich digital investment platform and bank whose services include self-directed brokerage, wealth management, savings plans and deposits, and it is active in Germany, Austria, France, Italy, Spain and the Netherlands.
  • eToro — eToro is an Israeli multi-asset brokerage whose electronic platform and CopyTrader social system cover stocks, CFDs, commodities, currencies and cryptoassets for retail clients across dozens of countries.
  • Revolut — Revolut is a London neobank whose app launched in-app share trading for European customers in 2019 and, after a 2024 UK trading licence, expanded that offering to UK and EU-listed stocks and ETFs.
  • DEGIRO — DEGIRO is a Dutch online brokerage brand, now the Dutch branch of Flatexdegiro Bank, that lets retail investors trade securities on international markets from a platform launched in the Netherlands in 2013 and later rolled out across Europe.
  • Freetrade — Freetrade is a UK mobile trading platform, acquired by IG Group in 2025, that lets retail investors trade equities and ETFs through iOS and Android apps.
  • Interactive Brokers — Interactive Brokers is a Greenwich, Connecticut brokerage that provides automated execution and custody for stocks, options, futures, FX, bonds and funds on electronic markets worldwide.
  • Plus500 — Plus500 is a Haifa-headquartered multi-asset fintech that offers CFDs, share dealing, futures, prediction markets and options on futures through web and mobile apps.

Topics

  • Trading 212 API
  • freeFunds
  • isaAllowance
  • AutoInvest pie holdings
  • CFD margin
  • share lending
  • 212 card
  • Trading 212 ISA data

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote