IIFL : Stocks, Demat & IPOs icon

IIFL Markets data API: holdings, orders and funds

IIFL Securities · Banking

IIFL : Stocks, Demat & IPOs (branded IIFL Markets in the client) is the Android trading app of IIFL Securities, the listed Indian full-service broker now operating as IIFL Capital. Retail investors and active traders open a demat-plus-trading account, then watch NSE, BSE and MCX scrips, place regular, GTT and SMO orders, track holdings and F&O positions, browse mutual funds, live IPOs and smallcases, add or withdraw rupees over UPI and netbanking, and pledge holdings or turn on MTF / BNPL for extra buying power. TradingView charts, option chains, CDSL eDIS, nominee and segment-activation flows sit around that order pad. The app is India-only — a SEBI-regulated brokerage competing with Groww, Zerodha Kite, Upstox, Angel One and 5paisa (an IIFL spin-out) for the same cash-equity and derivatives crowd.

Collateral-pledged value (collateralValue) sits in the margin snapshot while each ISIN lot carries t1Quantity for T+1 free stock, plus authorizedQuantity, dpQuantity and avgPrice on the same row. Trading cash splits as TotalBalance, avlbMgn, sPAN and EligiblePayoutAmount. GTT legs carry triggerPrice and entryPrice; the order tape returns brokerOrderId, filledQuantity and orderStatus.

Portfolio reconcilers match demat lots to the custodian file, RMS monitors watch SPAN versus withdrawable cash, and payout ops post TokenNO into the bank-recon. openData Studio turns those fields into callable open data.

Screenshots

  • IIFL : Stocks, Demat & IPOs screenshot 1
  • IIFL : Stocks, Demat & IPOs screenshot 2
  • IIFL : Stocks, Demat & IPOs screenshot 3
  • IIFL : Stocks, Demat & IPOs screenshot 4

