Plaid logo
Docs
ALL DOCS

API

  • Overview
  • Libraries
  • API versioning
  • Postman Collection
  • Webhooks
Payments and Funding
  • Auth
  • Balance
  • Identity
  • Signal
  • Transfer
  • Investments Move
  • Payment Initiation
  • Virtual Accounts
Financial Insights
  • Transactions
  • Investments
  • Liabilities
  • Enrich
KYC/AML and anti-fraud
  • Look up Dashboard users
  • Identity Verification
  • Monitor
  • Beacon (beta)
Instant Onboarding
  • Layer
Credit and Underwriting
  • Consumer Report (by Plaid Check)
  • Assets
  • Statements
  • Income
Fundamentals
  • Items
  • Accounts
  • Institutions
  • Sandbox
  • Link
  • Users
  • Consent
  • Network
  • OAuth
Partnerships
  • Processor tokens
  • Processor partners
  • Reseller partners
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. If using multiple processors, multiple different processor tokens can be created for a single access token. Once created, a processor token for a given Item cannot be modified or updated. To revoke the processor's access, the entire Item must be deleted by calling /item/remove.

    processor/token/create

    Request fields

    client_id
    stringstring
    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
    stringstring
    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
    requiredstringrequired, string
    The access token associated with the Item data is being requested for.
    account_id
    requiredstringrequired, string
    The account_id value obtained from the onSuccess callback in Link
    processor
    requiredstringrequired, string
    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, nuvei, layer, boom, paynote, stake, wedbush, esusu, ansa, scribeup, straddle, loanpro, bloom_credit, sfox
    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
    stringstring
    The processor_token that can then be used by the Plaid partner to make API requests
    request_id
    stringstring
    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

    client_id
    stringstring
    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
    stringstring
    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
    requiredstringrequired, string
    The processor token obtained from the Plaid integration partner. Processor tokens are in the format: processor-<environment>-<identifier>
    products
    required[string]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, balance_plus, beacon, identity, identity_match, investments, investments_auth, liabilities, payment_initiation, identity_verification, transactions, credit_details, income, income_verification, standing_orders, transfer, employment, recurring_transactions, transactions_refresh, signal, statements, processor_payments, processor_identity, profile, cra_base_report, cra_income_insights, cra_partner_insights, cra_network_insights, cra_cashflow_insights, layer, pay_by_bank
    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
    stringstring
    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

    client_id
    stringstring
    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
    stringstring
    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
    requiredstringrequired, string
    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
    stringstring
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    products
    [string][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, balance_plus, beacon, identity, identity_match, investments, investments_auth, liabilities, payment_initiation, identity_verification, transactions, credit_details, income, income_verification, standing_orders, transfer, employment, recurring_transactions, transactions_refresh, signal, statements, processor_payments, processor_identity, profile, cra_base_report, cra_income_insights, cra_partner_insights, cra_network_insights, cra_cashflow_insights, layer, pay_by_bank
    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.
    To revoke a bank account token, the entire underlying access token must be revoked using /item/remove.

    processor/stripe/bank_account_token/create

    Request fields

    client_id
    stringstring
    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
    stringstring
    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
    requiredstringrequired, string
    The access token associated with the Item data is being requested for.
    account_id
    requiredstringrequired, string
    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
    stringstring
    A token that can be sent to Stripe for use in making API calls to Plaid
    request_id
    stringstring
    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