Skip to main content
Plaid financial data API for connecting bank accounts and retrieving balances, transactions, investment holdings, and liabilities. Users connect banks via Plaid Hosted Link — Plaid hosts the entire Link UI at secure.plaid.com, fires a SESSION_FINISHED webhook back to Lava, and each bank is stored as a distinct credential. Callers pick which bank to query on each request via the x-lava-plaid-item header. Best for personal finance, bookkeeping, and portfolio-tracking workflows that span multiple banks. 14 endpoints available through Lava’s AI Gateway. See the Plaid API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.

Endpoints

Fetch real-time account balances for a connected Item

POST https://production.plaid.com/accounts/balance/get — $0.10 / request
const data = await lava.gateway('https://production.plaid.com/accounts/balance/get', { body: {} });

List accounts for a connected Item

POST https://production.plaid.com/accounts/get — Free
const data = await lava.gateway('https://production.plaid.com/accounts/get', { body: {} });

Search institutions by name

POST https://production.plaid.com/institutions/search — Free
const data = await lava.gateway('https://production.plaid.com/institutions/search', {
  body: {
"query": "chase",
"products": [
  "transactions"
],
"country_codes": [
  "US"
]
},
});

Look up a Plaid institution by its ID

POST https://production.plaid.com/institutions/get_by_id — Free
const data = await lava.gateway('https://production.plaid.com/institutions/get_by_id', { body: {"institution_id":"ins_109508","country_codes":["US"]} });

List institutions supported by Plaid

POST https://production.plaid.com/institutions/get — Free
const data = await lava.gateway('https://production.plaid.com/institutions/get', { body: {"count":10,"offset":0,"country_codes":["US"]} });

Incremental sync of transactions (cursor-based)

POST https://production.plaid.com/transactions/sync — Free
const data = await lava.gateway('https://production.plaid.com/transactions/sync', { body: {} });

Fetch transactions within a date range

POST https://production.plaid.com/transactions/get — Free
const data = await lava.gateway('https://production.plaid.com/transactions/get', { body: {"start_date":"2025-01-01","end_date":"2025-01-31"} });

Request an on-demand refresh of transactions

POST https://production.plaid.com/transactions/refresh — Free
const data = await lava.gateway('https://production.plaid.com/transactions/refresh', { body: {} });

List recurring income/expense streams for an Item

POST https://production.plaid.com/transactions/recurring/get — Free
const data = await lava.gateway('https://production.plaid.com/transactions/recurring/get', { body: {} });

Fetch holdings for investment accounts

POST https://production.plaid.com/investments/holdings/get — Free
const data = await lava.gateway('https://production.plaid.com/investments/holdings/get', { body: {} });

Fetch investment transactions within a date range

POST https://production.plaid.com/investments/transactions/get — Free
const data = await lava.gateway('https://production.plaid.com/investments/transactions/get', { body: {"start_date":"2025-01-01","end_date":"2025-01-31"} });

Fetch liability details (credit, student loan, mortgage)

POST https://production.plaid.com/liabilities/get — Free
const data = await lava.gateway('https://production.plaid.com/liabilities/get', { body: {} });

Fetch metadata about a connected Item

POST https://production.plaid.com/item/get — Free
const data = await lava.gateway('https://production.plaid.com/item/get', { body: {} });

Disconnect an Item and invalidate its access_token

POST https://production.plaid.com/item/remove — Free
const data = await lava.gateway('https://production.plaid.com/item/remove', { body: {} });

Next Steps

All Providers

Browse all supported AI providers

Forward Proxy

Learn how to construct proxy URLs and authenticate requests