API surface

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

  • Login with password and PIN

    POST /v1/brokerage/session/login openbanking

    Exchanges client LoginId, password and 2PIN for ClientName, DPID, POAStatus and SecKey, the trade session key used on later calls.

    Auth: None. A request code, app name, app version, OS name and LoginId identify the client before a session exists; the body carries the password and 2PIN.

    • LoginId
    • Password
    • My2PIN
    • ClientName
    • EmailId
    • DPID
    • POAStatus
    • BulkOrderAllowed
    • OTPCredentialID
    • SecKey
    • ServerDt
    • LastLogin
    POST /v1/brokerage/session/login HTTP/1.1
    Content-Type: application/json
    
    {
      "head": {
        "requestCode": "login.request",
        "key": "",
        "appVer": "9.0",
        "appName": "IIFLMarkets",
        "osName": "Android",
        "LoginId": "A123456"
      },
      "body": {
        "Password": "********",
        "LocalIP": "10.0.0.12",
        "PublicIP": "203.0.113.25",
        "HDSerailNumber": "a1b2c3",
        "MACAddress": "02:00:00:00:00:00",
        "MachineID": "android-device-id",
        "VersionNo": "9.0",
        "RequestNo": 1,
        "My2PIN": "1234",
        "ConnectionType": "WIFI"
      }
    }
    {
      "head": {
        "responseCode": "login.response",
        "status": "0",
        "statusDescription": "Success"
      },
      "body": {
        "Success": 1,
        "ServerDt": "2026-10-20T11:05:12+05:30",
        "LastLogin": "2026-10-19T16:42:01+05:30",
        "ClientType": 1,
        "Msg": "Login successful",
        "ClientName": "PRIYA SHARMA",
        "EmailId": "[email protected]",
        "BulkOrderAllowed": 1,
        "RunningAuthorization": 1,
        "OTPCredentialID": "otp-cred-0001",
        "DPID": "IN300000",
        "POAStatus": "Y",
        "BankName": "HDFC BANK",
        "SecKey": "<session-key>",
        "VersionChanged": 0
      }
    }
  • Demat holdings snapshot

    POST /v1/portfolio/holdings openfinance

    Returns demat lots with ISIN, NSE/BSE codes, average price, DP quantity, T+1 quantity and authorized quantity for the holdings screen.

    Auth: Session key (head.key) and LoginId issued by the login call; session cookie is carried across calls.

    • clientCode
    • exch
    • symbol
    • avgPrice
    • quantity
    • LTP
    • isin
    • dpQuantity
    • t1Quantity
    • authorizedQuantity
    • nseCode
    • bseCode
    • product
    POST /v1/portfolio/holdings HTTP/1.1
    Content-Type: application/json
    
    {
      "head": {
        "requestCode": "holdings.request",
        "key": "<session-key>",
        "appVer": "9.0",
        "appName": "IIFLMarkets",
        "osName": "Android",
        "LoginId": "A123456"
      },
      "body": {
        "ClientCode": "A123456"
      }
    }
    {
      "head": {
        "responseCode": "holdings.response",
        "status": "0",
        "statusDescription": "Success"
      },
      "body": {
        "HoldingDetails": [
          {
            "clientCode": "A123456",
            "exch": "N",
            "exchType": "C",
            "symbol": "RELIANCE",
            "exchShortName": "NSE",
            "avgPrice": 1384.5,
            "quantity": 50,
            "LTP": 1412.2,
            "nseCode": 2885,
            "bseCode": 500325,
            "previousPrice": 1408.0,
            "sortPosition": 1,
            "product": "CNC",
            "isin": "INE002A01018",
            "dpQuantity": 40,
            "t1Quantity": 10,
            "authorizedQuantity": 50
          }
        ],
        "Msg": "Success",
        "status": 0
      }
    }
  • Funds and margin snapshot

    POST /v1/funds/margin openbanking

    Reads cash, available margin, SPAN, collateral and receipts/payments that power the funds and limits strip.

    Auth: Session key (head.key) and LoginId issued by the login call.

    • Clientcode
    • TotalBalance
    • avlbMgn
    • collateralValue
    • receipts
    • payments
    • sPAN
    • adhoc
    • marginOnCash
    • nriCashReceipts
    • status
    • msg
    POST /v1/funds/margin HTTP/1.1
    Content-Type: application/json
    
    {
      "head": {
        "requestCode": "margin.request",
        "key": "<session-key>",
        "appVer": "9.0",
        "appName": "IIFLMarkets",
        "osName": "Android",
        "LoginId": "A123456"
      },
      "body": {
        "Clientcode": "A123456"
      }
    }
    {
      "head": {
        "responseCode": "margin.response",
        "status": "0",
        "statusDescription": "Success"
      },
      "body": {
        "TotalBalance": 185000.0,
        "avlbMgn": 142300.5,
        "collateralValue": 62000.0,
        "receipts": 25000.0,
        "payments": 5000.0,
        "sPAN": 18400.0,
        "adhoc": 0.0,
        "marginOnCash": 118500.0,
        "nriCashReceipts": 0.0,
        "nriFOReceipts": 0.0,
        "physcripsNetworth": 0.0,
        "msg": "Success",
        "status": 0
      }
    }
  • Eligible payout amount

    POST /v1/funds/payout/eligible openbanking

    Returns the rupee amount eligible to withdraw before a payout request is placed.

    Auth: Bearer-style JWT in the request body (JWTtoken) from the login session, plus the head app name, version, OS and request code.

    • JWTtoken
    • EligiblePayoutAmount
    • Msg
    • status
    • appName
    • appVer
    • requestCode
    POST /v1/funds/payout/eligible HTTP/1.1
    Content-Type: application/json
    
    {
      "head": {
        "appName": "IIFLMarkets",
        "appVer": "9.0",
        "key": "<session-key>",
        "osName": "Android",
        "requestCode": "eligible-payout.request"
      },
      "body": {
        "JWTtoken": "<jwt-token>"
      }
    }
    {
      "head": {
        "responseCode": "eligible-payout.response",
        "status": 0,
        "statusDescription": "Success"
      },
      "body": {
        "EligiblePayoutAmount": 118500.0,
        "Msg": "Success",
        "status": 0
      }
    }
  • Payout history

    POST /v1/funds/payout/history openbanking

    Pages withdrawal requests with bank account, amount, status and token number for the funds history screen.

    Auth: Session key (head.key) and LoginId issued by the login call.

    • AccountNo
    • Bank
    • ChequeNo
    • PayoutAmount
    • PayoutDate
    • PayoutStatus
    • Product
    • RequestAmount
    • RequestDate
    • TokenNO
    POST /v1/funds/payout/history HTTP/1.1
    Content-Type: application/json
    
    {
      "head": {
        "requestCode": "payout-history.request",
        "key": "<session-key>",
        "appVer": "9.0",
        "appName": "IIFLMarkets",
        "osName": "Android",
        "LoginId": "A123456"
      },
      "body": {
        "ClientCode": "A123456"
      }
    }
    {
      "head": {
        "responseCode": "payout-history.response",
        "status": "0",
        "statusDescription": "Success"
      },
      "body": {
        "HistoryData": [
          {
            "AccountNo": "50100000000000",
            "Bank": "HDFC BANK",
            "ChequeNo": "",
            "PayoutAmount": 25000,
            "PayoutDate": "2026-10-18",
            "PayoutStatus": "PROCESSED",
            "Product": "EQUITY",
            "RequestAmount": 25000,
            "RequestDate": "2026-10-18",
            "TokenNO": "PO0000000001"
          }
        ],
        "Msg": "Success",
        "status": 0
      }
    }
  • Linked bank accounts for fund transfer

    POST /v1/funds/banks openbanking

    Lists linked equity bank accounts and the UPI vendor used on the add-funds / payout screen.

    Auth: Session key (head.key) and LoginId issued by the login call.

    • EquityBanks
    • BankName
    • BankCode
    • BankAccountNo
    • NetbankingAllow
    • IsEquityClient
    • ALBEquity
    • ClientCode
    • UPIVendor
    POST /v1/funds/banks HTTP/1.1
    Content-Type: application/json
    
    {
      "head": {
        "requestCode": "fund-banks.request",
        "key": "<session-key>",
        "appVer": "9.0",
        "appName": "IIFLMarkets",
        "osName": "Android",
        "LoginId": "A123456"
      },
      "body": {
        "ClientCode": "A123456"
      }
    }
    {
      "head": {
        "responseCode": "fund-banks.response",
        "status": "0",
        "statusDescription": "Success"
      },
      "body": {
        "EquityBanks": [
          {
            "BankName": "HDFC BANK",
            "BankCode": "HDFC",
            "BankAccountNo": "50100000000000",
            "NetbankingAllow": "Y"
          }
        ],
        "IsEquityClient": true,
        "ALBEquity": 1,
        "ClientCode": "A123456",
        "Msg": "Success",
        "status": 0,
        "UPIVendor": "<upi-vendor>"
      }
    }
  • Place GTT order

    POST /v1/orders/gtt openfinance

    Places a good-till-triggered order with buy/sell, product, quantity and trigger/entry legs.

    Auth: Bearer-style JWT in the request body (jWTToken) plus the head session from login.

    • jWTToken
    • exchange
    • gTTBuySell
    • gTTProduct
    • scripCode
    • qty
    • triggerType
    • entryPrice
    • triggerPrice
    • nestOrderID
    • appSource
    • deviceID
    POST /v1/orders/gtt HTTP/1.1
    Content-Type: application/json
    
    {
      "body": {
        "appSource": "ANDROID",
        "deviceID": "android-device-id",
        "exchange": "NSE",
        "gTTBuySell": "B",
        "gTTProduct": "CNC",
        "jWTToken": "<jwt-token>",
        "publicIP": "203.0.113.25",
        "qty": 10,
        "requestType": "PLACE",
        "scripCode": "2885",
        "triggerType": "SL",
        "nestOrderID": "",
        "leg1": {
          "entryPrice": "1410.00",
          "triggerPrice": "1395.00"
        },
        "leg2": {
          "entryPrice": "0",
          "triggerPrice": "0"
        }
      }
    }
    {
      "head": {
        "responseCode": "gtt-order.response",
        "status": "0",
        "statusDescription": "Success"
      },
      "body": {
        "status": 0,
        "Msg": "GTT placed",
        "nestOrderID": "250000000001"
      }
    }
  • F&O and equity positions

    POST /v1/portfolio/positions openfinance

    Returns open equity and commodity positions with buy/sell qty, average rate, net qty, booked P&L and LTP.

    Auth: Session key (head.key) and LoginId issued by the login call.

    • BuySell
    • DelvIntra
    • Exch
    • ExchType
    • ScripCode
    • ScripName
    • Qty
    • Rate
    • BuyQty
    • SellQty
    • NetQty
    • BuyAvgRate
    • BookedPL
    • LTP
    • Multiplier
    POST /v1/portfolio/positions HTTP/1.1
    Content-Type: application/json
    
    {
      "head": {
        "requestCode": "positions.request",
        "key": "<session-key>",
        "appVer": "9.0",
        "appName": "IIFLMarkets",
        "osName": "Android",
        "LoginId": "A123456"
      },
      "body": {
        "ClientCode": "A123456"
      }
    }
    {
      "head": {
        "responseCode": "positions.response",
        "status": "0",
        "statusDescription": "Success"
      },
      "body": {
        "TradeData": [
          {
            "BuySell": "B",
            "DelvIntra": "I",
            "Exch": "N",
            "ExchType": "D",
            "Multiplier": 50.0,
            "Qty": 100,
            "Rate": 24850.0,
            "ScripCode": 35000,
            "ScripName": "NIFTY 27OCT26 FUT",
            "BuyQty": 100,
            "SellQty": 0,
            "NetQty": 100,
            "BuyAvgRate": 24850.0,
            "SellAvgRate": 0.0,
            "BuyValue": 124250000.0,
            "SellValue": 0.0,
            "BookedPL": 0,
            "LTP": 24910.5
          }
        ],
        "Message": "Success",
        "Status": 0,
        "TimeStamp": "2026-10-20T11:12:44+05:30"
      }
    }
  • Order history

    POST /v1/orders/book openfinance

    Returns the day's order book with broker/exchange ids, fill qty, status and rejection reason.

    Auth: Session key (head.key) and LoginId issued by the login call.

    • brokerOrderId
    • exchangeOrderId
    • orderStatus
    • tradingSymbol
    • instrumentId
    • transactionType
    • product
    • orderType
    • quantity
    • filledQuantity
    • pendingQuantity
    • price
    • averageTradedPrice
    • validity
    • rejectionReason
    POST /v1/orders/book HTTP/1.1
    Content-Type: application/json
    
    {
      "head": {
        "requestCode": "order-book.request",
        "key": "<session-key>",
        "appVer": "9.0",
        "appName": "IIFLMarkets",
        "osName": "Android",
        "LoginId": "A123456"
      },
      "body": {
        "ClientCode": "A123456"
      }
    }
    {
      "status": "0",
      "message": "Success",
      "result": [
        {
          "clientId": "A123456",
          "placedBy": "A123456",
          "brokerOrderId": "250000000001",
          "exchangeOrderId": "110000000001",
          "orderStatus": "COMPLETE",
          "formattedInstrumentName": "RELIANCE",
          "tradingSymbol": "RELIANCE",
          "instrumentId": "2885",
          "exchange": "NSE",
          "transactionType": "BUY",
          "product": "CNC",
          "orderType": "LIMIT",
          "orderComplexity": "REGULAR",
          "quantity": 10,
          "filledQuantity": 10,
          "pendingQuantity": 0,
          "cancelledQuantity": 0,
          "price": 1410.0,
          "averageTradedPrice": 1409.85,
          "orderTime": "2026-10-20T10:14:02+05:30",
          "validity": "DAY",
          "rejectionReason": ""
        }
      ]
    }
  • Place SMO / regular order

    POST /v1/brokerage/orders/place openfinance

    Places a regular or SMO (smart multi-leg) order with instrument, side, product, qty and limit price.

    Auth: Session key (head.key) and LoginId issued by the login call; the body clientCode identifies the trading account.

    • instrumentId
    • exchange
    • transactionType
    • quantity
    • orderComplexity
    • product
    • orderType
    • price
    • validity
    • clientCode
    • uniqueOrderID
    • brokerOrderId
    • orderStatus
    POST /v1/brokerage/orders/place HTTP/1.1
    Content-Type: application/json
    
    {
      "instrumentId": "2885",
      "exchange": "NSE",
      "transactionType": "BUY",
      "quantity": 10,
      "orderComplexity": "REGULAR",
      "product": "CNC",
      "orderType": "LIMIT",
      "price": 1410.0,
      "validity": "DAY",
      "disclosedQuantity": 0,
      "clientCode": "A123456",
      "deviceId": "android-device-id",
      "uniqueOrderID": "<client-order-id>",
      "apiOrderSource": "ANDROID"
    }
    {
      "status": "0",
      "message": "Order placed",
      "result": {
        "brokerOrderId": "250000000002",
        "orderStatus": "OPEN",
        "instrumentId": "2885",
        "transactionType": "BUY",
        "quantity": 10,
        "price": 1410.0
      }
    }
  • Gainers and losers snapshot

    POST /v1/markets/movers opendata

    Returns cached NSE/BSE gainer and loser rows with LTP, percent change, scrip code and volume for the market snapshot.

    Auth: Session key (head.key) and LoginId issued by the login call; a guest session is also accepted on dashboard calls.

    • CacheTime
    • Gainer
    • Looser
    • exch
    • exchType
    • fullName
    • lTP
    • perChange
    • scripCode
    • symbol
    • volume
    POST /v1/markets/movers HTTP/1.1
    Content-Type: application/json
    
    {
      "head": {
        "requestCode": "movers.request",
        "key": "<session-key>",
        "appVer": "9.0",
        "appName": "IIFLMarkets",
        "osName": "Android",
        "LoginId": "A123456"
      },
      "body": {
        "exch": "N",
        "exchType": "C"
      }
    }
    {
      "body": {
        "CacheTime": 15,
        "Gainer": [
          {
            "exch": "N",
            "exchType": "C",
            "fullName": "Reliance Industries Ltd",
            "lTP": 1412.2,
            "perChange": 2.35,
            "scripCode": 2885,
            "symbol": "RELIANCE",
            "volume": 8423110.0
          }
        ],
        "Looser": [
          {
            "exch": "N",
            "exchType": "C",
            "fullName": "Tata Steel Ltd",
            "lTP": 152.4,
            "perChange": -1.82,
            "scripCode": 3499,
            "symbol": "TATASTEEL",
            "volume": 12004500.0
          }
        ],
        "Msg": "Success",
        "status": 0
      }
    }

