Link overview

Use Link to connect to your users' financial accounts with the Plaid API

Introduction to Link

image of Plaid Link UI

Plaid Link is the client-side component that your users will interact with in order to link their accounts to Plaid and allow you to access their accounts via the Plaid API.

Plaid Link will handle credential validation, multi-factor authentication, and error handling for each institution that we support. Link works across all modern browsers and platforms, including web, iOS, Android, and mobile webviews. For a full list of supported platforms, see Link client libraries.

Link flow

The diagram below shows a model of how Link is used to obtain a public_token, which can then be exchanged for an access_token, which is used to authenticate requests to the Plaid API.

The Plaid flow begins when your user wants to connect their bank account to your app.
Step  diagram
1Make a request to create a link_token and pass the temporary token to your app's client.
Step 1 diagram
2Use the link_token to open Link for your user. In the onSuccess callback, send the temporary public_token to your app's server.
Step 2 diagram
3Make a request to exchange the public_token for a permanent access_token and item_id for the new Item.
Step 3 diagram
4Store the access_token and use it to make product requests for your user's Item.
Step 4 diagram

In code, this flow is initiated by creating a link_token and using it to initialize Link. The link_token can be configured with the Plaid products you will be using and the countries you will need to support. Once the user has logged in via Link, Link will issue a callback containing a public_token. The exact details of this flow, including how to initialize Link, will vary by platform. For detailed instructions, see the page for your specific platform.

OAuth flows

Some institutions, especially those in Europe, use an OAuth authentication flow, in which Plaid Link redirects the end user to their bank's website or mobile app to authenticate. To learn how to connect to an institution that uses OAuth, see the OAuth guide.

Returning user flows

The returning user flow allows you to enable a faster Plaid Link experience for your users who already use Plaid. To learn more, see Returning user experience.

Error-handling flows

If your application will access an Item on a recurring basis, rather than just once, it should support update mode. Update mode allows you to fix an Item if it goes into an error state, such as when a user changes their password or MFA information. For more information, see Updating an Item.

It's also recommended to have special handling for when a user tries to link the same Item twice. Linking duplicate Items can lead to higher bills and end-user confusion. To learn more, see preventing duplicate Items.

Occasionally, Link itself can enter an error state if the user takes over 30 minutes to complete the Link process. For information on handling this flow, see Handling invalid Link tokens.

Customizing Link

You can customize parts of Link's flow, including some text elements, the institution select view, and the background color, and enable additional features like the Select Account view straight from the Dashboard. You can preview your changes in realtime and then publish them instantly once you're ready to go live. For more details, see Link customization.

Link's appearance will also automatically change if the institution selected is not in a healthy state. For more details, see Institution status in Link.

Link token migration

Prior to July 2020, Link was initialized using a public key instead of a link_token. If you are an existing Plaid developer using a Plaid public key, it is recommended that you migrate to a link_token-based implementation as soon as possible, using the instructions in the Link token migration guide. For those who are not yet ready to migrate, instructions on maintaining a legacy integration can be found in the legacy integration guide.

Troubleshooting

Since all your users will go through Link, it's important to build as robust an integration as possible. For details on dealing with common problems, see the Troubleshooting section.