Skip to main content

Plaid

Plaid is a financial data network that gives applications a single API for connecting to bank accounts and other financial institutions. Through Plaid, Nexla can retrieve account and balance information, transaction history, identity data, investment holdings, and liabilities for a connected bank account (Item) from more than 12,000 financial institutions across the US, Canada, UK, and EU.

Plaid icon

Power end-to-end data operations for your Plaid API with Nexla. Our bi-directional Plaid connector is purpose-built for Plaid, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Plaid or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Plaid workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Plaid authenticates API requests using a client_id and secret issued to your Plaid developer account, plus an access_token that identifies the specific bank account (called an Item in Plaid's terminology) you want to read data from. Before creating a Plaid credential in Nexla, gather all three values.

  1. Sign up for a Plaid developer account at dashboard.plaid.com if you don't already have one.

  2. In the Plaid Dashboard, go to Developers > Keys (directly at dashboard.plaid.com/developers/keys) to view your client_id and secret. Plaid issues a separate secret for each environment, so copy the secret that matches the environment you plan to use.

  3. Decide which environment to connect to. Sandbox returns simulated data from test institutions and is the fastest way to build and test a flow without a real bank connection. Production returns live data from a real, connected bank account and requires your Plaid application to be approved for production access.

  4. Obtain an access_token for the bank account (Item) you want Nexla to read from:

    • Sandbox: Call /sandbox/public_token/create with a test institution ID to generate a public_token, then exchange it for an access_token by calling /item/public_token/exchange.
    • Production: Integrate Plaid Link, Plaid's client-side connection flow, into your application so an end user can securely log in to their bank. Link returns a public_token in its onSuccess callback, which your backend then exchanges for a permanent access_token via /item/public_token/exchange.
  5. Store the client_id, secret, and access_token securely. The access_token does not expire and grants ongoing read access to the connected account's financial data, so treat it as a credential rather than embedding it in client-side code.

For more detail on generating and exchanging tokens, see the Plaid Quickstart and the Plaid Item API reference.

Authenticate

Credentials required

Authenticate using Plaid client_id, secret, and access_token obtained from Plaid Link or Sandbox

FieldRequiredSecretDescription
Plaid API EnvironmentYesNoSelect Sandbox for testing or Production for live data Allowed values: Sandbox (Testing); Production (Live)
Client IDYesYesYour Plaid API client_id from dashboard.plaid.com/team/keys
SecretYesYesYour Plaid API secret from dashboard.plaid.com/team/keys
Access TokenYesYesPlaid access_token for the connected bank Item. Obtain via: (1) Sandbox: Use /sandbox/public_token/create then exchange, or (2) Production: Use Plaid Link flow then exchange public_token

Create a credential in Nexla

Plaid API Key Authentication uses your client_id, secret, and a bank-specific access_token directly — Nexla does not perform an interactive OAuth handshake for this connector.

  1. After selecting the data source type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Select the environment to connect to in the Plaid API Environment field: Sandbox (Testing) or Production (Live). This determines which Plaid API host Nexla sends requests to.

  4. Enter your Plaid client_id in the Client ID field. You can find this value on the Keys page of the Plaid Dashboard.

  5. Enter your Plaid secret in the Secret field. Plaid issues a separate secret for each environment, so make sure the value you enter matches the environment selected above.

  6. Enter the Access Token for the bank account (Item) you want to connect. This is the access_token you obtained by exchanging a Plaid Link (or Sandbox) public_token, as described in Prerequisites.

    The Access Token is tied to a single connected bank account (Item). If you need to pull data from multiple bank accounts, create a separate Nexla credential for each access_token.

  7. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Plaid connector tile, then select the credential that will be used to connect to Plaid, and click Next; or, create a new Plaid credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Plaid endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.

List Accounts

Retrieve bank accounts, balances, and account types for the connected Item.

  • Endpoint: POST {plaid_base_url}/accounts/get
  • Data path: $.accounts[*]

This endpoint returns one record per account associated with the connected Item, including account and sub-type, official and available balances, and masked account/routing information. For details on the response fields, see the Plaid Accounts API documentation.

Sync Transactions (Incremental)

Retrieve normalized transaction history for the connected Item using cursor-based incremental sync, so each run fetches only transactions added or changed since the previous run.

  • Endpoint: POST {plaid_base_url}/transactions/sync
  • Data path: $.added[*]
  • Results Per Page (Required): Number of transactions to return per request. Default 100; allowed values are 100 (Recommended), 250, and 500 (Max).

This endpoint uses Plaid's cursor-based pagination (next_cursor) to fetch only new or updated transactions since the last sync, rather than re-fetching the full transaction history on every run. For details, see the Plaid Transactions API documentation.

Get Identity

Retrieve account holder name, email, phone, and address information for the connected Item.

  • Endpoint: POST {plaid_base_url}/identity/get
  • Data path: $.accounts[*]

This endpoint returns personally identifiable information (PII) for the account holder. Handle the resulting Nexset in accordance with your organization's data handling policies. For details, see the Plaid Identity API documentation.

Get Auth (ACH Numbers)

Retrieve account and routing numbers for the connected Item's accounts, for use in ACH transfers.

  • Endpoint: POST {plaid_base_url}/auth/get
  • Data path: $.numbers.ach[*]

This endpoint returns account and routing numbers, which are highly sensitive banking details. Use this template only where ACH transfer functionality is actually required, and restrict access to the resulting Nexset accordingly. For details, see the Plaid Auth API documentation.

Get Investment Holdings

Retrieve investment holdings, securities, and cost basis for the connected Item's investment accounts.

  • Endpoint: POST {plaid_base_url}/investments/holdings/get
  • Data path: $.holdings[*]

This endpoint only returns data for Items that have the Investments product enabled. For details, see the Plaid Investments API documentation.

Get Liabilities

Retrieve credit card, mortgage, and student loan liability data for the connected Item.

  • Endpoint: POST {plaid_base_url}/liabilities/get
  • Data path: $.liabilities

This endpoint only returns data for Items that have the Liabilities product enabled. For details, see the Plaid Liabilities API documentation.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Plaid data sources can also be manually configured to ingest data from any valid Plaid API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

Unlike many REST APIs, Plaid does not authenticate requests with a header token. Instead, the client_id, secret, and access_token are sent as fields in the JSON request body on every call. Nexla populates these fields automatically from your credential, so you do not need to add them to the request body yourself when using the pre-built endpoint templates.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Plaid data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.