Introduction to Investments

View holdings and transactions from investment accounts.

Explore API

Overview

The Investments product allows you to obtain holding, security, and transactions data for investment-type accounts in financial institutions within the United States, Canada, and the UK. This data can be used for personal financial management tools and wealth management analysis.

Securities and holdings

The /investments/holdings/get endpoint provides both security data and holding data. Security data represents information about a specific security, such as its name, ticker symbol, and price. Security data is not specific to a user's account; any user who held the same security at the same financial institution at the same time would have identical security data.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"close_price": 10.42,
"close_price_as_of": null,
"cusip": "258620103",
"institution_id": null,
"institution_security_id": null,
"is_cash_equivalent": false,
"isin": "US2586201038",
"iso_currency_code": "USD",
"name": "DoubleLine Total Return Bond Fund",
"proxy_security_id": null,
"security_id": "NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk",
"sedol": null,
"ticker_symbol": "DBLTX",
"type": "mutual fund",
"unofficial_currency_code": null
}

Holding data, by contrast, represents information about a user's specific ownership of that security, such as the number of shares owned and the cost basis. Each holding includes a security_id field that can be cross-referenced to a security for more detailed information about the security itself.

1
2
3
4
5
6
7
8
9
10
11
{
"account_id": "k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm",
"cost_basis": 10,
"institution_price": 10.42,
"institution_price_as_of": null,
"institution_value": 20.84,
"iso_currency_code": "USD",
"quantity": 2,
"security_id": "NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk",
"unofficial_currency_code": null
}

Transactions

The /investments/transactions/get endpoint provides data about investment transactions. The schema for investment transactions is not the same as for transactions data returned by the Transactions product, instead providing securities-specific information. Inflow, such as stock sales, is shown as a negative amount, and outflow, such as stock purchases, is positive. The /investments/transactions/get endpoint can only be used for investment-type accounts; for obtaining transaction history for other account types, use Transactions.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"account_id": "rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj",
"amount": -8.72,
"cancel_transaction_id": null,
"date": "2020-05-29",
"fees": 0,
"investment_transaction_id": "oq99Pz97joHQem4BNjXECev1E4B6L6sRzwANW",
"iso_currency_code": "USD",
"name": "INCOME DIV DIVIDEND RECEIVED",
"price": 0,
"quantity": 0,
"security_id": "eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ",
"subtype": "dividend",
"type": "cash",
"unofficial_currency_code": null
}

Investments updates and webhooks

Investments data is not static, since users' holdings will change as they trade and as market prices fluctuate. Plaid typically checks for updates to investment data overnight, after market hours. There are two webhooks that are used for informing you of changes to investment data. The DEFAULT_UPDATE webhook of type HOLDINGS fires when new holdings have been detected or the quantity or price of an existing holding has changed. The DEFAULT_UPDATE webhook of type INVESTMENTS_TRANSACTIONS fires when a new or canceled investment transaction has been detected.

Unlike Transactions, Investments does not have a webhook to indicate when initial transaction data has loaded. Instead, if transactions data is not ready when /investments/transactions/get is first called, Plaid will wait for the data. For this reason, calling /investments/transactions/get immediately after Link may take up to one to two minutes to return.

Testing Investments

Investments can be tested in Sandbox without any additional permissions. In order to test Investments against live Items in Development or Production, you will need to first request access by submitting a product access request Support ticket explaining your use case.