> ## Documentation Index
> Fetch the complete documentation index at: https://lava.so/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Plaid

> Plaid financial data API for connecting bank accounts and retrieving balances, transactions, investment holdings, and liabilities.

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](https://plaid.com/docs/api/) for full documentation.

<Warning>This provider requires your own credentials — connect your API key or OAuth account before use.</Warning>

## Endpoints

### Fetch real-time account balances for a connected Item

**POST** `https://production.plaid.com/accounts/balance/get` — \$0.10 / request

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/accounts/balance/get', { body: {} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Faccounts%2Fbalance%2Fget" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
  </Tab>
</Tabs>

### List accounts for a connected Item

**POST** `https://production.plaid.com/accounts/get` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/accounts/get', { body: {} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Faccounts%2Fget" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
  </Tab>
</Tabs>

### Search institutions by name

**POST** `https://production.plaid.com/institutions/search` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/institutions/search', {
      body: {
    "query": "chase",
    "products": [
      "transactions"
    ],
    "country_codes": [
      "US"
    ]
    },
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Finstitutions%2Fsearch" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"query":"chase","products":["transactions"],"country_codes":["US"]}'
    ```
  </Tab>
</Tabs>

### Look up a Plaid institution by its ID

**POST** `https://production.plaid.com/institutions/get_by_id` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/institutions/get_by_id', { body: {"institution_id":"ins_109508","country_codes":["US"]} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Finstitutions%2Fget_by_id" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"institution_id":"ins_109508","country_codes":["US"]}'
    ```
  </Tab>
</Tabs>

### List institutions supported by Plaid

**POST** `https://production.plaid.com/institutions/get` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/institutions/get', { body: {"count":10,"offset":0,"country_codes":["US"]} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Finstitutions%2Fget" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"count":10,"offset":0,"country_codes":["US"]}'
    ```
  </Tab>
</Tabs>

### Incremental sync of transactions (cursor-based)

**POST** `https://production.plaid.com/transactions/sync` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/transactions/sync', { body: {} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Ftransactions%2Fsync" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
  </Tab>
</Tabs>

### Fetch transactions within a date range

**POST** `https://production.plaid.com/transactions/get` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/transactions/get', { body: {"start_date":"2025-01-01","end_date":"2025-01-31"} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Ftransactions%2Fget" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"start_date":"2025-01-01","end_date":"2025-01-31"}'
    ```
  </Tab>
</Tabs>

### Request an on-demand refresh of transactions

**POST** `https://production.plaid.com/transactions/refresh` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/transactions/refresh', { body: {} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Ftransactions%2Frefresh" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
  </Tab>
</Tabs>

### List recurring income/expense streams for an Item

**POST** `https://production.plaid.com/transactions/recurring/get` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/transactions/recurring/get', { body: {} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Ftransactions%2Frecurring%2Fget" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
  </Tab>
</Tabs>

### Fetch holdings for investment accounts

**POST** `https://production.plaid.com/investments/holdings/get` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/investments/holdings/get', { body: {} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Finvestments%2Fholdings%2Fget" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
  </Tab>
</Tabs>

### Fetch investment transactions within a date range

**POST** `https://production.plaid.com/investments/transactions/get` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/investments/transactions/get', { body: {"start_date":"2025-01-01","end_date":"2025-01-31"} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Finvestments%2Ftransactions%2Fget" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"start_date":"2025-01-01","end_date":"2025-01-31"}'
    ```
  </Tab>
</Tabs>

### Fetch liability details (credit, student loan, mortgage)

**POST** `https://production.plaid.com/liabilities/get` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/liabilities/get', { body: {} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Fliabilities%2Fget" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
  </Tab>
</Tabs>

### Fetch metadata about a connected Item

**POST** `https://production.plaid.com/item/get` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/item/get', { body: {} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Fitem%2Fget" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
  </Tab>
</Tabs>

### Disconnect an Item and invalidate its access\_token

**POST** `https://production.plaid.com/item/remove` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://production.plaid.com/item/remove', { body: {} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fproduction.plaid.com%2Fitem%2Fremove" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
  </Tab>
</Tabs>

## Next Steps

<CardGroup cols={2}>
  <Card title="All Providers" icon="grid" href="/gateway/supported-providers">
    Browse all supported AI providers
  </Card>

  <Card title="Forward Proxy" icon="route" href="/gateway/forward-proxy">
    Learn how to construct proxy URLs and authenticate requests
  </Card>
</CardGroup>
