Holding entity

A holding in an investment account. Holdings in the investment account. Plaid maps the `holding` and the `investmentAccount` FDX models to its securities models, which hold universal information like the ticker symbol, and to its holdings models, which hold account-specific information like balances. For more information, see [Plaid investments](https://plaid.com/docs/investments/#securities-and-holdings)

Financial DataOpen BankingOpen FinanceFinancial Data ExchangeConsumer-PermissionedAccount DataTransactionInvestmentInsuranceTax DataPayrollRESTOAuthFAPICFPB 1033Authentication

Properties

Name Type Description
securityIds array Array of security identifiers
holdingName string Holding name or security name
holdingType object
holdingSubType object
symbol string Ticker / Market symbol This field is **required** unless both `securityId` and `securityIdType` are provided
purchasedPrice number Price of holding at the time of purchase. Plaid determines an approximate [cost basis](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-holdings-cost-basis) using the
currentUnitPrice number Current unit price. Plaid uses this as the [institution_price](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-holdings-institution-price). Plaid falls back to using
currentUnitPriceDate object Current unit price as of date ISO 8601 full-date in format 'YYYY-MM-DD' according to [IETF RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339.html#section-5.6)
units number Plaid requires this field for holdings and transactions involving securities. For security-based actions other than stock splits, quantity. Shares for stocks, mutual funds, and others. Face value for
marketValue number Market value at the time of data retrieved
faceValue number Required for bonds. Face value at the time of data retrieved. If this isn't present, Plaid assumes the holding isn't a bond and falls back to `marketValue`.
cashAccount boolean If true, indicates that this holding is used to maintain proceeds from sales, dividends, and other cash postings to the investment account. If you don't set a value for `isCashEquivalent` in the `fiAt
currency object Currency information if it is different from Account entity
fiAttributes array Array of financial institution-specific attributes. Plaid recommends including a value for [`is_cash_equivalent`](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-sec
View JSON Schema on GitHub

JSON Schema

fdx-holding.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Holding entity",
  "description": "A holding in an investment account.\nHoldings in the investment account.\nPlaid maps the `holding` and the `investmentAccount` FDX models to its securities models, which hold universal information like the ticker symbol, and to its holdings models, which hold account-specific information like balances. For more information, see [Plaid investments](https://plaid.com/docs/investments/#securities-and-holdings)\n",
  "allOf": [
    {
      "type": "object",
      "properties": {
        "securityIds": {
          "description": "Array of security identifiers\n",
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/SecurityId"
          }
        },
        "holdingName": {
          "type": "string",
          "description": "Holding name or security name\n"
        },
        "holdingType": {
          "$ref": "#/components/schemas/HoldingType"
        },
        "holdingSubType": {
          "$ref": "#/components/schemas/HoldingSubType"
        },
        "symbol": {
          "type": "string",
          "description": "Ticker / Market symbol\nThis field is **required** unless both `securityId` and `securityIdType` are provided\n"
        },
        "purchasedPrice": {
          "type": "number",
          "description": "Price of holding at the time of purchase.\nPlaid determines an approximate [cost basis](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-holdings-cost-basis)\nusing the purchase price and the number of units. Plaid cannot take fees into account to determine the cost basis\nbecause the FDX holding schema doesn't include fees.\n"
        },
        "currentUnitPrice": {
          "type": "number",
          "description": "Current unit price. Plaid uses this as the [institution_price](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-holdings-institution-price).\nPlaid falls back to using this as the [close price](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-securities-close-price)\nif you don't return `securityId` for holdings involving securities.\n"
        },
        "currentUnitPriceDate": {
          "$ref": "#/components/schemas/DateString",
          "description": "Current unit price as of date\n\nISO 8601 full-date in format 'YYYY-MM-DD' according\nto [IETF RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339.html#section-5.6)\n"
        },
        "units": {
          "type": "number",
          "description": "Plaid requires this field for holdings and transactions involving securities.\nFor security-based actions other than stock splits, quantity.\nShares for stocks, mutual funds, and others. Face value for bonds.\nContracts for options.\n\n**Note:** This field is required if the transaction involves a security.\n"
        },
        "marketValue": {
          "type": "number",
          "description": "Market value at the time of data retrieved\n"
        },
        "faceValue": {
          "type": "number",
          "description": "Required for bonds. Face value at the time of data retrieved. If this isn't present,\nPlaid assumes the holding  isn't a bond and falls back to `marketValue`.\n"
        },
        "cashAccount": {
          "type": "boolean",
          "description": "If true, indicates that this holding is used to maintain proceeds\nfrom sales, dividends, and other cash postings to the investment account.\nIf you don't set a value for `isCashEquivalent` in the `fiAttributes` array,\nthen Plaid uses `cashAccount` in determining the [`is_cash_equivalent`](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-securities-is-cash-equivalent)\nstatus.\n"
        },
        "currency": {
          "$ref": "#/components/schemas/Currency",
          "description": "Currency information if it is different from Account entity\n"
        },
        "fiAttributes": {
          "type": "array",
          "description": "Array of financial institution-specific attributes.\nPlaid recommends including a value for [`is_cash_equivalent`](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-securities-is-cash-equivalent)\nproperty in this array.\nPlaid accepts `isCashEquivalent` as the attribute name and a string value of `true` or `false`.\nIf you return a value for `isCashEquivalent`, then return the same value for `cashAccount` as a boolean.\n",
          "items": {
            "$ref": "#/components/schemas/FiAttribute"
          }
        }
      },
      "required": [
        "cashAccount",
        "marketValue"
      ]
    }
  ]
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/fdx-holding"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.