canonical: https://jentic.com/apis/plaid.com/plaid

# Plaid The Plaid API

Connect applications to users' bank accounts for account verification, transaction history, and identity data across 12,000+ financial institutions. Plaid handles OAuth flows, credential rotation, and multi-factor authentication with each institution, returning normalised data through a single interface. Supports real-time balance checks, recurring transaction detection, and income verification workflows.

## For AI agents

Link bank accounts, retrieve transactions, verify balances, and pull identity data from 12,000+ financial institutions through a unified interface.

## Scope

Does not process payments, issue cards, or handle lending decisions - use for bank data aggregation and account verification only.

## Capabilities

- Link consumer bank accounts via tokenised OAuth handshake without handling raw credentials
- Pull normalised transaction history across checking, savings, and credit accounts
- Verify account ownership and real-time balances for payment initiation
- Detect recurring income streams and expense patterns from transaction feeds
- Generate audit-ready asset reports for lender underwriting decisions
- Enrich raw transaction strings with merchant name, category, and logo

## Use cases

### AI Agent Bank Account Integration

AI agents use Plaid through Jentic to programmatically link bank accounts, retrieve transaction data, and verify balances without managing institution-specific OAuth flows. The agent searches for the operation it needs, loads the schema, and executes - Jentic handles credential isolation and token refresh. Typical agent workflows include pulling transaction feeds for categorisation, checking balances before initiating transfers, and verifying account ownership.

Example prompt: Create a link token for a new user, exchange the public token after bank selection, then retrieve the last 7 days of transactions from the linked account

### Transaction Aggregation and Categorisation

Pull normalised transaction data from linked bank accounts across 12,000+ institutions. Plaid returns merchant name, amount, date, category, and location for each transaction. Transaction sync endpoints provide incremental updates without re-fetching full history, reducing bandwidth and latency for applications that poll frequently. Supports filtering by date range and account type.

Example prompt: Call /transactions/sync with the stored cursor to retrieve only new transactions since the last poll, then return the merchant name and amount for each

### Identity Verification and Account Ownership

Verify account holder identity by pulling name, address, email, and phone number directly from the financial institution. Used for KYC onboarding, reducing manual document collection. Plaid returns the data exactly as the bank holds it, providing higher confidence than user-entered information. Identity data is available immediately after account linking.

Example prompt: Call /identity/get for a linked item and return the account holder's full name and mailing address as stored by the institution

### Balance Checks for Payment Initiation

Check real-time available and current balances on linked accounts before initiating ACH transfers or bill payments. Prevents insufficient-fund failures by confirming balance covers the intended amount. Balance data refreshes on each API call to the institution, with support for checking, savings, and credit card accounts simultaneously.

Example prompt: Call /accounts/balance/get for the user's checking account and confirm the available balance exceeds $500 before approving a transfer

### Asset Report Generation for Lending

Generate point-in-time asset reports that summarise account balances, transaction history, and income patterns across all linked accounts. Lenders use these reports for mortgage pre-qualification and loan underwriting. Reports include 60 days of transaction history by default, with configurable lookback periods up to 2 years. Audit copies can be shared directly with third-party verifiers.

Example prompt: Create an asset report with a 90-day lookback for two linked items and retrieve the PDF version once the report is ready

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /link/token/create | Create a link token to initialise Plaid Link |
| POST | /item/public_token/exchange | Exchange a public token for an access token |
| POST | /transactions/get | Retrieve transactions for a linked item |
| POST | /transactions/sync | Incrementally sync new transactions |
| POST | /accounts/balance/get | Get real-time account balances |
| POST | /auth/get | Get account and routing numbers for ACH |
| POST | /identity/get | Get account holder identity data |
| POST | /asset_report/create | Create an asset report for underwriting |

## Key resources

- **Items** — A connection to a financial institution; create, refresh, and remove linked accounts
- **Transactions** — Normalised transaction data with merchant, category, and amount fields
- **Accounts** — Account metadata including balances, types, and routing numbers
- **Identity** — Account holder personal information as stored by the bank
- **Asset Reports** — Point-in-time snapshots of account history for lender verification

## Why Jentic

- **Setup:** Wiring Plaid by hand means learning its paired PLAID-CLIENT-ID and PLAID-SECRET header auth, choosing between the production and sandbox hosts, and hand-building requests across hundreds of POST endpoints yourself. Through Jentic you install once, import Plaid from the API Directory, store the client id and secret once, and your agent calls it.
- **Permission scoping:** Plaid operations take their target in the request body rather than the URL path, so scoping is operations-only: limit the agent to the operations it needs, such as fetching transactions or reading account balances. You choose which operations it may call, so ones like creating an asset report are not included unless you add them.
- **Credential handling:** Your Plaid client id and secret are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'retrieve bank transactions' or 'verify an account balance', and Jentic returns the matching Plaid operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Stripe API** — Stripe handles payment processing while Plaid provides bank account linking and verification
- **Adyen Checkout API** — Adyen processes payments across channels while Plaid provides the underlying bank data
- **Xero Accounting API** — Xero manages accounting records while Plaid feeds in bank transaction data

## FAQ

### What authentication does the Plaid API use?

Plaid uses API key authentication with two headers: PLAID-CLIENT-ID and PLAID-SECRET sent on every request, plus a Plaid-Version header for API versioning. Through Jentic, these credentials are stored encrypted in your Jentic One instance - agents receive scoped access tokens and never handle raw client IDs or secrets directly.

### Can I retrieve real-time bank balances with the Plaid API?

Yes. The /accounts/balance/get endpoint returns current and available balances by making a real-time call to the institution. This works for checking, savings, and credit card accounts. The available balance accounts for pending transactions that have not yet settled.

### What are the rate limits for the Plaid API?

Plaid enforces per-client rate limits that vary by endpoint and plan tier. Transaction endpoints allow hundreds of requests per minute on production plans. The /transactions/sync endpoint is designed for high-frequency polling with incremental cursors, reducing the need for repeated full-history fetches.

### How do I pull bank transactions through the Plaid API via Jentic?

Search Jentic for 'retrieve bank transactions', then load the /transactions/sync operation schema. The agent provides the access token and cursor (both managed by Jentic), and receives incremental transaction records with merchant name, amount, date, and category. Install the SDK with pip install jentic to get started, run it through Jentic One, the self-hosted execution layer.

### How many financial institutions does Plaid connect to?

The Plaid API connects to over 12,000 financial institutions across the US, Canada, and Europe. Coverage includes major banks, credit unions, and investment brokerages. Each institution connection is managed through Plaid Link, which handles the OAuth or credential-based authentication flow specific to that bank.

### Can I verify account ownership with Plaid before sending an ACH payment?

Yes. The /auth/get endpoint returns verified account and routing numbers after a user links their bank through Plaid Link. The /identity/get endpoint returns the account holder's name as stored by the institution, allowing you to match against the intended recipient before initiating a transfer.

### Can I limit what my agent is allowed to do with the Plaid API?

Yes. Because Plaid operations pass their target in the request body rather than the URL path, scoping is operations-based: in your own self-hosted Jentic One instance, your rules decide exactly which Plaid operations the agent may call and which stored credentials it may use. You can allow it to fetch transactions with /transactions/sync and read balances with /accounts/balance/get while withholding operations you have not approved, such as creating an asset report with /asset_report/create. The agent can only invoke the operations you have granted, so anything outside that set stays off limits.