Data categories

  • balances
  • holdings
  • orders
  • positions
  • payouts
  • market-data

Where teams use this data

  • Nightly demat lot reconciliation

    A family-office book pulls authorizedQuantity, dpQuantity, t1Quantity and isin per symbol and matches them to the custodian file before the next cash session.

  • RMS cash and SPAN monitor

    A risk desk polls TotalBalance, avlbMgn, sPAN and EligiblePayoutAmount so a margin call fires before utilised span eats the withdrawable rupee balance.

  • Payout operations ledger

    Treasury posts PayoutAmount, PayoutStatus, TokenNO and BankAccountNo into the bank-recon file instead of re-keying withdrawals from the funds screen.

  • Order-flow fill tape

    An execution blotter stores brokerOrderId, exchangeOrderId, filledQuantity and averageTradedPrice, then overlays NetQty / BookedPL from the positions snapshot.

Frequently asked questions

What holdings fields does the IIFL Markets data API return?

Each demat lot includes isin, symbol, nseCode, bseCode, avgPrice, quantity, LTP, dpQuantity, t1Quantity, authorizedQuantity and product (for example CNC). Those are the same columns the holdings screen renders.

How are cash, margin and payouts exposed?

The margin snapshot returns TotalBalance, avlbMgn, collateralValue, sPAN and receipts/payments. EligiblePayoutAmount is the withdrawable rupee figure; payout history then lists AccountNo, Bank, PayoutAmount, PayoutStatus and TokenNO.

