Plaid logo
Docs
ALL DOCS

Link

  • Overview
Platforms
  • Web
  • iOS
  • Android
  • React Native
  • Hosted Link
Core Link functionality
  • OAuth guide
  • Update mode
  • Preventing duplicate Items
  • Data Transparency Messaging migration
  • Returning user experience
Additional Link modes
  • Embedded Link
  • Multi-Item Link
  • Link Recovery (beta)
  • Modular Link (UK/EU only)
Optimizing Link
  • Link analytics and tracking
  • Optimizing Link conversion
  • Pre-Link messaging
  • Customizing Link
  • Choosing when to initialize products
Errors and troubleshooting
  • Troubleshooting
  • Handling an invalid Link Token
  • Institution status in Link
Legacy flows
  • Legacy public key integrations
  • Link Token migration guide
  • Webview integrations
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

    Link Web SDK

    Reference for integrating with the Link JavaScript SDK and React SDK

    Prefer to learn with code examples? Check out our GitHub repo with working example Link implementations for both JavaScript and React.

    Installation

    Select group for content switcher

    Include the Plaid Link initialize script on each page of your site. It must always be loaded directly from https://cdn.plaid.com, rather than included in a bundle or hosted yourself. Unlike Plaid's other SDKs, the JavaScript web SDK is not versioned; cdn.plaid.com will automatically provide the latest available SDK.

    1<script src="https://cdn.plaid.com/link/v2/stable/link-initialize.js"></script>

    To get started with Plaid Link for React, clone the GitHub repository and review the example application and README, which provide reference implementations.

    Next, you'll need to install the react-plaid-link package.

    With npm:

    1npm install --save react-plaid-link

    With yarn:

    1yarn add react-plaid-link

    Then import the necessary components and types:

    1import {
    2 usePlaidLink,
    3 PlaidLinkOptions,
    4 PlaidLinkOnSuccess,
    5} from 'react-plaid-link';

    CSP directives

    If you are using a Content Security Policy (CSP), use the following directives to allow Link traffic:

    1default-src https://cdn.plaid.com/;
    2script-src 'unsafe-inline' https://cdn.plaid.com/link/v2/stable/link-initialize.js;
    3frame-src https://cdn.plaid.com/;
    4connect-src https://production.plaid.com/;

    If using Sandbox instead of Production, make sure to update the connect-src directive to point to the appropriate server (https://sandbox.plaid.com).

    Creating a Link token

    Before you can create an instance of Link, you need to first create a link_token. A link_token can be configured for different Link flows and is used to control much of Link's behavior. To learn how to create a new link_token, see the API Reference entry for /link/token/create.

    =*=*=*=

    Create

    Plaid.create accepts one argument, a configuration Object, and returns an Object with three functions, open, exit, and destroy. Calling open will open Link and display the Consent Pane view, calling exit will close Link, and calling destroy will clean up the iframe.
    It is recommended to call Plaid.create when initializing the view that is responsible for loading Plaid, as this will allow Plaid to pre-initialize Link, resulting in lower UI latency upon calling open, which can increase Link conversion.
    When using the React SDK, this method is called usePlaidLink and returns an object with four values, open, exit, ready, and error. The values open and exit behave as described above. ready is a passthrough for onLoad and will be true when Link is ready to be opened. error is populated only if Plaid fails to load the Link JavaScript. There is no separate method to destroy Link in the React SDK, as unmount will automatically destroy the Link instance.
    Note: Control whether or not your Link integration uses the Account Select view from the Dashboard.

    create

    Properties

    token
    stringstring
    Specify a link_token to authenticate your app with Link. This is a short lived, one-time use token that should be unique for each Link session. In addition to the primary flow, a link_token can be configured to launch Link in update mode. See the /link/token/create endpoint for a full list of configurations.
    onSuccess
    callbackcallback
    A function that is called when a user successfully links an Item. The function should expect two arguments, the public_token and a metadata object. See onSuccess.
    onExit
    callbackcallback
    A function that is called when a user exits Link without successfully linking an Item, or when an error occurs during Link initialization. The function should expect two arguments, a nullable error object and a metadata object. See onExit.
    onEvent
    callbackcallback
    A function that is called when a user reaches certain points in the Link flow. The function should expect two arguments, an eventName string and a metadata object. See onEvent.
    onLoad
    callbackcallback
    A function that is called when the Link module has finished loading. Calls to plaidLinkHandler.open() prior to the onLoad callback will be delayed until the module is fully loaded.
    receivedRedirectUri
    stringstring
    A receivedRedirectUri is required to support OAuth authentication flows when re-launching Link on a mobile device.
    key
    deprecatedstringdeprecated, string
    The public_key is no longer used for new implementations of Link. If your integration is still using a public_key, see the migration guide to upgrade to using a link_token. See the maintenance guide to troubleshoot any public_key issues.
    Select Language
    1// The usePlaidLink hook manages Plaid Link creation
    2// It does not return a destroy function;
    3// instead, on unmount it automatically destroys the Link instance
    4const config: PlaidLinkOptions = {
    5 onSuccess: (public_token, metadata) => {}
    6 onExit: (err, metadata) => {}
    7 onEvent: (eventName, metadata) => {}
    8 token: 'GENERATED_LINK_TOKEN',
    9};
    10
    11const { open, exit, ready } = usePlaidLink(config);
    =*=*=*=

    onSuccess

    The onSuccess callback is called when a user successfully links an Item. It takes two arguments: the public_token and a metadata object.

    onSuccess

    Properties

    public_token
    stringstring
    Displayed once a user has successfully completed Link. If using Identity Verification or Beacon, this field will be null. If using Document Income or Payroll Income, the public_token will be returned, but is not used.
    metadata
    objectobject
    Displayed once a user has successfully completed Link.
    institution
    nullableobjectnullable, object
    An institution object. If the Item was created via Same-Day micro-deposit verification, will be null.
    name
    stringstring
    The full institution name, such as 'Wells Fargo'
    institution_id
    stringstring
    The Plaid institution identifier
    accounts
    objectobject
    A list of accounts attached to the connected Item. If Account Select is enabled via the developer dashboard, accounts will only include selected accounts.
    id
    stringstring
    The Plaid account_id
    name
    stringstring
    The official account name
    mask
    nullablestringnullable, string
    The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts. It may also not match the mask that the bank displays to the user.
    type
    stringstring
    The account type. See the Account schema for a full list of possible values
    subtype
    stringstring
    The account subtype. See the Account schema for a full list of possible values
    verification_status
    nullablestringnullable, string
    Indicates an Item's micro-deposit-based verification or database verification status. Possible values are:
    pending_automatic_verification: The Item is pending automatic verification
    pending_manual_verification: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the deposit.
    automatically_verified: The Item has successfully been automatically verified
    manually_verified: The Item has successfully been manually verified
    verification_expired: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.
    verification_failed: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.
    database_matched: The Item has successfully been verified using Plaid's data sources.
    database_insights_pending: The Database Insights result is pending and will be available upon Auth request.
    null: Neither micro-deposit-based verification nor database verification are being used for the Item.
    class_type
    nullablestringnullable, string
    If micro-deposit verification is being used, indicates whether the account being verified is a business or personal account.
    account
    deprecatednullableobjectdeprecated, nullable, object
    Deprecated. Use accounts instead.
    link_session_id
    stringstring
    A unique identifier associated with a user's actions and events through the Link flow. Include this identifier when opening a support ticket for faster turnaround.
    transfer_status
    nullablestringnullable, string
    The status of a transfer. Returned only when Transfer UI is implemented.
    • COMPLETE – The transfer was completed.
    • INCOMPLETE – The transfer could not be completed. For help, see Troubleshooting transfers.


    Possible values: COMPLETE, INCOMPLETE
    Select Language
    1import {
    2 PlaidLinkOnSuccess,
    3 PlaidLinkOnSuccessMetadata,
    4} from 'react-plaid-link';
    5
    6const onSuccess = useCallback<PlaidLinkOnSuccess>(
    7 (public_token: string, metadata: PlaidLinkOnSuccessMetadata) => {
    8 // log and save metadata
    9 // exchange public token (if using Item-based products)
    10 fetch('//yourserver.com/exchange-public-token', {
    11 method: 'POST',
    12 headers: {
    13 'Content-Type': 'application/json',
    14 },
    15 body: {
    16 public_token,
    17 },
    18 });
    19 },
    20 [],
    21);
    1{
    2 institution: {
    3 name: 'Wells Fargo',
    4 institution_id: 'ins_4'
    5 },
    6 accounts: [
    7 {
    8 id: 'ygPnJweommTWNr9doD6ZfGR6GGVQy7fyREmWy',
    9 name: 'Plaid Checking',
    10 mask: '0000',
    11 type: 'depository',
    12 subtype: 'checking',
    13 verification_status: null
    14 },
    15 {
    16 id: '9ebEyJAl33FRrZNLBG8ECxD9xxpwWnuRNZ1V4',
    17 name: 'Plaid Saving',
    18 mask: '1111',
    19 type: 'depository',
    20 subtype: 'savings'
    21 }
    22 ...
    23 ],
    24 link_session_id: '79e772be-547d-4c9c-8b76-4ac4ed4c441a'
    25}
    =*=*=*=

    onExit

    The onExit callback is called when a user exits Link without successfully linking an Item, or when an error occurs during Link initialization. onExit takes two arguments, a nullable error object and a metadata object. The metadata parameter is always present, though some values may be null. Note that onExit will not be called when Link is destroyed in some other way than closing Link, such as the user hitting the browser back button or closing the browser tab on which the Link session is present.

    onExit

    Properties

    error
    nullableobjectnullable, object
    A nullable object that contains the error type, code, and message of the error that was last encountered by the user. If no error was encountered, error will be null.
    error_type
    StringString
    A broad categorization of the error.
    error_code
    StringString
    The particular error code. Each error_type has a specific set of error_codes.
    error_message
    StringString
    A developer-friendly representation of the error code.
    display_message
    nullableStringnullable, String
    A user-friendly representation of the error code. null if the error is not related to user action. This may change over time and is not safe for programmatic use.
    metadata
    objectobject
    Displayed if a user exits Link without successfully linking an Item.
    institution
    nullableobjectnullable, object
    An institution object. If the Item was created via Same-Day micro-deposit verification, will be null.
    name
    stringstring
    The full institution name, such as Wells Fargo
    institution_id
    stringstring
    The Plaid institution identifier
    status
    stringstring
    The point at which the user exited the Link flow. One of the following values.
    requires_questions
    User prompted to answer security questions
    requires_selections
    User prompted to answer multiple choice question(s)
    requires_code
    User prompted to provide a one-time passcode
    choose_device
    User prompted to select a device on which to receive a one-time passcode
    requires_credentials
    User prompted to provide credentials for the selected financial institution or has not yet selected a financial institution
    requires_account_selection
    User prompted to select one or more financial accounts to share
    requires_oauth
    User prompted to enter an OAuth flow
    institution_not_found
    User exited the Link flow on the institution selection pane. Typically this occurs after the user unsuccessfully (no results returned) searched for a financial institution. Note that this status does not necessarily indicate that the user was unable to find their institution, as it is used for all user exits that occur from the institution selection pane, regardless of other user behavior.
    institution_not_supported
    User exited the Link flow after discovering their selected institution is no longer supported by Plaid
    link_session_id
    stringstring
    A unique identifier associated with a user's actions and events through the Link flow. Include this identifier when opening a support ticket for faster turnaround.
    request_id
    stringstring
    The request ID for the last request made by Link. This can be shared with Plaid Support to expedite investigation.
    Select Language
    1import {
    2 PlaidLinkOnExit,
    3 PlaidLinkOnExitMetadata,
    4 PlaidLinkError,
    5} from 'react-plaid-link';
    6
    7const onExit = useCallback<PlaidLinkOnExit>(
    8 (error: PlaidLinkError, metadata: PlaidLinkOnExitMetadata) => {
    9 // log and save error and metadata
    10 // handle invalid link token
    11 if (error != null && error.error_code === 'INVALID_LINK_TOKEN') {
    12 // generate new link token
    13 }
    14 // to handle other error codes, see https://plaid.com/docs/errors/
    15 },
    16 [],
    17);
    1{
    2 error_type: 'ITEM_ERROR',
    3 error_code: 'INVALID_CREDENTIALS',
    4 error_message: 'the credentials were not correct',
    5 display_message: 'The credentials were not correct.',
    6}
    1{
    2 institution: {
    3 name: 'Wells Fargo',
    4 institution_id: 'ins_4'
    5 },
    6 status: 'requires_credentials',
    7 link_session_id: '36e201e0-2280-46f0-a6ee-6d417b450438',
    8 request_id: '8C7jNbDScC24THu'
    9}
    =*=*=*=

    onEvent

    The onEvent callback is called at certain points in the Link flow. It takes two arguments, an eventName string and a metadata object.
    The metadata parameter is always present, though some values may be null. Note that new eventNames, metadata keys, or view names may be added without notice.
    The OPEN, LAYER_READY, and LAYER_NOT_AVAILABLE events will fire in real time; subsequent events will fire at the end of the Link flow, along with the onSuccess or onExit callback. Callback ordering is not guaranteed; onEvent callbacks may fire before, after, or surrounding the onSuccess or onExit callback, and event callbacks are not guaranteed to fire in the order in which they occurred. If you need to determine the exact time when an event happened, use the timestamp in the metadata.
    The following callback events are stable, which means that they are suitable for programmatic use in your application's logic: OPEN, EXIT, HANDOFF, SELECT_INSTITUTION, ERROR, BANK_INCOME_INSIGHTS_COMPLETED, IDENTITY_VERIFICATION_PASS_SESSION, IDENTITY_VERIFICATION_FAIL_SESSION, IDENTITY_MATCH_FAILED, IDENTITY_MATCH_PASSED, LAYER_READY, LAYER_NOT_AVAILABLE. The remaining callback events are informational and subject to change and should be used for analytics and troubleshooting purposes only.

    onEvent

    Properties

    eventName
    stringstring
    A string representing the event that has just occurred in the Link flow.
    AUTO_SUBMIT_PHONE
    The user was automatically sent an OTP code without a UI prompt. This event can only occur if the user's phone phone number was provided to Link via the /link/token/create call and the user has previously consented to receive OTP codes from Plaid.
    BANK_INCOME_INSIGHTS_COMPLETED
    The user has completed the Assets and Bank Income Insights flow.
    CLOSE_OAUTH
    The user closed the third-party website or mobile app without completing the OAuth flow.
    CONNECT_NEW_INSTITUTION
    The user has chosen to link a new institution instead of linking a saved institution. This event is only emitted in the Link Returning User Experience flow.
    ERROR
    A recoverable error occurred in the Link flow, see the error_code metadata.
    EXIT
    The user has exited without completing the Link flow and the onExit callback is fired.
    FAIL_OAUTH
    The user encountered an error while completing the third-party's OAuth login flow.
    HANDOFF
    The user has exited Link after successfully linking an Item.
    IDENTITY_MATCH_FAILED
    An Identity Match check configured via the Account Verification Dashboard failed the Identity Match rules and did not detect a match.
    IDENTITY_MATCH_PASSED
    An Identity Match check configured via the Account Verification Dashboard passed the Identity Match rules and detected a match.
    IDENTITY_VERIFICATION_START_STEP
    The user has started a step of the Identity Verification flow. The step is indicated by view_name.
    IDENTITY_VERIFICATION_PASS_STEP
    The user has passed a step of the Identity Verification flow. The step is indicated by view_name.
    IDENTITY_VERIFICATION_FAIL_STEP
    The user has failed a step of the Identity Verification flow. The step is indicated by view_name.
    IDENTITY_VERIFICATION_PENDING_REVIEW_STEP
    The user has reached the pending review state.
    IDENTITY_VERIFICATION_CREATE_SESSION
    The user has started a new Identity Verification session.
    IDENTITY_VERIFICATION_RESUME_SESSION
    The user has resumed an existing Identity Verification session.
    IDENTITY_VERIFICATION_PASS_SESSION
    The user has passed their Identity Verification session.
    IDENTITY_VERIFICATION_FAIL_SESSION
    The user has failed their Identity Verification session.
    IDENTITY_VERIFICATION_PENDING_REVIEW_SESSION
    The user has completed their Identity Verification session, which is now in a pending review state.
    IDENTITY_VERIFICATION_OPEN_UI
    The user has opened the UI of their Identity Verification session.
    IDENTITY_VERIFICATION_RESUME_UI
    The user has resumed the UI of their Identity Verification session.
    IDENTITY_VERIFICATION_CLOSE_UI
    The user has closed the UI of their Identity Verification session.
    LAYER_AUTOFILL_NOT_AVAILABLE
    The user's date of birth passed to Link is not eligible for Layer autofill.
    LAYER_NOT_AVAILABLE
    The user phone number passed to Link is not eligible for Layer.
    LAYER_READY
    The user phone number passed to Link is eligible for Layer and open() may now be called.
    MATCHED_SELECT_INSTITUTION
    The user selected an institution that was presented as a matched institution. This event can be emitted if Embedded Institution Search is being used, if the institution was surfaced as a matched institution likely to have been linked to Plaid by a returning user, or if the institution's routing_number was provided when calling /link/token/create. For details on which scenario is triggering the event, see metadata.matchReason.
    OPEN
    The user has opened Link.
    OPEN_MY_PLAID
    The user has opened my.plaid.com. This event is only sent when Link is initialized with Assets as a product
    OPEN_OAUTH
    The user has navigated to a third-party website or mobile app in order to complete the OAuth login flow.
    SEARCH_INSTITUTION
    The user has searched for an institution.
    SELECT_AUTH_TYPE
    The user has chosen whether to Link instantly or manually (i.e., with micro-deposits). This event emits the selection metadata to indicate the user's selection.
    SELECT_BRAND
    The user selected a brand, e.g. Bank of America. The SELECT_BRAND event is only emitted for large financial institutions with multiple online banking portals.
    SELECT_DEGRADED_INSTITUTION
    The user selected an institution with a DEGRADED health status and was shown a corresponding message.
    SELECT_DOWN_INSTITUTION
    The user selected an institution with a DOWN health status and was shown a corresponding message.
    SELECT_FILTERED_INSTITUTION
    The user selected an institution Plaid does not support all requested products for and was shown a corresponding message.
    SELECT_INSTITUTION
    The user selected an institution.
    SKIP_SUBMIT_PHONE
    The user has opted to not provide their phone number to Plaid. This event is only emitted in the Link Returning User Experience flow.
    SUBMIT_ACCOUNT_NUMBER
    The user has submitted an account number. This event emits the account_number_mask metadata to indicate the mask of the account number the user provided.
    SUBMIT_CREDENTIALS
    The user has submitted credentials.
    SUBMIT_DOCUMENTS
    The user is being prompted to submit documents for an Income verification flow.
    SUBMIT_DOCUMENTS_ERROR
    The user encountered an error when submitting documents for an Income verification flow.
    SUBMIT_DOCUMENTS_SUCCESS
    The user has successfully submitted documents for an Income verification flow.
    SUBMIT_MFA
    The user has submitted MFA.
    SUBMIT_OTP
    The user has submitted an OTP code during the phone number verification flow. This event is only emitted in the Link Returning User Experience flow.
    SUBMIT_PHONE
    The user has submitted their phone number. This event is only emitted in the Link Returning User Experience flow.
    SUBMIT_ROUTING_NUMBER
    The user has submitted a routing number. This event emits the routing_number metadata to indicate user's routing number.
    TRANSITION_VIEW
    The TRANSITION_VIEW event indicates that the user has moved from one view to the next.
    VERIFY_PHONE
    The user has successfully verified their phone number. This event is only emitted in the Link Returning User Experience flow.
    VIEW_DATA_TYPES
    The user has viewed data types on the data transparency consent pane.
    metadata
    objectobject
    An object containing information about the event.
    account_number_mask
    nullablestringnullable, string
    The account number mask extracted from the user-provided account number. If the user-inputted account number is four digits long, account_number_mask is empty. Emitted by SUBMIT_ACCOUNT_NUMBER.
    error_type
    nullablestringnullable, string
    The error type that the user encountered. Emitted by: ERROR, EXIT.
    error_code
    nullablestringnullable, string
    The error code that the user encountered. Emitted by ERROR, EXIT.
    error_message
    nullablestringnullable, string
    The error message that the user encountered. Emitted by: ERROR, EXIT.
    exit_status
    nullablestringnullable, string
    The status key indicates the point at which the user exited the Link flow. Emitted by: EXIT
    institution_id
    nullablestringnullable, string
    The ID of the selected institution. Emitted by: all events.
    institution_name
    nullablestringnullable, string
    The name of the selected institution. Emitted by: all events.
    institution_search_query
    nullablestringnullable, string
    The query used to search for institutions. Emitted by: SEARCH_INSTITUTION.
    is_update_mode
    nullablestringnullable, string
    Indicates if the current Link session is an update mode session. Emitted by: OPEN.
    match_reason
    nullablestringnullable, string
    The reason this institution was matched. This will be either returning_user or routing_number if emitted by: MATCHED_SELECT_INSTITUTION. Otherwise, this will be SAVED_INSTITUTION or AUTO_SELECT_SAVED_INSTITUTION if emitted by: SELECT_INSTITUTION.
    routing_number
    nullablestringnullable, string
    The routing number submitted by user at the micro-deposits routing number pane. Emitted by SUBMIT_ROUTING_NUMBER.
    mfa_type
    nullablestringnullable, string
    If set, the user has encountered one of the following MFA types: code, device, questions, selections. Emitted by: SUBMIT_MFA and TRANSITION_VIEW when view_name is MFA
    view_name
    nullablestringnullable, string
    The name of the view that is being transitioned to. Emitted by: TRANSITION_VIEW.
    ACCEPT_TOS
    The view showing Terms of Service in the identity verification flow.
    CONNECTED
    The user has connected their account.
    CONSENT
    We ask the user to consent to the privacy policy.
    CREDENTIAL
    Asking the user for their account credentials.
    DOCUMENTARY_VERIFICATION
    The view requesting document verification in the identity verification flow (configured via "Fallback Settings" in the "Rulesets" section of the template editor).
    ERROR
    An error has occurred.
    EXIT
    Confirming if the user wishes to close Link.
    INSTANT_MICRODEPOSIT_AUTHORIZED
    The user has authorized an instant micro-deposit to be sent to their account over the RTP or FedNow network with a 3-letter code to verify their account.
    KYC_CHECK
    The view representing the "know your customer" step in the identity verification flow.
    LOADING
    Link is making a request to our servers.
    MFA
    The user is asked by the institution for additional MFA authentication.
    NUMBERS
    The user is asked to insert their account and routing numbers.
    NUMBERS_SELECT_INSTITUTION
    The user goes through the Same Day micro-deposits flow with Reroute to Credentials.
    OAUTH
    The user is informed they will authenticate with the financial institution via OAuth.
    PROFILE_DATA_REVIEW
    The user is asked to review their profile data in the Layer flow.
    RECAPTCHA
    The user was presented with a Google reCAPTCHA to verify they are human.
    RISK_CHECK
    The risk check step in the identity verification flow (configured via "Risk Rules" in the "Rulesets" section of the template editor).
    SAME_DAY_MICRODEPOSIT_AUTHORIZED
    The user has authorized a same day micro-deposit to be sent to their account over the ACH network with a 3-letter code to verify their account.
    SCREENING
    The watchlist screening step in the identity verification flow.
    SELECT_ACCOUNT
    We ask the user to choose an account.
    SELECT_AUTH_TYPE
    The user is asked to choose whether to Link instantly or manually (i.e., with micro-deposits).
    SELECT_BRAND
    The user is asked to select a brand, e.g. Bank of America. The brand selection interface occurs before the institution select pane and is only provided for large financial institutions with multiple online banking portals.
    SELECT_INSTITUTION
    We ask the user to choose their institution.
    SELECT_SAVED_ACCOUNT
    The user is asked to select their saved accounts and/or new accounts for linking in the Link Returning User Experience flow.
    SELECT_SAVED_INSTITUTION
    The user is asked to pick a saved institution or link a new one in the Link Returning User Experience flow.
    SELFIE_CHECK
    The view in the identity verification flow which uses the camera to confirm there is real user that matches their ID documents.
    SUBMIT_PHONE
    The user is asked for their phone number in the Link Returning User Experience flow.
    UPLOAD_DOCUMENTS
    The user is asked to upload documents (for Income verification).
    VERIFY_PHONE
    The user is asked to verify their phone in the Link Returning User Experience flow.
    VERIFY_SMS
    The SMS verification step in the identity verification flow.
    request_id
    stringstring
    The request ID for the last request made by Link. This can be shared with Plaid Support to expedite investigation. Emitted by: all events.
    link_session_id
    stringstring
    The link_session_id is a unique identifier for a single session of Link. It's always available and will stay constant throughout the flow. Emitted by: all events.
    timestamp
    stringstring
    An ISO 8601 representation of when the event occurred. For example 2017-09-14T14:42:19.350Z. Emitted by: all events.
    selection
    nullablestringnullable, string
    The Auth Type Select flow type selected by the user. Possible values are flow_type_manual or flow_type_instant. Emitted by: SELECT_AUTH_TYPE.
    Select Language
    1import {
    2 PlaidLinkOnEvent,
    3 PlaidLinkOnEventMetadata,
    4 PlaidLinkStableEvent,
    5} from 'react-plaid-link';
    6
    7const onEvent = useCallback<PlaidLinkOnEvent>(
    8 (
    9 eventName: PlaidLinkStableEvent | string,
    10 metadata: PlaidLinkOnEventMetadata,
    11 ) => {
    12 // log eventName and metadata
    13 },
    14 [],
    15);
    1{
    2 error_type: 'ITEM_ERROR',
    3 error_code: 'INVALID_CREDENTIALS',
    4 error_message: 'the credentials were not correct',
    5 exit_status: null,
    6 institution_id: 'ins_4',
    7 institution_name: 'Wells Fargo',
    8 institution_search_query: 'wellsf',
    9 mfa_type: null,
    10 view_name: 'ERROR'
    11 request_id: 'm8MDnv9okwxFNBV',
    12 link_session_id: '30571e9b-d6c6-42ee-a7cf-c34768a8f62d',
    13 timestamp: '2017-09-14T14:42:19.350Z',
    14 selection: null,
    15}
    =*=*=*=

    open()

    Calling open will display the Consent Pane view to your user, starting the Link flow. Once open is called, you will begin receiving events via the onEvent callback.

    Select Language
    1const { open, exit, ready } = usePlaidLink(config);
    2
    3// Open Link
    4if (ready) {
    5 open();
    6}
    =*=*=*=

    exit()

    The exit function allows you to programmatically close Link. Calling exit will trigger either the onExit or onSuccess callbacks.
    The exit function takes a single, optional argument, a configuration Object.

    exit

    Properties

    force
    booleanboolean
    If true, Link will exit immediately. If false, or the option is not provided, an exit confirmation screen may be presented to the user.
    Select Language
    1const { open, exit, ready } = usePlaidLink(config);
    2
    3// Graceful exit - Link may display a confirmation screen
    4// depending on how far the user is in the flow
    5exit();
    Select Language
    1const { open, exit, ready } = usePlaidLink(config);
    2
    3// Force exit - Link exits immediately
    4exit({ force: true });

    destroy()

    The destroy function allows you to destroy the Link handler instance, properly removing any DOM artifacts that were created by it. Use destroy() when creating new replacement Link handler instances in the onExit callback.

    Select Language
    1// On unmount usePlaidLink hook automatically destroys any
    2// existing link instance
    =*=*=*=

    submit

    The submit function is currently only used in the Layer product. It allows the client application to submit additional user-collected data to the Link flow (e.g. a user phone number).

    submit

    Properties

    phone_number
    stringstring
    The user's phone number.
    date_of_birth
    stringstring
    The user's date of birth. To be provided in the format "yyyy-mm-dd".
    Select Language
    1const { open, exit, submit } = usePlaidLink(config);
    2
    3// After collecting a user phone number...
    4submit({
    5 "phone_number": "+14155550123"
    6});
    =*=*=*=

    OAuth

    Using Plaid Link with an OAuth flow requires some additional setup instructions. For details, see the OAuth Guide.

    =*=*=*=

    Supported browsers

    Plaid officially supports Link on the latest versions of Chrome, Firefox, Safari, and Edge. Browsers are supported on Windows, Mac, Linux, iOS, and Android. Previous browser versions are also supported, as long as they are actively maintained; Plaid does not support browser versions that are no longer receiving patch updates, or that have been assigned official end of life (EOL) or end of support (EOS) status.

    Ad-blocking software is not officially supported with Link web, and some ad-blockers have known to cause conflicts with Link.

    =*=*=*=

    Example code in Plaid Pattern

    For a real-life example of using Plaid Link for React, see LaunchLink.tsx. This file illustrates the code for implementation of Plaid Link for React for the Node-based Plaid Pattern sample app.

    Was this helpful?
    Developer community
    GitHub
    GitHub
    Stack Overflow
    Stack Overflow
    YouTube
    YouTube
    Discord
    Discord