Plaid Check
API reference for Plaid Check endpoints and webhooks
The endpoints on this page will be available starting October 30, 2026. Until then, use the legacy Plaid Check endpoints.
| Endpoints | |
|---|---|
/cra/report/get | Retrieve a Consumer Report for your user |
/cra/report/create | Generate an updated Consumer Report for your user |
This page documents the latest suite of Plaid Check APIs. For the legacy /cra/check_report/*, /cra/servicing/*, and /cra/monitoring_insights/* endpoints, see the Legacy Plaid Check API reference.
| See also | |
|---|---|
/link/token/create | Create a token for initializing a Link session with Plaid Check |
/user/create | Create a user for use with Plaid Check |
/user/update | Update an existing user token to work with Plaid Check, or change user details |
/user/items/get | Returns Items associated with a user along with their corresponding statuses |
| Webhooks | |
|---|---|
CRA_REPORT_READY | A Consumer Report is ready to be retrieved |
/cra/report/get
Retrieve a Consumer Report for your user
/cra/report/get retrieves a Consumer Report for a user.
Request fields
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.
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.
A unique user identifier, created by /user/create. Integrations that began using /user/create after December 10, 2025 use this field to identify a user instead of the user_token. For more details, see New User APIs.
The requested products and their versions, e.g. [{"product":"cra_income_insights","version":"V2"}].
1 cra_qualify, cra_base_report, cra_income_insights, cra_cashflow_insights, cra_lend_score, cra_network_insights, cra_lend_score_complete, cra_income_completeA string that specifies a particular version of a CRA product.
- When
productiscra_qualify. - When
productiscra_income_insights. - When
productiscra_base_report. - When
productiscra_lend_score,optionscontainsvariants. - When
productiscra_cashflow_insights. - When
productiscra_network_insights. - When
productiscra_lend_score_complete,optionscontainsvariants. - When
productiscra_income_complete.
Determines whose items are used. PLAID_NETWORK (default) uses the Plaid Network view of the user's profile. CLIENT_USER uses only the items linked by this client.
PLAID_NETWORK, CLIENT_USERThe stage in the credit or other eligibility decisioning lifecycle for which a given report will be utilized.
Allowable permissible purposes for PREQUALIFICATION:
WRITTEN_INSTRUCTION_PREQUALIFICATION
Allowable permissible purposes for DECISIONING:
ELIGIBILITY_FOR_GOVT_BENEFITSEXTENSION_OF_CREDITLEGITIMATE_BUSINESS_NEED_OTHERLEGITIMATE_BUSINESS_NEED_TENANT_SCREENINGWRITTEN_INSTRUCTION_OTHER
If an incompatible decision_stage and consumer_report_permissible_purpose pairing is requested, an INVALID_FIELD error is returned. If your client isn't yet enabled for a given decision_stage on a product, a DECISION_STAGE_NOT_ENABLED error is returned instead (contact your Plaid account manager to enable it).
PREQUALIFICATION, DECISIONINGDescribes the reason you are generating a Consumer Report for this user. The purpose must be one of the allowable permissible purposes for the decision_stage.
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.
ELIGIBILITY_FOR_GOVT_BENEFITS: In connection with an eligibility determination for a government benefit where the entity is required to consider an applicant's financial status pursuant to FCRA Section 604(a)(3)(D).
INSURANCE_UNDERWRITING: In connection with the underwriting of insurance involving the consumer pursuant to FCRA Section 604(a)(3)(C).
EXTENSION_OF_CREDIT, LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING, LEGITIMATE_BUSINESS_NEED_OTHER, WRITTEN_INSTRUCTION_PREQUALIFICATION, WRITTEN_INSTRUCTION_OTHER, ELIGIBILITY_FOR_GOVT_BENEFITS, INSURANCE_UNDERWRITINGA unique ID identifying a Consumer Report. Like all Plaid identifiers, this ID is case sensitive. When provided, that specific report is returned; when omitted, the most recent report matching the request is returned. Omit this field when retrieving a report without a prior /cra/report/create or /link/token/create request.
try {
const response = await client.craReportGet({
user_id: 'usr_9nSp2KuZ2x4JDw',
scope: 'PLAID_NETWORK',
report_id: 'cra-report-production-6f8b1e0c-4d2a-4c7e-9a3b-2f1d8e5a7c90',
decision_stage: 'DECISIONING',
consumer_report_permissible_purpose: 'EXTENSION_OF_CREDIT',
products: [
{ product: 'cra_lend_score', version: 'V2' },
{ product: 'cra_cashflow_insights', version: 'V2' },
{ product: 'cra_network_insights', version: 'V2' },
],
});
} catch (error) {
// handle error
}
Response fields
The Consumer Report returned by /cra/report/get.
The identifier of the report that was returned. Pass this value to /cra/report/get to retrieve the same report again. null if the returned report has no stored identifier.
Client-generated identifier, which can be used by lenders to track loan applications.
The date and time the report was retrieved.
date-time Determines whose items are used. PLAID_NETWORK (default) uses the Plaid Network view of the user's profile. CLIENT_USER uses only the items linked by this client.
PLAID_NETWORK, CLIENT_USERThe stage in the credit or other eligibility decisioning lifecycle for which a given report will be utilized.
Allowable permissible purposes for PREQUALIFICATION:
WRITTEN_INSTRUCTION_PREQUALIFICATION
Allowable permissible purposes for DECISIONING:
ELIGIBILITY_FOR_GOVT_BENEFITSEXTENSION_OF_CREDITLEGITIMATE_BUSINESS_NEED_OTHERLEGITIMATE_BUSINESS_NEED_TENANT_SCREENINGWRITTEN_INSTRUCTION_OTHER
If an incompatible decision_stage and consumer_report_permissible_purpose pairing is requested, an INVALID_FIELD error is returned. If your client isn't yet enabled for a given decision_stage on a product, a DECISION_STAGE_NOT_ENABLED error is returned instead (contact your Plaid account manager to enable it).
PREQUALIFICATION, DECISIONINGDescribes the reason you are generating a Consumer Report for this user. The purpose must be one of the allowable permissible purposes for the decision_stage.
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.
ELIGIBILITY_FOR_GOVT_BENEFITS: In connection with an eligibility determination for a government benefit where the entity is required to consider an applicant's financial status pursuant to FCRA Section 604(a)(3)(D).
INSURANCE_UNDERWRITING: In connection with the underwriting of insurance involving the consumer pursuant to FCRA Section 604(a)(3)(C).
EXTENSION_OF_CREDIT, LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING, LEGITIMATE_BUSINESS_NEED_OTHER, WRITTEN_INSTRUCTION_PREQUALIFICATION, WRITTEN_INSTRUCTION_OTHER, ELIGIBILITY_FOR_GOVT_BENEFITS, INSURANCE_UNDERWRITINGPer-product report data. Each entry corresponds to one requested product.
A string that specifies a particular version of a CRA product.
The time the report was generated. May be null if unavailable.
date-time The number of Items used to generate the report.
The number of accounts used to generate the report.
The institution IDs of the Items used to generate the report.
The number of accounts carrying Plaid's primary account indicator.
The number of depository accounts used to generate the report.
The number of credit accounts used to generate the report.
The number of investment accounts used to generate the report.
The number of accounts that are neither depository, credit, nor investment.
The number of accounts with multiple owners.
The number of days of transaction history requested.
Product-level errors. Non-empty when this product failed to generate; empty on success.
A broad categorization of the error. Safe for programmatic use.
INVALID_REQUEST, INVALID_RESULT, INVALID_INPUT, INSTITUTION_ERROR, RATE_LIMIT_EXCEEDED, API_ERROR, ITEM_ERROR, ASSET_REPORT_ERROR, BASE_REPORT_ERROR, RECAPTCHA_ERROR, OAUTH_ERROR, PAYMENT_ERROR, BANK_TRANSFER_ERROR, INCOME_VERIFICATION_ERROR, MICRODEPOSITS_ERROR, SANDBOX_ERROR, PARTNER_ERROR, SIGNAL_ERROR, TRANSACTIONS_ERROR, TRANSACTION_ERROR, TRANSFER_ERROR, CHECK_REPORT_ERROR, CONSUMER_REPORT_ERROR, USER_ERROR, IDEMPOTENCY_ERROR, ASSETS_ERROR, CRA_MONITORING_ERROR, CREDIT_PROFILE_REPORT_ERROR, ENCOMPASS_ERROR, ENRICH_ERROR, FRAUD_INSIGHTS_ERROR, FREDDIE_MAC_ERROR, LINK_DELIVERY_ERROR, PROFILE_ERROR, RECURRING_TRANSACTIONS_ERROR, STATEMENTS_ERROR, TRANSFER_RECURRING_ERROR, TRANSFER_REFUND_ERROR, CRA_REPORT_ERROR, CRA_PARTNER_INSIGHTS_ERRORThe particular error code. Safe for programmatic use.
The specific reason for the error code. Currently, reasons are only supported for OAuth-based item errors; the field is omitted otherwise. Safe for programmatic use.
Possible values:
OAUTH_INVALID_TOKEN: The user's OAuth connection to this institution has been invalidated.
OAUTH_CONSENT_EXPIRED: The user's access consent for this OAuth connection to this institution has expired.
OAUTH_USER_REVOKED: The user's OAuth connection to this institution is invalid because the user revoked their connection.
A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
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.
A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks.
In this product, a request can pertain to more than one Item. If an error is returned for such a request, causes will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.
causes will be provided for the error_type ASSET_REPORT_ERROR or CHECK_REPORT_ERROR, and for the USER_ERROR codes USER_ITEM_ASSOCIATION_FAILED and USER_ITEM_REMOVAL_FAILED. causes will also not be populated inside an error nested within a warning object.
The HTTP status code associated with the error. This will only be returned in the response body when the error information is provided via a webhook.
The URL of a Plaid documentation page with more information about the error
Suggested steps for resolving the error
A list of the account subtypes that were requested via the account_filters parameter in /link/token/create. Currently only populated for NO_ACCOUNTS errors from Items with investments_auth as an enabled product.
A list of the account subtypes that were extracted but did not match the requested subtypes via the account_filters parameter in /link/token/create. Currently only populated for NO_ACCOUNTS errors from Items with investments_auth as an enabled product.
- When
productiscra_qualify,metadataisobject,attributesisobject. - When
productiscra_income_insights, includeitems;metadatacontainsgenerated_time,item_count,account_count,institution_ids,primary_account_count,depository_account,_type_count credit_account_type,_count investment_account,_type_count other_account_type,_count multiple_owner,_account_count oldest_transaction,_date most_recent,_transaction_date attributescontainsincome_streams,user_summary. - When
productiscra_cashflow_insights,metadatacontainsgenerated_time,item_count,account_count,institution_ids,primary_account_count,depository_account,_type_count credit_account_type,_count investment_account,_type_count other_account_type,_count multiple_owner,_account_count oldest_transaction,_date most_recent,_transaction_date attributesisobject. - When
productiscra_network_insights,metadatacontainsgenerated_time,item_count,account_count,institution_ids,primary_account_count,depository_account,_type_count credit_account_type,_count investment_account,_type_count other_account_type,_count multiple_owner,_account_count oldest_transaction,_date most_recent,_transaction_date attributesisobject. - When
productiscra_lend_score, includescores;metadatacontainsgenerated_time,item_count,account_count,institution_ids,primary_account_count,depository_account,_type_count credit_account_type,_count investment_account,_type_count other_account_type,_count multiple_owner,_account_count oldest_transaction,_date most_recent._transaction_date - When
productiscra_base_report, includeitems;metadatacontainsgenerated_time,item_count,account_count,institution_ids,days_requested,primary_account_count,depository_account,_type_count credit_account_type,_count investment_account,_type_count other_account_type,_count multiple_owner,_account_count oldest_transaction,_date most_recent,_transaction_date attributescontainsnsf_overdraft,_transactions_count nsf_overdraft,_transactions_count _30d nsf_overdraft,_transactions_count _60d nsf_overdraft,_transactions_count _90d total_inflow_amount,total_inflow_amount,_30d total_inflow_amount,_60d total_inflow_amount,_90d total_outflow_amount,total_outflow_amount,_30d total_outflow_amount,_60d total_outflow_amount._90d - When
productiscra_lend_score_complete, includeitems;metadatacontainsgenerated_time,item_count,account_count,institution_ids,primary_account_count,depository_account,_type_count credit_account_type,_count investment_account,_type_count other_account_type,_count multiple_owner,_account_count oldest_transaction,_date most_recent,_transaction_date attributescontainslend_scores,cashflow_insights,network_insights. - When
productiscra_income_complete, includeitems;metadatacontainsgenerated_time,item_count,account_count,institution_ids,primary_account_count,depository_account,_type_count credit_account_type,_count investment_account,_type_count other_account_type,_count multiple_owner,_account_count oldest_transaction,_date most_recent,_transaction_date attributescontainsincome_insights.
The income streams detected for the user.
A unique identifier for an income stream. If the report is regenerated and a new report_id is created, the new report will have a new set of income_stream_ids.
Minimum of all dates within the specific income stream. The date will be returned in an ISO 8601 format (YYYY-MM-DD). May be null if the producer could not compute a date range.
date Maximum of all dates within the specific income stream. The date will be returned in an ISO 8601 format (YYYY-MM-DD). May be null if the producer could not compute a date range.
date The most common name or original description for the underlying income transactions. Only populated when scope is CLIENT_USER; null for any other scope.
Modeled insights for a given income stream.
The income category for a given stream. The streams returned in the response will be filtered based on these primary and secondary income categories.
See the Income V2 Category Taxonomy for a full list of income categories.
A high level category that communicates the broad category of the stream.
A granular category conveying the stream's intent.
The income pay frequency.
WEEKLY, BIWEEKLY, SEMI_MONTHLY, MONTHLY, DAILY, UNKNOWNThe object containing data about the income provider.
The name of the income provider.
Indicates whether the income provider name is normalized by comparing it against a canonical set of known providers.
The status of the income sources.
ACTIVE: The income source is active.
INACTIVE: The income source is inactive.
UNKNOWN: The income source status is unknown.
ACTIVE, INACTIVE, UNKNOWNMetadata of the income stream's next payment.
The expected date of the income stream's next payment. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
date Modeled income metrics for a given income stream or user summary.
Modeled estimate of current income based on recently observed income transactions.
Modeled estimate of the monthly income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Modeled estimate of the annual income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Forward-looking modeled estimate of income based on recent income transactions and trends in active streams.
Modeled estimate of the monthly income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Modeled estimate of the annual income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
The ISO 4217 currency code of the amount or balance.
The unofficial currency code associated with the amount or balance. Always null if iso_currency_code is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
The transactions data for the income stream ordered by ascending date. Only populated when scope is CLIENT_USER; empty for any other scope.
The unique ID of the transaction. Like all Plaid identifiers, the transaction_id is case sensitive.
The item_id of the Item associated with this webhook, warning, or error
Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new account_id will be assigned to the account.
If an account with a specific account_id disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API.
Like all Plaid identifiers, the account_id is case sensitive.
The settled value of the transaction, denominated in the transaction's currency as stated in iso_currency_code or unofficial_currency_code.
Positive values when money moves out of the account; negative values when money moves in.
For example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative.
For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an ISO 8601 format (YYYY-MM-DD).
date The string returned by the financial institution to describe the transaction.
The ISO 4217 currency code of the amount or balance.
The unofficial currency code associated with the amount or balance. Always null if iso_currency_code is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
Metadata on whether this income transaction is an outlier.
Indicates whether an income transaction amount is unusually high compared to the amounts for that stream.
The amount that the transaction differs from the stream average transaction amount.
Aggregated summary of all income streams for this user.
List of a user's aggregated income metrics for each currency.
Modeled estimate of current income based on recently observed income transactions.
Modeled estimate of the monthly income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Modeled estimate of the annual income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Forward-looking modeled estimate of income based on recent income transactions and trends in active streams.
Modeled estimate of the monthly income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Modeled estimate of the annual income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
The ISO 4217 currency code of the amount or balance.
The unofficial currency code associated with the amount or balance. Always null if iso_currency_code is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
The results for the requested LendScore variants. If a variant fails due to a client error, its score is null and its error_code is populated.
The variant identifier for a LendScore result.
GENERALIST, AUTO, MORTGAGE, SHORT_TERM_LOANS, ARCThe score returned by the LendScore model for this variant.
The reasons for an individual having risk according to this LendScore variant. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid account manager. Empty if the variant could not be computed.
The error code explaining why this LendScore variant could not be computed, such as INSUFFICIENT_TRANSACTION_DATA or NO_ACCOUNTS. null on success. New codes may be added over time, so treat an unrecognized value as a generic failure.
A map of Cashflow Insights attributes, where the key is a string and the value is a string, float, int, or boolean. The specific list of attributes depends on the version requested. For a full list, contact your account manager. May be null if attributes were not available.
A map of Network Insights attributes, where the key is a string and the value is a float, int, or boolean. The specific list of attributes depends on the version requested. For a full list, contact your account manager. May be null if attributes were not available.
Income Insights attribute data returned by /cra/report/get.
The income streams detected for the user.
A unique identifier for an income stream. If the report is regenerated and a new report_id is created, the new report will have a new set of income_stream_ids.
Minimum of all dates within the specific income stream. The date will be returned in an ISO 8601 format (YYYY-MM-DD). May be null if the producer could not compute a date range.
date Maximum of all dates within the specific income stream. The date will be returned in an ISO 8601 format (YYYY-MM-DD). May be null if the producer could not compute a date range.
date The most common name or original description for the underlying income transactions. Only populated when scope is CLIENT_USER; null for any other scope.
Modeled insights for a given income stream.
The income category for a given stream. The streams returned in the response will be filtered based on these primary and secondary income categories.
See the Income V2 Category Taxonomy for a full list of income categories.
A high level category that communicates the broad category of the stream.
A granular category conveying the stream's intent.
The income pay frequency.
WEEKLY, BIWEEKLY, SEMI_MONTHLY, MONTHLY, DAILY, UNKNOWNThe object containing data about the income provider.
The name of the income provider.
Indicates whether the income provider name is normalized by comparing it against a canonical set of known providers.
The status of the income sources.
ACTIVE: The income source is active.
INACTIVE: The income source is inactive.
UNKNOWN: The income source status is unknown.
ACTIVE, INACTIVE, UNKNOWNMetadata of the income stream's next payment.
The expected date of the income stream's next payment. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
date Modeled income metrics for a given income stream or user summary.
Modeled estimate of current income based on recently observed income transactions.
Modeled estimate of the monthly income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Modeled estimate of the annual income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Forward-looking modeled estimate of income based on recent income transactions and trends in active streams.
Modeled estimate of the monthly income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Modeled estimate of the annual income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
The ISO 4217 currency code of the amount or balance.
The unofficial currency code associated with the amount or balance. Always null if iso_currency_code is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
The transactions data for the income stream ordered by ascending date. Only populated when scope is CLIENT_USER; empty for any other scope.
The unique ID of the transaction. Like all Plaid identifiers, the transaction_id is case sensitive.
The item_id of the Item associated with this webhook, warning, or error
Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new account_id will be assigned to the account.
If an account with a specific account_id disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API.
Like all Plaid identifiers, the account_id is case sensitive.
The settled value of the transaction, denominated in the transaction's currency as stated in iso_currency_code or unofficial_currency_code.
Positive values when money moves out of the account; negative values when money moves in.
For example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative.
For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an ISO 8601 format (YYYY-MM-DD).
date The string returned by the financial institution to describe the transaction.
The ISO 4217 currency code of the amount or balance.
The unofficial currency code associated with the amount or balance. Always null if iso_currency_code is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
Metadata on whether this income transaction is an outlier.
Indicates whether an income transaction amount is unusually high compared to the amounts for that stream.
The amount that the transaction differs from the stream average transaction amount.
Aggregated summary of all income streams for this user.
List of a user's aggregated income metrics for each currency.
Modeled estimate of current income based on recently observed income transactions.
Modeled estimate of the monthly income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Modeled estimate of the annual income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Forward-looking modeled estimate of income based on recent income transactions and trends in active streams.
Modeled estimate of the monthly income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
Modeled estimate of the annual income.
Gross Income modeled from trends of observed transactions.
Net Income estimated from observed transactions.
The ISO 4217 currency code of the amount or balance.
The unofficial currency code associated with the amount or balance. Always null if iso_currency_code is non-null.
Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
[object], [object], [object]The results for the requested LendScore variants. If a variant fails due to a client error, its score is null and its error_code is populated.
The variant identifier for a LendScore result.
GENERALIST, AUTO, MORTGAGE, SHORT_TERM_LOANS, ARCThe score returned by the LendScore model for this variant.
The reasons for an individual having risk according to this LendScore variant. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid account manager. Empty if the variant could not be computed.
The error code explaining why this LendScore variant could not be computed, such as INSUFFICIENT_TRANSACTION_DATA or NO_ACCOUNTS. null on success. New codes may be added over time, so treat an unrecognized value as a generic failure.
A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
A unique user identifier, created by /user/create. Integrations that began using /user/create after December 10, 2025 use this field to identify a user instead of the user_token. For more details, see New User APIs.
The unique ID representing the end user that you supplied as client_user_id when creating the user via /user/create. null if the user has no client_user_id on record.
User or report-level errors that affected the overall report but do not map to a specific product failure.
The warning type, which will always be CHECK_REPORT_WARNING
The warning code identifies a specific kind of warning.
IDENTITY_UNAVAILABLE: Account-owner information is not available.
TRANSACTIONS_UNAVAILABLE: Transactions information associated with Credit and Depository accounts are unavailable.
USER_FRAUD_ALERT: The user has placed a fraud alert on their Plaid Check consumer report due to suspected fraud. Please note that when a fraud alert is in place, the recipient of the consumer report has an obligation to verify the consumer's identity.
IDENTITY_UNAVAILABLE, TRANSACTIONS_UNAVAILABLE, USER_FRAUD_ALERTAn error object and associated item_id used to identify a specific Item and error when a batch operation operating on multiple Items has encountered an error in one of the Items.
A broad categorization of the error. Safe for programmatic use.
INVALID_REQUEST, INVALID_RESULT, INVALID_INPUT, INSTITUTION_ERROR, RATE_LIMIT_EXCEEDED, API_ERROR, ITEM_ERROR, ASSET_REPORT_ERROR, BASE_REPORT_ERROR, RECAPTCHA_ERROR, OAUTH_ERROR, PAYMENT_ERROR, BANK_TRANSFER_ERROR, INCOME_VERIFICATION_ERROR, MICRODEPOSITS_ERROR, SANDBOX_ERROR, PARTNER_ERROR, SIGNAL_ERROR, TRANSACTIONS_ERROR, TRANSACTION_ERROR, TRANSFER_ERROR, CHECK_REPORT_ERROR, CONSUMER_REPORT_ERROR, USER_ERROR, IDEMPOTENCY_ERROR, ASSETS_ERROR, CRA_MONITORING_ERROR, CREDIT_PROFILE_REPORT_ERROR, ENCOMPASS_ERROR, ENRICH_ERROR, FRAUD_INSIGHTS_ERROR, FREDDIE_MAC_ERROR, LINK_DELIVERY_ERROR, PROFILE_ERROR, RECURRING_TRANSACTIONS_ERROR, STATEMENTS_ERROR, TRANSFER_RECURRING_ERROR, TRANSFER_REFUND_ERROR, CRA_REPORT_ERROR, CRA_PARTNER_INSIGHTS_ERRORThe particular error code. Safe for programmatic use.
The specific reason for the error code. Currently, reasons are only supported for OAuth-based item errors; the field is omitted otherwise. Safe for programmatic use.
Possible values:
OAUTH_INVALID_TOKEN: The user's OAuth connection to this institution has been invalidated.
OAUTH_CONSENT_EXPIRED: The user's access consent for this OAuth connection to this institution has expired.
OAUTH_USER_REVOKED: The user's OAuth connection to this institution is invalid because the user revoked their connection.
A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
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.
A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks.
In this product, a request can pertain to more than one Item. If an error is returned for such a request, causes will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.
causes will be provided for the error_type ASSET_REPORT_ERROR or CHECK_REPORT_ERROR, and for the USER_ERROR codes USER_ITEM_ASSOCIATION_FAILED and USER_ITEM_REMOVAL_FAILED. causes will also not be populated inside an error nested within a warning object.
The HTTP status code associated with the error. This will only be returned in the response body when the error information is provided via a webhook.
The URL of a Plaid documentation page with more information about the error
Suggested steps for resolving the error
A list of the account subtypes that were requested via the account_filters parameter in /link/token/create. Currently only populated for NO_ACCOUNTS errors from Items with investments_auth as an enabled product.
A list of the account subtypes that were extracted but did not match the requested subtypes via the account_filters parameter in /link/token/create. Currently only populated for NO_ACCOUNTS errors from Items with investments_auth as an enabled product.
The item_id of the Item associated with this webhook, warning, or error
{
"request_id": "eYupqX1mZkEuQRx",
"user_id": "usr_abc123",
"client_user_id": "your-db-id-3b24110",
"warnings": [],
"report": {
"report_id": "cra-report-production-6f8b1e0c-4d2a-4c7e-9a3b-2f1d8e5a7c90",
"client_report_id": "908en3djkk342",
"retrieved_time": "2024-01-15T10:30:00Z",
"scope": "CLIENT_USER",
"decision_stage": "DECISIONING",
"consumer_report_permissible_purpose": "EXTENSION_OF_CREDIT",
"products": [
{
"product": "cra_lend_score",
"version": "V2",
"metadata": {
"generated_time": "2024-01-15T10:30:00Z",
"item_count": 3,
"account_count": 5,
"institution_ids": [
"ins_56"
],
"primary_account_count": 1,
"depository_account_type_count": 3,
"credit_account_type_count": 2,
"investment_account_type_count": 0,
"other_account_type_count": 0,
"multiple_owner_account_count": 0,
"oldest_transaction_date": "2023-01-15",
"most_recent_transaction_date": "2024-01-14"
},
"scores": [
{
"variant": "GENERALIST",
"score": 1472,
"reason_codes": [
"PCS0220",
"PCS0216"
],
"error_code": null
}
],
"errors": []
},
{
"product": "cra_cashflow_insights",
"version": "V2",
"metadata": {
"generated_time": "2024-01-15T10:30:00Z",
"item_count": 3,
"account_count": 5,
"institution_ids": [
"ins_56"
],
"primary_account_count": 1,
"depository_account_type_count": 3,
"credit_account_type_count": 2,
"investment_account_type_count": 0,
"other_account_type_count": 0,
"multiple_owner_account_count": 0,
"oldest_transaction_date": "2023-01-15",
"most_recent_transaction_date": "2024-01-14"
},
"attributes": {
"accounts_count": 5,
"depository_accounts_count": 3,
"credit_accounts_count": 2,
"depository_latest_balance_user_sum_1d": 4823.56,
"net_income_amt_sum_90d": 13418.75,
"income_sources_count_90d": 1,
"income_is_salaried_90d": 1,
"payment_behavior_nsf_late_fees_count_30d": 0,
"cash_reliance_atm_withdrawal_amt_cv_90d": 0.42
},
"errors": []
},
{
"product": "cra_income_insights",
"version": "V2",
"metadata": {
"generated_time": "2024-01-15T10:30:00Z",
"item_count": 1,
"account_count": 1,
"institution_ids": [
"ins_56"
],
"primary_account_count": 1,
"depository_account_type_count": 1,
"credit_account_type_count": 0,
"investment_account_type_count": 0,
"other_account_type_count": 0,
"multiple_owner_account_count": 0,
"oldest_transaction_date": "2023-01-15",
"most_recent_transaction_date": "2024-01-14"
},
"attributes": {
"income_streams": [],
"user_summary": null
},
"items": [
{
"institution_id": "ins_56",
"institution_name": "Chase",
"item_id": "AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7",
"last_updated_time": "2024-01-15T10:28:00Z",
"accounts": [
{
"account_id": "1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8",
"name": "Plaid Checking Account",
"official_name": "Plaid Checking Account",
"mask": "8888",
"type": "depository",
"subtype": "checking"
}
]
}
],
"errors": []
},
{
"product": "cra_network_insights",
"version": "V2",
"metadata": {
"generated_time": "2024-01-15T10:30:00Z",
"item_count": 3,
"account_count": 5,
"institution_ids": [
"ins_56"
],
"primary_account_count": 1,
"depository_account_type_count": 3,
"credit_account_type_count": 2,
"investment_account_type_count": 0,
"other_account_type_count": 0,
"multiple_owner_account_count": 0,
"oldest_transaction_date": "2023-01-15",
"most_recent_transaction_date": "2024-01-14"
},
"attributes": {
"plaid_conn_user_days_since_first_conn_all": 412,
"plaid_conn_user_lifetime_lending_count": 3,
"plaid_conn_user_lifetime_personal_lending_flag": 1,
"plaid_conn_user_active_lending_count_90d": 1,
"plaid_conn_user_lifetime_cash_advance_primary_count": 0,
"plaid_conn_user_active_ewa_primary_count_90d": 0
},
"errors": []
}
]
}
}/cra/report/create
Generate an updated Consumer Report for your user
/cra/report/create generates a Consumer Report for a user. With scope set to PLAID_NETWORK, the report is generated from the Plaid Network view of the user's profile. With CLIENT_USER, the report is generated from only the Items the user linked to your client.
Each requested product is generated asynchronously. Use the returned report_id to retrieve the report once its products are ready.
Request fields
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.
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.
A unique user identifier, created by /user/create. Integrations that began using /user/create after December 10, 2025 use this field to identify a user instead of the user_token. For more details, see New User APIs.
The Plaid Check products, versions, and options to generate for the report.
1 cra_base_report, cra_income_insights, cra_cashflow_insights, cra_lend_score, cra_network_insights, cra_lend_score_complete, cra_income_completeA string that specifies a particular version of a CRA product.
- When
productiscra_base_report,optionscontainsrequire_identity. - When
productiscra_cashflow_insights. - When
productiscra_income_insights,optionscontainsincome_insights_filter. - When
productiscra_lend_score,optionscontainsvariants. - When
productiscra_network_insights. - When
productiscra_lend_score_complete,optionscontainsvariants. - When
productiscra_income_complete,optionscontainsincome_insights_filter.
Require the report to include identity information. If identity information is not available, report generation fails.
Filters the returned income streams based on the specified income categories. If no filters are requested, streams from the following default set of categories are returned:
EARNED_INCOME.*(EARNED_INCOME.SALARY,EARNED_INCOME.GIG_ECONOMY,EARNED_INCOME.SELF_EMPLOYED)BENEFITS.DISABILITYRETIREMENT.*(RETIREMENT.GOVERNMENT_DERIVED,RETIREMENT.PRIVATE_RETIREMENT,RETIREMENT.PLAN_DISTRIBUTION)
The final list of income categories is generated by adding the included_categories, then removing the excluded_categories. Priority is given to excluded_categories in the case of collisions.
Filter patterns supported:
*: All categoriesPRIMARY.*: All categories within the specified primary categoryPRIMARY.SECONDARY: A specific income category
For a list of income categories, see the Income V2 Category Taxonomy.
Includes income streams matching the specified categories.
Excludes income streams matching the specified categories.
Determines which Items are used to generate the report. PLAID_NETWORK uses the Plaid Network view of the user's profile. CLIENT_USER uses only the Items linked by this client.
PLAID_NETWORK, CLIENT_USERThe stage in the credit or other eligibility decisioning lifecycle for which a given report will be utilized.
Allowable permissible purposes for PREQUALIFICATION:
WRITTEN_INSTRUCTION_PREQUALIFICATION
Allowable permissible purposes for DECISIONING:
ELIGIBILITY_FOR_GOVT_BENEFITSEXTENSION_OF_CREDITLEGITIMATE_BUSINESS_NEED_OTHERLEGITIMATE_BUSINESS_NEED_TENANT_SCREENINGWRITTEN_INSTRUCTION_OTHER
If an incompatible decision_stage and consumer_report_permissible_purpose pairing is requested, an INVALID_FIELD error is returned. If your client isn't yet enabled for a given decision_stage on a product, a DECISION_STAGE_NOT_ENABLED error is returned instead (contact your Plaid account manager to enable it).
PREQUALIFICATION, DECISIONINGDescribes the reason you are generating a Consumer Report for this user. The purpose must be one of the allowable permissible purposes for the decision_stage.
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.
ELIGIBILITY_FOR_GOVT_BENEFITS: In connection with an eligibility determination for a government benefit where the entity is required to consider an applicant's financial status pursuant to FCRA Section 604(a)(3)(D).
INSURANCE_UNDERWRITING: In connection with the underwriting of insurance involving the consumer pursuant to FCRA Section 604(a)(3)(C).
EXTENSION_OF_CREDIT, LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING, LEGITIMATE_BUSINESS_NEED_OTHER, WRITTEN_INSTRUCTION_PREQUALIFICATION, WRITTEN_INSTRUCTION_OTHER, ELIGIBILITY_FOR_GOVT_BENEFITS, INSURANCE_UNDERWRITINGClient-generated identifier, which can be used by lenders to track loan applications.
The number of days of history to include in Plaid Check products. Maximum is 731. If a value lower than 180 is provided, a minimum of 180 days of history will be requested.
0 731 The minimum number of days of data required for the report to be successfully generated.
0 184 Indicates that investment data should be extracted from the linked account(s).
Indicates that identity match results should be included for all products in the report that contain identity information. Defaults to false.
The destination URL to which the report's webhooks will be sent.
url try {
const response = await client.craReportCreate({
user_id: 'usr_9nSp2KuZ2x4JDw',
scope: 'CLIENT_USER',
webhook: 'https://sample-web-hook.com',
days_requested: 365,
decision_stage: 'DECISIONING',
consumer_report_permissible_purpose: 'EXTENSION_OF_CREDIT',
products: [
{ product: 'cra_base_report', version: 'V1' },
{ product: 'cra_income_insights', version: 'V2' },
{ product: 'cra_lend_score', version: 'V2' },
],
});
} catch (error) {
// handle error
}
Response fields
The identifier of the report being generated. Use it to retrieve the report once its products are ready.
A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
{
"request_id": "eYupqX1mZkEuQRx",
"report_id": "cra-report-production-3c9d2a71-5e4b-4f0a-8b6d-7a1e9f2c4b58"
}Webhooks
When you create a new report, either by creating a Link token with cra_report_parameter or by calling /cra/report/create, Plaid Check will start generating the requested products for you asynchronously. When generation finishes, whether every product succeeded, only some did, or none did, Plaid Check will send you a CRA_REPORT: CRA_REPORT_READY webhook. Its successful_products and failed_products fields indicate which products were generated, and error_code is populated when every product failed. Call /cra/report/get to retrieve the generated products and to see error details for any failed products.
CRA_REPORT_READY
Fired when generation finishes for a Consumer Report requested via /cra/report/create or a Link session configured with cra_report_parameter, whether every requested product was generated, only some were, or none were. successful_products and failed_products indicate which products were generated, and error_code is populated when every product failed. Call /cra/report/get for the generated products and for error details on failed products.
Properties
CRA_REPORT
CRA_REPORT_READY
The user_id associated with the user whose data is being requested. This is received by calling /user/create.
The client_user_id you supplied for this user when calling /user/create. null if no client_user_id is associated with the user.
The identifier of the Consumer Report. Pass this value to /cra/report/get to retrieve the report.
The client_report_id you supplied when requesting the report, if any.
Determines whose items are used. PLAID_NETWORK (default) uses the Plaid Network view of the user's profile. CLIENT_USER uses only the items linked by this client.
PLAID_NETWORK, CLIENT_USERSpecifies a list of products that have successfully been generated for the report.
A list of products that an institution can support. All Items must be initialized with at least one product. The Balance product is always available and does not need to be specified during initialization.
cra_base_report, cra_income_insights, cra_cashflow_insights, cra_lend_score, cra_network_insightsA string that specifies a particular version of a CRA product.
Specifies a list of products that have failed to generate for the report. Additional detail on what caused the failure can be found in the product's errors when calling /cra/report/get.
A list of products that an institution can support. All Items must be initialized with at least one product. The Balance product is always available and does not need to be specified during initialization.
cra_base_report, cra_income_insights, cra_cashflow_insights, cra_lend_score, cra_network_insightsA string that specifies a particular version of a CRA product.
The timestamp when the products were generated, in ISO 8601 format. Null if there are no successful products.
date-time The reason every product in a Consumer Report failed to generate. null when at least one product succeeded.
DATA_UNAVAILABLE: Plaid could not retrieve enough data from the user's Items to generate any of the requested products. Sending the user through Link to add or repair Items may resolve this.
INTERNAL_SERVER_ERROR: Plaid encountered an unexpected error while generating the report.
DATA_UNAVAILABLE, INTERNAL_SERVER_ERROR, nullThe Plaid environment the webhook was sent from
sandbox, production{
"webhook_type": "CRA_REPORT",
"webhook_code": "CRA_REPORT_READY",
"user_id": "usr_8c3ZbDBYjaqUXZ",
"client_user_id": "uid_12345",
"report_id": "cra-report-production-3c9d2a71-5e4b-4f0a-8b6d-7a1e9f2c4b58",
"client_report_id": "908en3djkk342",
"scope": "CLIENT_USER",
"successful_products": [
{
"product": "cra_base_report",
"version": "V1"
},
{
"product": "cra_income_insights",
"version": "V2"
}
],
"failed_products": [
{
"product": "cra_lend_score",
"version": "V2"
}
],
"generated_time": "2026-01-12T20:23:59Z",
"error_code": null,
"environment": "production"
}