Does the surface cover orders and GTT, not just balances?

Yes. Place-order calls send instrumentId, transactionType, quantity, product and price, and the order tape returns brokerOrderId, exchangeOrderId, filledQuantity and orderStatus. GTT placement adds triggerType plus triggerPrice/entryPrice legs.

How does a session authenticate?

Login sends a request code, appName, appVer, osName and LoginId together with the password and 2PIN. Later calls reuse the returned session key and LoginId and, on payout and GTT, a JWT token issued for that client.

Apps similar to IIFL : Stocks, Demat & IPOs

  • Groww — Groww Invest Tech is a SEBI-registered Indian stock broker and CDSL depository participant whose app covers stocks, ETFs, IPOs, futures and options, commodities, bonds and direct mutual funds.
  • Zerodha Kite — Zerodha is a Bengaluru SEBI-registered broker whose Kite platform is used to invest in stocks, IPOs, derivatives, ETFs and bonds, with Coin handling direct mutual funds.
  • Upstox Stocks IPO Mutual Funds — Upstox Securities, a subsidiary of RKSV Securities, is an Indian online broker whose app covers equities, futures and options, commodities, currencies, mutual funds and IPOs on NSE, BSE and MCX.
  • Angel One: Stocks, Mutual Fund — Angel One is a SEBI-registered Indian broker whose app covers stocks, mutual funds, IPOs, futures and options, commodities and currencies, with MCX membership for commodity derivatives.
  • 5paisa: Demat, Stocks & IPO — 5paisa Capital is an Indian discount broker whose platform pairs a demat account with stocks, IPOs, mutual funds, ETFs, commodities and futures and options.
  • INDmoney: US Stocks, F&O, IPO — INDmoney is a SEBI-registered Indian broker whose app trades Indian stocks, futures and options and IPOs, and also covers US stocks and mutual funds.
  • Paytm Money — Paytm Money is a SEBI-registered Indian broker whose wealth app covers equities, futures and options, mutual funds, ETFs, IPOs and the National Pension System.
  • Dhan — Dhan is a SEBI-regulated Indian trading platform operated by Raise Securities whose app covers stocks, futures and options, commodities, ETFs, mutual funds and IPOs.

Topics

  • IIFL Markets data API
  • IIFL Securities holdings API
  • IIFL EligiblePayoutAmount
  • IIFL GTT triggerPrice
  • IIFL avlbMgn margin API
  • Indian brokerage open 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