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/create | Create a processor token |
/processor/stripe/bank_account_token/create | Create a bank account token for use with Stripe |
/processor/token/permissions/set | Set product permissions for a processor token |
/processor/token/permissions/get | Get product permissions for a processor token |
See also | |
---|---|
/sandbox/processor_token/create | Create 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
.
client_id
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
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.access_token
account_id
account_id
value obtained from the onSuccess
callback in Linkprocessor
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
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 error41}
Response fields and example
processor_token
processor_token
that can then be used by the Plaid partner to make API requestsrequest_id
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/setclient_id
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
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.processor_token
processor-<environment>-<identifier>
products
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
, 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
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 error9}
Response fields and example
request_id
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.
client_id
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
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.processor_token
processor-<environment>-<identifier>
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 error9}
Response fields and example
request_id
products
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
, 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
.
client_id
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
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.access_token
account_id
account_id
value obtained from the onSuccess
callback in Link1// Change sandbox to development to test with live users and change2// 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 token30 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 error40}
Response fields and example
stripe_bank_account _token
request_id
1{2 "stripe_bank_account_token": "btok_5oEetfLzPklE1fwJZ7SG",3 "request_id": "xrQNYZ7Zoh6R7gV"4}