1. Mint a link_token from your backend
Before opening Plaid Link, your backend must create a short-lived link_token that configures the Link session for this specific user.
Call /link/token/create
From your backend (server-side, never client-side), call POST https://production.plaid.com/link/token/create with at minimum:
client_idandsecret— your Plaid credentialsuser.client_user_id— a stable unique ID for this end user in your system (UUID recommended)client_name— your app’s display name shown to the user during Linkproducts— array of products to enable (e.g.,["transactions", "auth"])country_codes— e.g.,["US"]language— e.g.,"en"redirect_uri— the URI you registered in Setup step 4 (only required if you support OAuth banks)
2. Open Plaid Link in a browser
Plaid Link is the hosted UI Plaid serves. The user picks their bank, types their banking credentials, and completes any MFA — Plaid never exposes the bank password to you. Two minimal ways to run it:
Option A — Plaid Quickstart (fastest)
Clone Plaid Quickstart and follow the README. It runs locally with Docker or Node.js, opens Plaid Link in your browser, the user authenticates with their real bank, and the Quickstart app prints the resulting public_token to its console. Copy it.
Option B — Embed Plaid Link in your own app
Load the Plaid Link Web SDK and initialize it with the link_token from step 1.
- Add
<script src="https://cdn.plaid.com/link/v2/stable/link-initialize.js"></script>to your page. - Call
Plaid.create({ token: 'YOUR_LINK_TOKEN', onSuccess: (public_token, metadata) => console.log(public_token) }).open(). - After the user finishes authenticating, the
public_tokenarrives in theonSuccesscallback. Capture it (e.g., POST it to your backend, or for testing log it to the browser console). - Full reference: https://plaid.com/docs/link/web/
3. Paste the public_token below
Take the public_token from step 2 and paste it into the Public Token field in StackOne, then click Connect.
public_tokens are short-lived
A public_token is single-use and expires roughly 30 minutes after Plaid Link issues it. If you wait too long the exchange will fail and you will need to re-run Plaid Link to get a new one.
What StackOne does next
When you click Connect, StackOne calls POST /item/public_token/exchange with your client_id, secret, and the public_token. Plaid returns a permanent access_token (Plaid access_tokens do not expire) which StackOne stores on this connection. All actions for the products you specified in /link/token/create are now ready to run.
Linking the Account from the Hub
Navigate to the Hub
If the account linking is successful, you will see the newly linked account in your Accounts page.