---
title: "Create Link Token"
method: POST
path: "/link/token/create"
tags: ["plaid"]
---

# Create Link Token

`POST /link/token/create`

The `/link/token/create` endpoint creates a `link_token`, which is required as a parameter when initializing Link. Once Link has been initialized, it returns a `public_token`, which can then be exchanged for an `access_token` via `/item/public_token/exchange` as part of the main Link flow.

A `link_token` generated by `/link/token/create` is also used to initialize other Link flows, such as the update mode flow for tokens with expired credentials, or the Payment Initiation (Europe) flow.

## Request body

- LinkTokenCreateRequest — LinkTokenCreateRequest defines the request schema for `/link/token/create`
  - `client_id` string — Your Plaid API `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` string — Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body.
  - `client_name` string, required — The name of your application, as it should be displayed in Link. Maximum length of 30 characters. If a value longer than 30 characters is provided, Link will display "This Application" instead.
  - `language` string, required — The language that Link should be displayed in. When initializing with Identity Verification, this field is not used; for more details, see [Identity Verification supported languages](https://www.plaid.com/docs/identity-verification/#supported-languages). Supported languages are: - Danish (`'da'`) - Dutch (`'nl'`) - English (`'en'`) - Estonian (`'et'`) - French (`'fr'`) - German (`'de'`) - Italian (`'it'`) - Latvian (`'lv'`) - Lithuanian (`'lt'`) - Norwegian (`'no'`) - Polish (`'pl'`) - Portuguese (`'pt'`) - Romanian (`'ro'`) - Spanish (`'es'`) - Swedish (`'sv'`) When using a Link customization, the language configured here must match the setting in the customization, or the customization will not be applied.
  - `country_codes` CountryCode[], required — Specify an array of Plaid-supported country codes using the ISO-3166-1 alpha-2 country code standard. Institutions from all listed countries will be shown. For a complete mapping of supported products by country, see https://plaid.com/global/. If using Identity Verification, `country_codes` should be set to the country where your company is based, not the country where your user is located. For all other products, `country_codes` represents the location of your user's financial institution. If Link is launched with multiple country codes, only products that you are enabled for in all countries will be used by Link. Note that while all countries are enabled by default in Sandbox and Development, in Production only US and Canada are enabled by default. Access to European institutions requires additional compliance steps. To request access to European institutions in the Production environment, [file a product access Support ticket](https://dashboard.plaid.com/support/new/product-and-development/product-troubleshooting/request-product-access) via the Plaid dashboard. If you initialize with a European country code, your users will see the European consent panel during the Link flow. If using a Link customization, make sure the country codes in the customization match those specified in `country_codes`, or the customization may not be applied. If using the Auth features Instant Match, Same-day Micro-deposits, or Automated Micro-deposits, `country_codes` must be set to `['US']`.
  - `user` LinkTokenCreateRequestUser, required — An object specifying information about the end user who will be linking their account.
    - `client_user_id` string, required — A unique ID representing the end user. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. It is currently used as a means of searching logs for the given user in the Plaid Dashboard.
    - `legal_name` string — The user's full legal name, used for [micro-deposit based verification flows](https://plaid.com/docs/auth/coverage/). For a small number of customers on legacy flows, providing this field is required to enable micro-deposit-based flows. For all other customers, this field is optional. Providing the user's name in this field when using micro-deposit-based verification will streamline the end user experience, as the user will not be prompted to enter their name during the Link flow; Plaid will use the provided legal name instead.
    - `name` object, nullable — The user's full name. Optional if using the [Identity Verification](https://plaid.com/docs/api/products/identity-verification) product; if not using Identity Verification, this field is not allowed. Users will not be asked for their name when this field is provided.
      - `given_name` string, required — A string with at least one non-whitespace character, with a max length of 100 characters.
      - `family_name` string, required — A string with at least one non-whitespace character, with a max length of 100 characters.
    - `phone_number` string — The user's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format. This field is optional, but required to enable the [returning user experience](https://plaid.com/docs/link/returning-user). Can also be used to prefill Link fields when used with Identity Verification.
    - `phone_number_verified_time` string, date-time, nullable — The date and time the phone number was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This was previously an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user). This field is no longer required to enable the returning user experience. Only pass a verification time for a phone number that you have verified. If you have performed verification but don’t have the time, you may supply a signal value of the start of the UNIX epoch. Example: `2020-01-01T00:00:00Z`
    - `email_address` string — The user's email address. This field is optional, but required to enable the [pre-authenticated returning user flow](https://plaid.com/docs/link/returning-user/#pre-authenticated-rux). Can also be used to prefill Link fields when used with Identity Verification.
    - `email_address_verified_time` string, date-time, nullable — The date and time the email address was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This was previously an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user). This field is no longer required to enable the returning user experience. Only pass a verification time for an email address that you have verified. If you have performed verification but don’t have the time, you may supply a signal value of the start of the UNIX epoch. Example: `2020-01-01T00:00:00Z`
    - `ssn` string — Deprecated and not currently used, use the `id_number` field instead.
    - `date_of_birth` string, date, nullable — To be provided in the format "yyyy-mm-dd". Can be used to prefill Link fields when used with Identity Verification.
    - `address` object, nullable — The user's address. Used only for Identity Verification. If provided, the user will not be shown fields to enter their address in the Identity Verification flow. May be omitted, but if not omitted, all fields marked as required must be provided.
      - `street` string, nullable — The primary street portion of an address. If an address is provided, this field will always be filled.
      - `street2` string, nullable — Extra street information, like an apartment or suite number.
      - `city` string, nullable — City from the end user's address
      - `region` string, nullable — An ISO 3166-2 subdivision code. Related terms would be "state", "province", "prefecture", "zone", "subdivision", etc.
      - `postal_code` string, nullable — The postal code for the associated address. Between 2 and 10 alphanumeric characters. For US-based addresses this must be 5 numeric digits.
      - `country` string, required — Valid, capitalized, two-letter ISO code representing the country of this object. Must be in ISO 3166-1 alpha-2 form.
    - `id_number` object, nullable — The user's ID number. Used only for Identity Verification. If provided, the user will not be shown fields to enter their ID number in the Identity Verification flow. May be omitted, but if not omitted, all fields marked as required must be provided.
      - `value` string, required — Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped.
      - `type` 'ar_dni' | 'au_drivers_license' | 'au_passport' | 'br_cpf' | 'ca_sin' | 'cl_run' | 'cn_resident_card' | 'co_nit' | 'dk_cpr' | 'eg_national_id' | 'es_dni' | 'es_nie' | 'hk_hkid' | 'in_pan' | 'it_cf' | 'jo_civil_id' | 'jp_my_number' | 'ke_huduma_namba' | 'kw_civil_id' | 'mx_curp' | 'mx_rfc' | 'my_nric' | 'ng_nin' | 'nz_drivers_license' | 'om_civil_id' | 'ph_psn' | 'pl_pesel' | 'ro_cnp' | 'sa_national_id' | 'se_pin' | 'sg_nric' | 'tr_tc_kimlik' | 'us_ssn' | 'us_ssn_last_4' | 'za_smart_id', required — A globally unique and human readable ID type, specific to the country and document category. For more context on this field, see [Hybrid Input Validation](https://plaid.com/docs/identity-verification/hybrid-input-validation).
  - `products` Products[], nullable — List of Plaid product(s) you wish to use. If launching Link in update mode, should be omitted (unless you are using update mode to add Income or Assets to an Item); required otherwise. `balance` is *not* a valid value, the Balance product does not require explicit initialization and will automatically be initialized when any other product is initialized. The products specified here will determine which institutions will be available to your users in Link. Only institutions that support *all* requested products can be selected; a if a user attempts to select an institution that does not support a listed product, a "Connectivity not supported" error message will appear in Link. To maximize the number of institutions available, initialize Link with the minimal product set required for your use case. Additional products can be included via the [`optional_products`](https://plaid.com/docs/api/tokens/#link-token-create-request-optional-products) or [`required_if_supported_products`](https://plaid.com/docs/api/tokens/#link-token-create-request-required-if-supported-products) fields, or can be initialized by calling the endpoint after obtaining an access token. For details and exceptions, see [Choosing when to initialize products](https://plaid.com/docs/link/initializing-products/). Note that, unless you have opted to disable Instant Match support, institutions that support Instant Match will also be shown in Link if `auth` is specified as a product, even though these institutions do not contain `auth` in their product array. In Production, you will be billed for each product that you specify when initializing Link. Note that a product cannot be removed from an Item once the Item has been initialized with that product. To stop billing on an Item for subscription-based products, such as Liabilities, Investments, and Transactions, remove the Item via `/item/remove`.
  - `required_if_supported_products` Products[], nullable — List of Plaid product(s) you wish to use only if the institution and account(s) selected by the user support the product. Institutions that do not support these products will still be shown in Link. The products will only be extracted and billed if the user selects an institution and account type that supports them. There should be no overlap between this array and the `products`, `optional_products`, or `additional_consented_products` arrays. The `products` array must have at least one product. For more details on using this feature, see [Required if Supported Products](https://www.plaid.com/docs/link/initializing-products/#required-if-supported-products).
  - `optional_products` Products[], nullable — List of Plaid product(s) that you may wish to use but that are not required for your use case. Plaid will attempt to fetch data for these products on a best-effort basis, and failure to support these products will not affect Item creation. There should be no overlap between this array and the `products`, `required_if_supported_products`, or `additional_consented_products` arrays. The `products` array must have at least one product. For more details on using this feature, see [Optional Products](https://www.plaid.com/docs/link/initializing-products/#optional-products).
  - `additional_consented_products` Products[], nullable — (Beta) This field has no effect unless you are participating in the [Data Transparency](https://plaid.com/docs/link/data-transparency-messaging-migration-guide) beta program. List of additional Plaid product(s) you wish to collect consent for. These products will not be billed until you start using them by calling the relevant endpoints. `balance` is *not* a valid value, the Balance product does not require explicit initialization and will automatically have consent collected. Institutions that do not support these products will still be shown in Link. There should be no overlap between this array and the `products` or `required_if_supported_products` arrays.
  - `webhook` string — The destination URL to which any webhooks should be sent. Note that webhooks for Payment Initiation (e-wallet transactions only), Transfer, Bank Transfer (including Auth micro-deposit notification webhooks) and Identity Verification are configured via the Dashboard instead.
  - `access_token` string, nullable — The `access_token` associated with the Item to update or reference, used when updating, modifying, or accessing an existing `access_token`. Used when launching Link in update mode, when completing the Same-day (manual) Micro-deposit flow, or (optionally) when initializing Link for a returning user as part of the Transfer UI flow.
  - `access_tokens` string[] — A list of access tokens associated with the items to update in Link update mode for the Assets product. Using this instead of the `access_token` field allows the updating of multiple items at once. This feature is in closed beta, please contact your account manager for more info.
  - `link_customization_name` string — The name of the Link customization from the Plaid Dashboard to be applied to Link. If not specified, the `default` customization will be used. When using a Link customization, the language in the customization must match the language selected via the `language` parameter, and the countries in the customization should match the country codes selected via `country_codes`.
  - `redirect_uri` string — A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or via a webview. The `redirect_uri` should not contain any query parameters. When used in Production or Development, must be an https URI. To specify any subdomain, use `*` as a wildcard character, e.g. `https://*.example.com/oauth.html`. Note that any redirect URI must also be added to the Allowed redirect URIs list in the [developer dashboard](https://dashboard.plaid.com/team/api). If initializing on Android, `android_package_name` must be specified instead and `redirect_uri` should be left blank. If using Hosted Link (beta) the `redirect_uri` must be set to `https://hosted.plaid.com/oauth/redirect`.
  - `android_package_name` string — The name of your app's Android package. Required if using the `link_token` to initialize Link on Android. Any package name specified here must also be added to the Allowed Android package names setting on the [developer dashboard](https://dashboard.plaid.com/team/api). When creating a `link_token` for initializing Link on other platforms, `android_package_name` must be left blank and `redirect_uri` should be used instead.
  - `institution_data` LinkTokenCreateInstitutionData — A map containing data used to highlight institutions in Link.
    - `routing_number` string — The routing number of the bank to highlight in Link. Note: in rare cases, a single routing number can be associated with multiple institutions, e.g. due to a brokerage using another institution to manage ACH on its sweep accounts. If this happens, the bank will not be highlighted in Link even if the routing number is provided.
  - `card_switch` LinkTokenCreateCardSwitch — A map containing data to pass in for the Card Switch flow.
    - `card_bin` string, required — The BIN (Bank Identification Number) of the card to switch.
  - `account_filters` LinkTokenAccountFilters — By default, Link will provide limited account filtering: it will only display Institutions that are compatible with all products supplied in the `products` parameter of `/link/token/create`, and, if `auth` is specified in the `products` array, will also filter out accounts other than `checking` and `savings` accounts on the Account Select pane. You can further limit the accounts shown in Link by using `account_filters` to specify the account subtypes to be shown in Link. Only the specified subtypes will be shown. This filtering applies to both the Account Select view (if enabled) and the Institution Select view. Institutions that do not support the selected subtypes will be omitted from Link. To indicate that all subtypes should be shown, use the value `"all"`. If the `account_filters` filter is used, any account type for which a filter is not specified will be entirely omitted from Link. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). The filter may or may not impact the list of accounts shown by the institution in the OAuth account selection flow, depending on the specific institution. If the user selects excluded account subtypes in the OAuth flow, these accounts will not be added to the Item. If the user selects only excluded account subtypes, the link attempt will fail and the user will be prompted to try again.
    - `depository` DepositoryFilter — A filter to apply to `depository`-type accounts
      - `account_subtypes` DepositoryAccountSubtype[], required — An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema).
    - `credit` CreditFilter — A filter to apply to `credit`-type accounts
      - `account_subtypes` CreditAccountSubtype[], required — An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema).
    - `loan` LoanFilter — A filter to apply to `loan`-type accounts
      - `account_subtypes` LoanAccountSubtype[], required — An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema).
    - `investment` InvestmentFilter — A filter to apply to `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier).
      - `account_subtypes` InvestmentAccountSubtype[], required — An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema).
    - `other` OtherFilter — A filter to apply to `other`-type accounts
      - `account_subtypes` OtherAccountSubtype[], required — An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema).
  - `eu_config` LinkTokenEUConfig — Configuration parameters for EU flows
    - `headless` boolean — If `true`, open Link without an initial UI. Defaults to `false`.
  - `institution_id` string — Used for certain Europe-only configurations, as well as certain legacy use cases in other regions.
  - `payment_initiation` LinkTokenCreateRequestPaymentInitiation — Specifies options for initializing Link for use with the Payment Initiation (Europe) product. This field is required if `payment_initiation` is included in the `products` array. Either `payment_id` or `consent_id` must be provided.
    - `payment_id` string — The `payment_id` provided by the `/payment_initiation/payment/create` endpoint.
    - `consent_id` string — The `consent_id` provided by the `/payment_initiation/consent/create` endpoint.
  - `deposit_switch` LinkTokenCreateRequestDepositSwitch — Specifies options for initializing Link for use with the Deposit Switch (beta) product. This field is required if `deposit_switch` is included in the `products` array.
    - `deposit_switch_id` string, required — The `deposit_switch_id` provided by the `/deposit_switch/create` endpoint.
  - `employment` LinkTokenCreateRequestEmployment — Specifies options for initializing Link for use with the Employment product. This field is required if `employment` is included in the `products` array.
    - `employment_source_types` EmploymentSourceType[] — The types of source employment data that users will be permitted to share. Options include `bank` and `payroll`. Currently you can only specify one of these options.
    - `bank_employment` LinkTokenCreateRequestEmploymentBankIncome — Specifies options for initializing Link for use with Bank Employment. This field is required if `employment` is included in the `products` array and `bank` is specified in `employment_source_types`.
      - `days_requested` integer, required — The number of days of data to request for the Bank Employment product.
  - `income_verification` LinkTokenCreateRequestIncomeVerification — Specifies options for initializing Link for use with the Income product. This field is required if `income_verification` is included in the `products` array.
    - `income_verification_id` string — The `income_verification_id` of the verification instance, as provided by `/income/verification/create`.
    - `asset_report_id` string — The `asset_report_id` of an asset report associated with the user, as provided by `/asset_report/create`. Providing an `asset_report_id` is optional and can be used to verify the user through a streamlined flow. If provided, the bank linking flow will be skipped.
    - `access_tokens` AccessToken[], nullable — An array of access tokens corresponding to Items that a user has previously connected with. Data from these institutions will be cross-referenced with document data received during the Document Income flow to help verify that the uploaded documents are accurate. If the `transactions` product was not initialized for these Items during link, it will be initialized after this Link session. This field should only be used with the `payroll` income source type.
    - `income_source_types` IncomeVerificationSourceType[] — The types of source income data that users will be permitted to share. Options include `bank` and `payroll`. Currently you can only specify one of these options.
    - `bank_income` LinkTokenCreateRequestIncomeVerificationBankIncome — Specifies options for initializing Link for use with Bank Income. This field is required if `income_verification` is included in the `products` array and `bank` is specified in `income_source_types`.
      - `days_requested` integer, required — The number of days of data to request for the Bank Income product
      - `enable_multiple_items` boolean, nullable — Whether to enable multiple Items to be added in the Link session
    - `payroll_income` LinkTokenCreateRequestIncomeVerificationPayrollIncome — Specifies options for initializing Link for use with Payroll Income (including Document Income). Further customization options for Document Income, such as customizing which document types may be uploaded, are also available via the [Link Customization pane](https://dashboard.plaid.com/link) in the Dashboard. (Requires Production enablement.)
      - `flow_types` IncomeVerificationPayrollFlowType[], nullable — The types of payroll income verification to enable for the Link session. If none are specified, then users will see both document and digital payroll income.
      - `is_update_mode` boolean — An identifier to indicate whether the income verification Link token will be used for update mode. This field is only relevant for participants in the Payroll Income Refresh beta.
      - `item_id_to_update` string, nullable — Uniquely identify a payroll income Item to update with. This field is only relevant for participants in the Payroll Income Refresh beta.
      - `parsing_config` IncomeVerificationDocParsingConfig[], nullable — The types of analysis to enable for document uploads. If this field is not provided, then docs will undergo OCR parsing only.
    - `stated_income_sources` LinkTokenCreateRequestUserStatedIncomeSource[] — A list of user stated income sources
      - `employer` string — The employer corresponding to an income source specified by the user
      - `category` 'OTHER' | 'SALARY' | 'UNEMPLOYMENT' | 'CASH' | 'GIG_ECONOMY' | 'RENTAL' | 'CHILD_SUPPORT' | 'MILITARY' | 'RETIREMENT' | 'LONG_TERM_DISABILITY' | 'BANK_INTEREST' — The income category for a specified income source
      - `pay_per_cycle` number, double — The income amount paid per cycle for a specified income source
      - `pay_annual` number, double — The income amount paid annually for a specified income source
      - `pay_type` 'UNKNOWN' | 'GROSS' | 'NET' — The pay type - `GROSS`, `NET`, or `UNKNOWN` for a specified income source
      - `pay_frequency` 'UNKNOWN' | 'WEEKLY' | 'BIWEEKLY' | 'SEMI_MONTHLY' | 'MONTHLY' — The pay frequency of a specified income source
  - `base_report` LinkTokenCreateRequestBaseReport — Specifies options for initializing Link for use with the Base Report product. This field is required if `assets` is included in the `products` array and the client is CRA-enabled.
    - `days_requested` integer, required — The maximum integer number of days of history to include in the Base Report.
  - `credit_partner_insights` LinkTokenCreateRequestCreditPartnerInsights — Specifies options for initializing Link for use with the Credit Partner Insights product.
    - `days_requested` integer — The maximum integer number of days of history to compute Crdit Partner Insights. Defaults to 180 if not specified
    - `prism_products` PrismProduct[] — The specific prism products to return. If none are passed in, then all products will be returned.
  - `consumer_report_permissible_purpose` 'ACCOUNT_REVIEW_CREDIT' | 'ACCOUNT_REVIEW_NON_CREDIT' | 'EMPLOYMENT' | 'EXTENSION_OF_CREDIT' | 'LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING' | 'LEGITIMATE_BUSINESS_NEED_OTHER' | 'WRITTEN_INSTRUCTION_PREQUALIFICATION' | 'WRITTEN_INSTRUCTION_OTHER' — This enum describes the reason a consumer report is created for `ACCOUNT_REVIEW_CREDIT`: In connection with a consumer credit transaction for the review or collection of an account pursuant to FCRA Section 604(a)(3)(A). `ACCOUNT_REVIEW_NON_CREDIT`: For a legitimate business need of the information to review a non-credit account provided primarily for personal, family, or household purposes to determine whether the consumer continues to meet the terms of the account pursuant to FCRA Section 604(a)(3)(F)(2). `EMPLOYMENT`: For employment purposes pursuant to FCRA 604(a)(3)(B), including hiring, retention and promotion purposes. `EXTENSION_OF_CREDIT`: In connection with a credit transaction initiated by and involving the consumer pursuant to FCRA Section 604(a)(3)(A). `LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING`: For a legitimate business need in connection with a business transaction initiated by the consumer primarily for personal, family, or household purposes in connection with a property rental assessment pursuant to FCRA Section 604(a)(3)(F)(i). `LEGITIMATE_BUSINESS_NEED_OTHER`: For a legitimate business need in connection with a business transaction made primarily for personal, family, or household initiated by the consumer pursuant to FCRA Section 604(a)(3)(F)(i). `WRITTEN_INSTRUCTION_PREQUALIFICATION`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), to evaluate an application’s profile to make an offer to the consumer. `WRITTEN_INSTRUCTION_OTHER`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), such as when an individual agrees to act as a guarantor or assumes personal liability for a consumer, business, or commercial loan.
  - `auth` LinkTokenCreateRequestAuth — Specifies options for initializing Link for use with the Auth product. This field can be used to enable or disable extended Auth flows for the resulting Link session. Omitting any field will result in a default that can be configured by your account manager.
    - `auth_type_select_enabled` boolean — Specifies whether Auth Type Select is enabled for the Link session, allowing the end user to choose between linking instantly or manually prior to selecting their financial institution. Note that this can only be true if `same_day_microdeposits_enabled` is set to true.
    - `automated_microdeposits_enabled` boolean — Specifies whether the Link session is enabled for the Automated Micro-deposits flow.
    - `instant_match_enabled` boolean — Specifies whether the Link session is enabled for the Instant Match flow. As of November 2022, Instant Match will be enabled by default. Instant Match can be disabled by setting this field to `false`.
    - `same_day_microdeposits_enabled` boolean — Specifies whether the Link session is enabled for the Same Day Micro-deposits flow.
    - `instant_microdeposits_enabled` boolean — Specifies whether the Link session is enabled for the Instant Micro-deposits flow.
    - `reroute_to_credentials` 'OFF' | 'OPTIONAL' | 'FORCED' — Specifies what type of [Reroute to Credentials](https://plaid.com/docs/auth/coverage/same-day/#reroute-to-credentials) pane should be used in the Link session for the Same Day Micro-deposits flow. As of October 15 2023, the default setting is `OPTIONAL`.
    - `database_match_enabled` boolean — Specifies whether the Link session is enabled for the Database Match flow.
    - `database_insights_enabled` boolean — Specifies whether the Link session is enabled for the Database Insights flow.
    - `flow_type` 'FLEXIBLE_AUTH' — This field has been deprecated in favor of `auth_type_select_enabled`.
  - `transfer` LinkTokenCreateRequestTransfer — Specifies options for initializing Link for use with the Transfer product.
    - `intent_id` string — The `id` returned by the `/transfer/intent/create` endpoint.
    - `payment_profile_token` string — The `payment_profile_token` returned by the `/payment_profile/create` endpoint.
  - `update` LinkTokenCreateRequestUpdate — Specifies options for initializing Link for [update mode](https://plaid.com/docs/link/update-mode).
    - `account_selection_enabled` boolean — If `true`, enables [update mode with Account Select](https://plaid.com/docs/link/update-mode/#using-update-mode-to-request-new-accounts) for institutions that do not use OAuth, or that use OAuth but do not have their own account selection flow. For institutions that have an OAuth account selection flow (i.e. most OAuth-enabled institutions), update mode with Account Select will always be enabled, regardless of the value of this field.
  - `identity_verification` LinkTokenCreateRequestIdentityVerification — Specifies option for initializing Link for use with the Identity Verification product.
    - `template_id` string, required — ID of the associated Identity Verification template.
    - `consent` boolean — A flag specifying whether the end user has already agreed to a privacy policy specifying that their data will be shared with Plaid for verification purposes. If `gave_consent` is set to `true`, the `accept_tos` step will be marked as `skipped` and the end user's session will start at the next step requirement.
    - `gave_consent` boolean — A flag specifying whether the end user has already agreed to a privacy policy specifying that their data will be shared with Plaid for verification purposes. If `gave_consent` is set to `true`, the `accept_tos` step will be marked as `skipped` and the end user's session will start at the next step requirement.
  - `statements` LinkTokenCreateRequestStatements — Specifies options for initializing Link for use with the Statements product.
    - `start_date` string, date — The start date for statements, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) “YYYY-MM-DD” format, e.g. "2020-10-30". If no value is provided, this will default to 3 months prior to the current date.
    - `end_date` string, date — The end date for statements, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) “YYYY-MM-DD” format, e.g. "2020-10-30". If no value is provided, this will default to the current date. You can request up to two years of data.
  - `user_token` string — A user token generated using `/user/create`. Any Item created during the Link session will be associated with the user.
  - `investments` LinkTokenInvestments — Configuration parameters for the Investments product
    - `allow_unverified_crypto_wallets` boolean — If `true`, allow self-custody crypto wallets to be added without requiring signature verification. Defaults to `false`.
    - `allow_manual_entry` boolean — If `true`, allow users to manually enter Investments account and holdings information. Defaults to `false`.
  - `investments_auth` LinkTokenInvestmentsAuth — Configuration parameters for the Investments Auth Product
    - `manual_entry_enabled` boolean, nullable — If `true`, show institutions that use the manual entry fallback flow.
    - `masked_number_match_enabled` boolean, nullable — If `true`, show institutions that use the masked number match fallback flow.
  - `hosted_link` LinkTokenCreateHostedLink — Configuration parameters for Hosted Link (beta). Only available for participants in the Hosted Link beta program.
    - `delivery_method` 'sms' | 'email' — How Plaid should deliver the Plaid Link session to the customer. 'sms' will deliver via SMS. Must pass `user.phone_number`. 'email' will deliver via email. Must pass `user.email_address`. In the Sandbox environment, this field will be ignored; use the Production or Development environment to test Hosted Link session delivery instead.
    - `completion_redirect_uri` string — URI that Hosted Link will redirect to upon completion of the Link flow. This will only occur in Hosted Link sessions, not in other implementation methods.
    - `url_lifetime_seconds` integer — How many seconds the link will be valid for. Must be positive. Cannot be longer than 21 days. The default lifetime is 4 hours.
    - `is_mobile_app` boolean — This indicates whether the client is opening hosted Link in a mobile app in an out of process web view (OOPWV).
  - `transactions` LinkTokenTransactions — Configuration parameters for the Transactions product
    - `days_requested` integer — The maximum number of days of transaction history to request for the Transactions product. For developer accounts created after December 3, 2023, if no value is specified, this will default to 90 days. For developer accounts created on December 3, 2023 or earlier, if no value is specified, this will default to 730 days until June 24, 2024, at which point it will default to 90 days. We strongly recommend that customers utilizing [Recurring Transactions](https://plaid.com/docs/api/products/transactions/#transactionsrecurringget) request at least 180 days of history for optimal results.
  - `cra_enabled` boolean — If `true`, request a CRA connection. Defaults to `false`.
  - `identity` LinkTokenCreateIdentity — Identity object used to specify document upload
    - `is_document_upload` boolean — Used to specify whether the Link session is Identity Document Upload
    - `account_ids` string[] — An array of `account_ids`

## Response `200`

OK

- LinkTokenCreateResponse — LinkTokenCreateResponse defines the response schema for `/link/token/create`
  - `link_token` string, required — A `link_token`, which can be supplied to Link in order to initialize it and receive a `public_token`, which can be exchanged for an `access_token`.
  - `expiration` string, date-time, required — The expiration date for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. A `link_token` created to generate a `public_token` that will be exchanged for a new `access_token` expires after 4 hours. A `link_token` created for an existing Item (such as when updating an existing `access_token` by launching Link in update mode) expires after 30 minutes.
  - `request_id` string, required — A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
  - `hosted_link_url` string — A URL of a Plaid-hosted Link flow that will use the Link token returned by this request. Only present if the client is enabled for Hosted Link (beta).

## Changes

- **2024-02-21** `5de70cc1e6ca` — 84 breaking, 19 warning, 16 info
  - the request property `user` became required
  - removed the enum value `AT` of the request property `country_codes/items/`
  - removed the enum value `ELIGIBILITY_FOR_GOVT_BENEFITS` of the request property `consumer_report_permissible_purpose`
  - removed the enum value `FI` of the request property `country_codes/items/`
  - …115 more

[Change history](https://skmtc.dev/plaid/apis/the-plaid-api/changes/link/token/create/post.md)

---

[API](https://skmtc.dev/plaid/apis/the-plaid-api.md) · [All operations](https://skmtc.dev/plaid/apis/the-plaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/plaid/the-plaid-api/revisions/ec7541420dd2/schema)
