Plaid logo
Docs
ALL DOCS

API

  • Overview
  • Libraries
  • API versioning
  • Postman Collection
  • Webhooks
Product API reference
  • Transactions
  • Auth
  • Balance
  • Identity
  • Assets
  • Investments
  • Liabilities
  • Payment Initiation
  • Virtual Accounts
  • Transfer
  • Income
  • Identity Verification
  • Monitor
  • Beacon
  • Signal
  • Enrich
  • Statements (beta)
Other API reference
  • Item endpoints and webhooks
  • Account endpoints and schemas
  • Institution endpoints
  • Token flow and endpoints
  • Processor token endpoints
  • Sandbox endpoints
  • Processor partner endpoints
  • Reseller partner endpoints
Plaid logo
Docs
Close search modal
Ask Bill!
Ask Bill!
Hi! I'm Bill! You can ask me all about the Plaid API. Try asking questions like:
    Note: Bill isn't perfect. He's just a robot platypus that reads our docs for fun. You should treat his answers with the same healthy skepticism you might treat any other answer on the internet. This chat may be logged for quality and training purposes. Please don't send Bill any PII -- he's scared of intimacy. All chats with Bill are subject to Plaid's Privacy Policy.
    Plaid.com
    Log in
    Get API Keys
    Open nav

    Processor token endpoints

    API reference for endpoints for use with Plaid partners

    Processor token endpoints are used to create tokens that are then sent to a Plaid partner for use in a Plaid integration. For a full list of integrations, see the Plaid Dashboard. For specific information on Auth integrations, see Auth payment partners.

    Are you a Plaid processor partner looking for API docs? The documentation on API endpoints for use by partners has moved to Processor partner endpoints.

    In this section
    /processor/token/createCreate a processor token
    /processor/stripe/bank_account_token/createCreate a bank account token for use with Stripe
    /processor/token/permissions/setSet product permissions for a processor token
    /processor/token/permissions/getGet product permissions for a processor token
    See also
    /sandbox/processor_token/createCreate a test Item and processor token (Sandbox only)

    /processor/token/create

    Create processor token

    Used to create a token suitable for sending to one of Plaid's partners to enable integrations. Note that Stripe partnerships use bank account tokens instead; see /processor/stripe/bank_account_token/create for creating tokens for use with Stripe integrations. Once created, a processor token for a given Item cannot be modified or updated. If the account must be linked to a new or different partner resource, create a new Item by having the user go through the Link flow again; a new processor token can then be created from the new access_token. Processor tokens can also be revoked, using /item/remove.

    processor/token/create

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    access_token
    requiredstring
    The access token associated with the Item data is being requested for.
    account_id
    requiredstring
    The account_id value obtained from the onSuccess callback in Link
    processor
    requiredstring
    The processor you are integrating with.

    Possible values: dwolla, galileo, modern_treasury, ocrolus, vesta, drivewealth, vopay, achq, check, checkbook, circle, sila_money, rize, svb_api, unit, wyre, lithic, alpaca, astra, moov, treasury_prime, marqeta, checkout, solid, highnote, gemini, apex_clearing, gusto, adyen, atomic, i2c, wepay, riskified, utb, adp_roll, fortress_trust, bond, bakkt, teal, zero_hash, taba_pay, knot, sardine, alloy, finix
    Select group for content switcher
    Select Language
    1const {
    2 Configuration,
    3 PlaidApi,
    4 PlaidEnvironments,
    5 ProcessorTokenCreateRequest,
    6} = require('plaid');
    7// Change sandbox to development to test with live users;
    8// Change to production when you're ready to go live!
    9const configuration = new Configuration({
    10 basePath: PlaidEnvironments.sandbox,
    11 baseOptions: {
    12 headers: {
    13 'PLAID-CLIENT-ID': process.env.PLAID_CLIENT_ID,
    14 'PLAID-SECRET': process.env.PLAID_SECRET,
    15 'Plaid-Version': '2020-09-14',
    16 },
    17 },
    18});
    19
    20const plaidClient = new PlaidApi(configuration);
    21
    22try {
    23 // Exchange the public_token from Plaid Link for an access token.
    24 const tokenResponse = await plaidClient.itemPublicTokenExchange({
    25 public_token: PUBLIC_TOKEN,
    26 });
    27 const accessToken = tokenResponse.data.access_token;
    28
    29 // Create a processor token for a specific account id.
    30 const request: ProcessorTokenCreateRequest = {
    31 access_token: accessToken,
    32 account_id: accountID,
    33 processor: 'dwolla',
    34 };
    35 const processorTokenResponse = await plaidClient.processorTokenCreate(
    36 request,
    37 );
    38 const processorToken = processorTokenResponse.data.processor_token;
    39} catch (error) {
    40 // handle error
    41}
    processor/token/create

    Response fields and example

    processor_token
    string
    The processor_token that can then be used by the Plaid partner to make API requests
    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "processor_token": "processor-sandbox-0asd1-a92nc",
    3 "request_id": "xrQNYZ7Zoh6R7gV"
    4}
    Was this helpful?

    /processor/token/permissions/set

    Control a processor's access to products

    Used to control a processor's access to products on the given processor token. By default, a processor will have access to all available products on the corresponding item. To restrict access to a particular set of products, call this endpoint with the desired products. To restore access to all available products, call this endpoint with an empty list. This endpoint can be called multiple times as your needs and your processor's needs change.

    processor/token/permissions/set

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    processor_token
    requiredstring
    The processor token obtained from the Plaid integration partner. Processor tokens are in the format: processor-<environment>-<identifier>
    products
    required[string]
    A list of products the processor token should have access to. An empty list will grant access to all products.

    Possible values: assets, auth, balance, identity, identity_match, investments, investments_auth, liabilities, payment_initiation, identity_verification, transactions, credit_details, income, income_verification, deposit_switch, standing_orders, transfer, employment, recurring_transactions, signal, statements, processor_payments, processor_identity
    Select Language
    1try {
    2 const request: ProcessorTokenPermissionsSetRequest = {
    3 processor_token: processorToken,
    4 products: ['auth', 'balance', 'identity'],
    5 };
    6 const response = await plaidClient.processorTokenPermissionsSet(request);
    7} catch (error) {
    8 // handle error
    9}
    processor/token/permissions/set

    Response fields and example

    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "request_id": "xrQNYZ7Zoh6R7gV"
    3}
    Was this helpful?

    /processor/token/permissions/get

    Get a processor token's product permissions

    Used to get a processor token's product permissions. The products field will be an empty list if the processor can access all available products.

    processor/token/permissions/get

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    processor_token
    requiredstring
    The processor token obtained from the Plaid integration partner. Processor tokens are in the format: processor-<environment>-<identifier>
    Select Language
    1try {
    2 const request: ProcessorTokenPermissionsGetRequest = {
    3 processor_token: processorToken,
    4 };
    5 const response = await plaidClient.processorTokenPermissionsGet(request);
    6 const products = response.data.products;
    7} catch (error) {
    8 // handle error
    9}
    processor/token/permissions/get

    Response fields and example

    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    products
    [string]
    A list of products the processor token should have access to. An empty list means that the processor has access to all available products, including future products.

    Possible values: assets, auth, balance, identity, identity_match, investments, investments_auth, liabilities, payment_initiation, identity_verification, transactions, credit_details, income, income_verification, deposit_switch, standing_orders, transfer, employment, recurring_transactions, signal, statements, processor_payments, processor_identity
    1{
    2 "request_id": "xrQNYZ7Zoh6R7gV",
    3 "products": [
    4 "auth",
    5 "balance",
    6 "identity"
    7 ]
    8}
    Was this helpful?

    /processor/stripe/bank_account_token/create

    Create Stripe bank account token

    Used to create a token suitable for sending to Stripe to enable Plaid-Stripe integrations. For a detailed guide on integrating Stripe, see Add Stripe to your app.
    Note that the Stripe bank account token is a one-time use token. To store bank account information for later use, you can use a Stripe customer object and create an associated bank account from the token, or you can use a Stripe Custom account and create an associated external bank account from the token. This bank account information should work indefinitely, unless the user's bank account information changes or they revoke Plaid's permissions to access their account. Stripe bank account information cannot be modified once the bank account token has been created. If you ever need to change the bank account details used by Stripe for a specific customer, have the user go through Link again and create a new bank account token from the new access_token.
    Bank account tokens can also be revoked, using /item/remove.

    processor/stripe/bank_account_token/create

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    access_token
    requiredstring
    The access token associated with the Item data is being requested for.
    account_id
    requiredstring
    The account_id value obtained from the onSuccess callback in Link
    Select group for content switcher
    Select Language
    1// Change sandbox to development to test with live users and change
    2// to production when you're ready to go live!
    3const {
    4 Configuration,
    5 PlaidApi,
    6 PlaidEnvironments,
    7 ProcessorStripeBankAccountTokenCreateRequest,
    8} = require('plaid');
    9const configuration = new Configuration({
    10 basePath: PlaidEnvironments[process.env.PLAID_ENV],
    11 baseOptions: {
    12 headers: {
    13 'PLAID-CLIENT-ID': process.env.PLAID_CLIENT_ID,
    14 'PLAID-SECRET': process.env.PLAID_SECRET,
    15 'Plaid-Version': '2020-09-14',
    16 },
    17 },
    18});
    19
    20const plaidClient = new PlaidApi(configuration);
    21
    22try {
    23 // Exchange the public_token from Plaid Link for an access token.
    24 const tokenResponse = await plaidClient.itemPublicTokenExchange({
    25 public_token: PUBLIC_TOKEN,
    26 });
    27 const accessToken = tokenResponse.data.access_token;
    28
    29 // Generate a bank account token
    30 const request: ProcessorStripeBankAccountTokenCreateRequest = {
    31 access_token: accessToken,
    32 account_id: accountID,
    33 };
    34 const stripeTokenResponse = await plaidClient.processorStripeBankAccountTokenCreate(
    35 request,
    36 );
    37 const bankAccountToken = stripeTokenResponse.data.stripe_bank_account_token;
    38} catch (error) {
    39 // handle error
    40}
    processor/stripe/bank_account_token/create

    Response fields and example

    stripe_bank_account_token
    string
    A token that can be sent to Stripe for use in making API calls to Plaid
    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "stripe_bank_account_token": "btok_5oEetfLzPklE1fwJZ7SG",
    3 "request_id": "xrQNYZ7Zoh6R7gV"
    4}
    Was this helpful?
    Developer community
    GitHub
    GitHub
    Stack Overflow
    Stack Overflow
    YouTube
    YouTube
    Discord
    Discord