Migrate from Bank Income to Plaid Consumer Report
Switch to CRA Income Insights for model-driven income attributes and FCRA compliance
This guide will walk you through how to migrate from accessing bank data with Plaid's Bank Income product to generating Income Insights Reports with Plaid Check's Consumer Reports.
The CRA Income Insights Report offers model-driven attributes such as historical gross and net income, facilitating streamlined debt-to-income calculations and income verification. It enables assessment of financial stability through insights like forecasted income, employer name, income frequency, and predicted next payment date.
Advantages of Plaid Consumer Report
Bank Income gives you net income data from both irregular or gig income and W-2 income. The CRA Income Insights Report enhances this by:
- Providing FCRA-compliant insights
- Bundling income calculations (historical average income, forecasted income, predicted next payment date) in a single report
Upgrading to Plaid Consumer Report is recommended for all Bank Income customers whose end users are based in the US. (CRA Income Insights is not available for end users outside the US.)
Income Insights does not replace Document Income or Payroll Income. Plaid Check products can't be used in the same Link flow as Plaid Inc. credit products such as Plaid Document Income, Payroll Income, Assets, or Statements. If you want to continue using any of those products, create separate /link/token/create requests: one for Plaid Check products, and one for the Plaid Inc. credit products.
Non-credit Plaid products, such as Balance and Auth, can continue to be used in the same Link flow as Plaid Check products, and do not require any special changes to your integration.
Prerequisites
To use Consumer Report, it is strongly recommended to update your Plaid client library to the latest version. The minimum required versions are:
- Python: 23.0.0
- Go: 26.0.0
- Java: 24.0.0
- Node: 25.0.0
- Ruby: 29.0.0
Confirm that you have access to all required Plaid Check products in the Production environment. If you don't have access to Plaid Check, request access via the Dashboard. In order to use Plaid Check, your end users must be in the US and you must be on a custom pricing plan.
Changes to Plaid Link initialization
When using Plaid Check products, you must create a user prior to sending the user through Link and initialize Link with the resulting user_token. This allows Plaid to associate multiple Items with a single user.
Call
/user/createprior to creating a Link token:- Include identity info in the
consumer_report_user_identityobject. All fields are required except forlast_4_ssn. - Store the
user_idanduser_tokenin your database.
- Include identity info in the
Update your
/link/token/createrequest:- Include the
user_tokenstring from/user/create. - In the
productsarray, replaceincome_verificationwithcra_base_reportandcra_income_insights. - Remove the
income_verificationobject. - Add a
cra_optionsobject and specifydays_requested(minimum 180). - If you haven't already, set
webhookto your webhook endpoint listener URL. Unlike Bank Income, Plaid Check requires the use of webhooks. - Provide a
consumer_report_permissible_purpose - (Optional) To allow linking multiple Items in one session, set
enable_multi_item_linktotrue.
- Include the
const request: LinkTokenCreateRequest = {
loading_sample: true
};
try {
const response = await plaidClient.linkTokenCreate(request);
const linkToken = response.data.link_token;
} catch (error) {
// handle error
}For more details, see the Plaid Check Implementation guide.
Adding Consumer Report to existing Items
To enable an existing Income-enabled Item for Consumer Report, call /user/create and /link/token/create as described above, but include the Item's access_token when calling /link/token/create. When Link is launched, the end user will go through the Consumer Report consent flow, and on successful completion of the flow, the Item will be enabled for Consumer Report.
Update product API calls and webhook listeners
Unlike Bank Income, Plaid Check uses webhooks with async report generation.
Add webhook listener endpoints for
CHECK_REPORT_READYandCHECK_REPORT_FAILED.- Upon receiving the
CHECK_REPORT_READYwebhook, call product endpoints such as/cra/check_report/income_insights/get. - Upon receiving the
CHECK_REPORT_FAILEDwebhook, call/user/items/getto determine why Items are in a bad state. If appropriate, send the user through update mode to repair the Item.
- Upon receiving the
Replace any Income endpoints and webhook listeners with the equivalent Plaid Check endpoint or webhook listener, using the API response comparison sheet to map response fields between the old endpoints and new endpoints.
| Income endpoint | Equivalent Plaid Check endpoint |
|---|---|
/credit/sessions/get | None (remove) |
/credit/bank_income/get | /cra/check_report/income_insights/get and/or /cra/check_report/base_report/get |
/credit/bank_income/pdf/get | /cra/check_report/pdf/get with add_ons: ["cra_income_insights"] |
/credit/bank_income/refresh | /cra/check_report/create |
| Income webhook | Equivalent Plaid Check webhook |
|---|---|
BANK_INCOME_REFRESH_COMPLETE | CHECK_REPORT_READY |
API response comparison
This Google Sheet highlights the correspondences between Bank Income and Plaid Check Income Insights schemas.
If you are using other Plaid Inc. products, note that the account_id returned in API responses from endpoints prefixed with /cra/ will not match the account_id returned in responses from non-CRA Plaid endpoints.