Choosing when to initialize products
Increase conversion and reduce costs by learning how to configure the Link products array
Overview
Prefer to learn by watching? A video guide is available for this topic.
When you create a link_token
, you specify which products to initialize Link with via the products
field in /link/token/create
. The products you choose to configure Link with can have implications for billing, conversion, and performance. While Link must be initialized with at least one product, you can often choose whether initialize Link with all of your products or to defer initializing some of those products until later.
If an Item was not initialized with a given product at the time of Link, making a product endpoint call for information about that Item will automatically initialize the Item. For example, if an Item was not initialized with Transactions during Link, calling /transactions/sync
or /transactions/get
on that Item for the first time will initialize it with the Transactions product.
If you have opted in to the Data Transparency Messaging Beta, then depending on the permissions that were granted during the original Link flow, you may not be able to initialize an Item with an additional product post-Link simply by calling a product endpoint, as you will need to have obtained the proper consent for that product.
Instead, you should specify this product in the additional_consented_products
array when first calling /link/token/create
. If the Item has already been created and the product you need is not in the Item's consented_products
field (which can be checked by calling /item/get
), you need to obtain additional user consent, which you can do by sending the user through update mode with the products
array updated to include the full set of products you would like to obtain consent for.
Both the additional_consented_products
array and update mode methods obtain consent for a product without initializing the Item for that product, avoiding any billing or performance implications.
There are some exceptions to the ability to initialize products by calling their endpoints:
- Bank Income and Assets can both be initialized post-Link, but may require re-launching Link to obtain additional consent. See Verifying Bank Income for existing Items and Adding Assets to existing Items.
- Identity Verification, Transfer, and Payment Initiation cannot be initialized post-Link.
- To use Instant Match, Automated Micro-deposits, or Same Day Micro-deposits, Auth cannot be initialized post-Link.
Some products cannot be initialized alongside other products in the same Link session:
- To use Same Day Micro-deposits, Auth must be the only product Link is initialized with.
- Income can only be initialized alongside other products if using Bank Income; Payroll Income and Document Income cannot be initialized alongside other products.
- Identity Verification, Payment Initiation, and Transfer cannot be initialized alongside any other products. If you need to use these products along with other Plaid products, your user will need to launch the Link flow a second time.
In general, it is recommended to initialize Link with the minimal set of products you need. If you have opted in to the Data Transparency Messaging Beta, you should instead put the minimal set of products you need in the products
array and any other products you might need in the additional_consented_products
array.
Impacts on billing
If you initialize Link with a product that is billed under an initialization or subscription model, you will be billed when an Item for the product is created, even if you are not yet using the product’s endpoints.
To avoid unwanted charges, do not initialize Link with a product in Production unless you are sure you are going to use that product. To learn more about how Plaid bills each product, see Billing.
Impacts on conversion
The products Link is initialized with will determine which institutions and accounts are available in Link. If Link is initialized with multiple products, only institutions supporting all of those products will be available. If the user selects a filtered institution in the Link UI, a "Connectivity not supported" error will appear. In addition, if the user does not have at least one account that is supported by each selected product, products a NO_AUTH_ACCOUNTS
or NO_ACCOUNTS
error will occur. See the accounts / product support matrix for further details.
To avoid overly filtering the institution and account list, initialize Link with your required products and call other products’ endpoints later.
Impacts on performance
Plaid begins to prepare transactions data upon Item link if Link is initialized with transactions
, or upon the first call to either /transactions/sync
or /transactions/get
. Similarly, Plaid begins to prepare investments transactions data upon Item link if Link is initialized with investments
, or upon the first call to /investments/transactions/get
otherwise.
Preparing transactions data can take up to several minutes depending on the amount of history available, so you may be able to retrieve transactions more quickly by initializing Link with Transactions and/or Investments.
Recommendations for initializing Link with specific product combinations
Auth and Identity
Only initialize with both Auth and Identity if immediate identity data is very important to your fraud detection model. Otherwise, initialize with Auth first, then call the /identity/get
endpoint, which will return data if Identity is supported by the user's institution. Initializing with Auth by itself gives access to a slightly larger range of institutions than initializing with Auth and Identity together. Initializing with Auth alone also allows you to take advantage of Same Day Micro-deposit verification, which can increase conversion and which can only be used if Auth is the only product in the products
array.
Auth and Signal
If your integration uses the Same-Day Micro-deposits flow, then to maximize conversion, initialize with Auth, then call /signal/prepare
. Otherwise, you can initialize with both Auth and Signal and do not need to call /signal/prepare
.
Auth, Signal, and Identity
Initialize with Auth, then call /identity/get
, followed by /signal/prepare
. Initializing without Identity will maximize Link conversion, as described under the Auth and Identity section, and calling /identity/get
before calling /signal/prepare
will minimize latency.
Auth and Assets
Initialize with Assets first, then send the user through Link again in order to initialize a separate Item with Auth. This increases the number of institutions available and also allows you to take advantage of Same Day Micro-deposit verification, which can increase conversion.
Liabilities and Transactions
If you want to get both loan data (such as APRs, balance due, and repayment history) and transaction history from the same account, initialize with whichever product is more important for your use case (Transactions if transaction history is more important, Liabilities if loan data is more important). Then call endpoints for the other product. This will return data if that product is supported by the user's institution.
Bank Income and Transactions
Initialize with Bank Income first, then call Transactions endpoints later. If an Item is initialized with Transactions during Link, you will not be able to start the Bank Income flow until the Transactions data pull has completed, which may take up to several minutes.
Investments and Transactions
Initialize with Transactions, then call Investments endpoints later. The overwhelming majority of institutions that support Investments also support the Transactions product, so initializing in this way should have minimal impact on Link conversion.
Income and Assets
If using Payroll Income or Document Income, initialize Link with Income Verification first to have your user verify their income, then launch Link again initialized with the Assets product, as Payroll Income and Document Income cannot be used with any other products. (Note that the order of these steps does not matter -- you can launch Link with Assets and then launch it again with Income Verification.)
If using Bank Income, initialize with Assets. Then, see the instructions on Verifying Bank Income for existing Items to add Bank Income to the Item. Or, you can initialize with Bank Income first and then see the instructions on Getting an Asset Report for an existing Item to add Assets.