Skip to main content
Plaid does not let a server create a Production public_token from a username and password. The user must complete Plaid Link in a browser. Once they do, paste the public_token that Link returns into StackOne Hub, and StackOne exchanges it for the permanent access_token.

Create a Plaid User for the Income actions

Skip this section if you do not use the Income actions. Income data belongs to a Plaid User (a person), not to the bank link, so create the User before the link token.

1

Create the Plaid User

From your backend, call POST https://production.plaid.com/user/create with your client_id, secret and a client_user_id you choose (a stable ID for this person, not personal data). Plaid returns a user_id such as usr_....

  • Calling it again with the same client_user_id returns the same user_id. Plaid has no endpoint that lists Users, so this is also how you recover a lost user_id.
  • If you already have a Plaid connection under the same Plaid client, you can run its Create User action instead.
2

Note the user_id for two fields

Pass the user_id to /link/token/create in the next section, and paste the same value into the Plaid User ID field in StackOne Hub.

  • It must be the User the bank was linked under, otherwise the Income actions return INCOME_VERIFICATION_NOT_FOUND.

Before opening Plaid Link, your backend creates a short-lived link_token for this user.

1

Create the link token

From your backend, never the browser, call POST https://production.plaid.com/link/token/create with at least these fields:

  • client_id and secret: your Plaid keys
  • user.client_user_id: a stable ID for this person in your system
  • client_name: your app name, shown to the user in Link
  • products: the products to enable, for example ["transactions", "auth"]. Use only products this connection has actions for: transactions, auth, identity, investments, liabilities, assets, statements, income_verification, transfer and signal. Balance and Enrich need no entry here.
  • country_codes: for example ["US"]
  • language: for example "en"
  • user_id: the usr_... from the previous section. Plaid requires it when products includes income_verification.
  • income_verification: { "income_source_types": ["bank"] } when you use the Income actions
  • statements: { "start_date": "YYYY-MM-DD", "end_date": "YYYY-MM-DD" } when products includes statements. Plaid rejects the call without it.
  • redirect_uri: only if Plaid requires one for your platform (see the Plaid Link OAuth guide)
2

Copy the link_token

Plaid responds with a link_token (link-production-...) that is valid for 4 hours. Pass it to Plaid Link in the next section.

Plaid Link is the UI Plaid hosts. The user picks their bank, signs in and completes any MFA, and Plaid never shows you the bank password.

1

Open Plaid Link and get the public_token

Open Link with the link_token in one of two ways. Use only one of them: both end with a public_token after the user signs in.

  • Your own app (recommended): add <script src="https://cdn.plaid.com/link/v2/stable/link-initialize.js"></script> to your page and call Plaid.create({ token: 'YOUR_LINK_TOKEN', onSuccess: (public_token, metadata) => console.log(public_token) }).open(). The public_token arrives in the onSuccess callback. Full reference: Plaid Link for web.
  • The Plaid Quickstart: a sample app that runs Link locally, useful for a quick test. Its backend exchanges the public_token as soon as Link returns it, and a token works only once, so remove that exchange call before you use its token here.

Paste the public token and Plaid User ID

Paste the public_token into the Public Token field in StackOne Hub. Plaid expires it 30 minutes after Link issues it, so connect promptly.

  • If you created a Plaid User, paste its usr_... into the Plaid User ID field in StackOne Hub. Leave it empty if you do not use the Income actions.
  • When you connect, StackOne exchanges the public_token for a permanent access_token and stores it on the connection. The exchange uses up the token, so an expired or reused one fails and you must run Link again.
  • All actions for the products in your link token are then ready to run.

Limitations

Check these before you rely on this connection.

  • If the bank link stops working (for example ITEM_LOGIN_REQUIRED), the user signs in again through Plaid Link in update mode. Run Create Link Token with update_mode set to true.
  • Only bank income is supported. The connection does not create the Plaid User, so create it yourself and paste its user_id into Plaid User ID.
1

Connect

  • Click Connect.
  • If applicable, the provider will redirect you to a sign-in or authorization page. Complete the provider’s authorization flow.
  • Once authorization is successful, you will see a confirmation popup.
2

Use Actions

Connect an AI platform to the linked account’s actions. See AI Platforms.Other ways to call actions are listed in Protocols & SDKs.