---
title: "Retrieve income insights from your user's banks"
method: POST
path: "/cra/check_report/income_insights/get"
tags: ["plaid"]
---

# Retrieve income insights from your user's banks

`POST /cra/check_report/income_insights/get`

This endpoint allows you to retrieve the Income Insights report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.

NOTE: The following schema was updated in April 2026 to reflect the response when the provided version is "II2". Please see [this document](https://docs.google.com/document/d/1kQkQ7FOgFaC4n-sUGUk74hoXZNY_L_nJeCuMe7Keip4/edit?tab=t.0#heading=h.rudamzinus2i) for guidance on migrating to II2 if you are currently using the II1 version, and [this section](https://docs.google.com/document/d/1kQkQ7FOgFaC4n-sUGUk74hoXZNY_L_nJeCuMe7Keip4/edit?tab=t.0#bookmark=id.tdcc2wpk0h60) for an example II1 response along with its [documentation](https://docs.google.com/document/d/1kQkQ7FOgFaC4n-sUGUk74hoXZNY_L_nJeCuMe7Keip4/edit?tab=t.36c85n2ircqk#heading=h.79dwr5c1iszl).

## Request body

- CraCheckReportIncomeInsightsGetRequest — Defines the request schema for `/cra/check_report/income_insights/get`.
  - `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.
  - `user_token` string — The user token associated with the user for which data is being requested. This field is used only by customers with pre-existing integrations that already use the `user_token` field. All other customers should use the `user_id` instead. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis).
  - `third_party_user_token` string — The third-party user token associated with the requested User data.
  - `user_id` string — 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](https://plaid.com/docs/api/users/user-apis).
  - `options` CraCheckReportIncomeInsightsGetOptions, nullable — Deprecated. This field is no longer accepted for new clients (created on or after 2026-07-01). New clients should specify required products when creating the Consumer Report. Existing integrations may continue to pass `options`.
    - `income_insights_filter` IncomeInsightsFilter, nullable — 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.DISABILITY` - `RETIREMENT.*` (`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 categories - `PRIMARY.*`: All categories within the specified primary category - `PRIMARY.SECONDARY`: A specific income category For a list of income categories, see the [Income V2 Category Taxonomy](https://plaid.com/documents/income-v2-category-taxonomy.csv).
      - `included_categories` string[], required — Includes income streams matching the specified categories.
      - `excluded_categories` string[] — Excludes income streams matching the specified categories.
    - `income_insights_version` 'II2', nullable, required — The version of Income Insights to use. This value is not shared across API calls for the same resource. If it is omitted from a request, the default version is used, even if a version was set in an earlier call such as `/link/token/create` or `/cra/check_report/create`.
  - `report_id` string — The CRA report token (formatted `cra-report-<env>-<uuid>`) identifying a specific consumer report. When provided alongside `consumer_report_permissible_purpose`, pins retrieval to that report and stamps its permissible purpose. If omitted, the most recently generated report for the user is returned.
  - `consumer_report_permissible_purpose` 'ACCOUNT_REVIEW_CREDIT' | 'WRITTEN_INSTRUCTION_OTHER' — The permissible purpose under the FCRA for retrieving this consumer report. Restricted to permissible purposes related to loan servicing only. Required when `report_id` is provided.

## Response `200`

OK

- CraCheckReportIncomeInsightsGetResponse — CraCheckReportIncomeInsightsGetResponse defines the response schema for `/cra/check_report/income_insights/get`.
  - `report` CraIncomeInsights — The Check Income Insights Report for an end user.
    - `report_id` string — The unique identifier associated with the Check Income Insights Report.
    - `generated_time` string, date-time — The time when the Check Income Insights Report was generated.
    - `days_requested` integer — The number of days requested by the customer for the Check Income Insights Report.
    - `client_report_id` string, nullable — Client-generated identifier, which can be used by lenders to track loan applications.
    - `items` CraBankIncomeItem[] — The list of Items in the report along with the associated metadata about the Item.
      - `item_id` string — The `item_id` of the Item associated with this webhook, warning, or error
      - `accounts` CraBankIncomeAccount[] — The Item's accounts that have bank income data.
        - `account_id` string — 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.
        - `mask` string, nullable, required — The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user.
        - `metadata` CraBankIncomeAccountMetadata, required — An object containing metadata about the extracted account.
          - `start_date` string, date, nullable, required — The date of the earliest extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd").
          - `end_date` string, date, nullable, required — The date of the most recent extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd").
        - `name` string, required — The name of the bank account.
        - `official_name` string, nullable, required — The official name of the bank account.
        - `subtype` 'checking' | 'savings' | 'hsa' | 'cd' | 'money market' | 'paypal' | 'prepaid' | 'cash management' | 'ebt' | 'limited purpose checking' | 'all', required — Valid account subtypes for depository accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-depository).
        - `type` 'depository', required — The account type. This will always be `depository`.
        - `owners` Owner[], required — Data returned by the financial institution about the account owner or owners. Identity information is optional, so field may return an empty array.
          - `names` string[], required — A list of names associated with the account by the financial institution. In the case of a joint account, Plaid will make a best effort to report the names of all account holders. If an Item contains multiple accounts with different owner names, some institutions will report all names associated with the Item in each account's `names` array.
          - `phone_numbers` PhoneNumber[], required — A list of phone numbers associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
            - `data` string, required — The phone number.
            - `primary` boolean, required — When `true`, identifies the phone number as the primary number on an account.
            - `type` 'home' | 'work' | 'office' | 'mobile' | 'mobile1' | 'other', required — The type of phone number.
          - `emails` Email[], required — A list of email addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
            - `data` string, required — The email address.
            - `primary` boolean, required — When `true`, identifies the email address as the primary email on an account.
            - `type` 'primary' | 'secondary' | 'other', required — The type of email account as described by the financial institution.
          - `addresses` Address[], required — Data about the various addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
            - `data` AddressData, required — Data about the components comprising an address.
              - …
            - `primary` boolean — When `true`, identifies the address as the primary address on an account.
      - `bank_income_accounts` CraBankIncomeAccount[], required — This is a V1 (II1) field. For the V2 (II2) equivalent, use the `accounts` field. The Item's accounts that have bank income data.
        - `account_id` string — 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.
        - `mask` string, nullable, required — The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user.
        - `metadata` CraBankIncomeAccountMetadata, required — An object containing metadata about the extracted account.
          - `start_date` string, date, nullable, required — The date of the earliest extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd").
          - `end_date` string, date, nullable, required — The date of the most recent extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd").
        - `name` string, required — The name of the bank account.
        - `official_name` string, nullable, required — The official name of the bank account.
        - `subtype` 'checking' | 'savings' | 'hsa' | 'cd' | 'money market' | 'paypal' | 'prepaid' | 'cash management' | 'ebt' | 'limited purpose checking' | 'all', required — Valid account subtypes for depository accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-depository).
        - `type` 'depository', required — The account type. This will always be `depository`.
        - `owners` Owner[], required — Data returned by the financial institution about the account owner or owners. Identity information is optional, so field may return an empty array.
          - `names` string[], required — A list of names associated with the account by the financial institution. In the case of a joint account, Plaid will make a best effort to report the names of all account holders. If an Item contains multiple accounts with different owner names, some institutions will report all names associated with the Item in each account's `names` array.
          - `phone_numbers` PhoneNumber[], required — A list of phone numbers associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
            - `data` string, required — The phone number.
            - `primary` boolean, required — When `true`, identifies the phone number as the primary number on an account.
            - `type` 'home' | 'work' | 'office' | 'mobile' | 'mobile1' | 'other', required — The type of phone number.
          - `emails` Email[], required — A list of email addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
            - `data` string, required — The email address.
            - `primary` boolean, required — When `true`, identifies the email address as the primary email on an account.
            - `type` 'primary' | 'secondary' | 'other', required — The type of email account as described by the financial institution.
          - `addresses` Address[], required — Data about the various addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
            - `data` AddressData, required — Data about the components comprising an address.
              - …
            - `primary` boolean — When `true`, identifies the address as the primary address on an account.
      - `bank_income_sources` CraBankIncomeSource[], required — This is a V1 (II1) field. For the V2 (II2) equivalent, use the report-level `income_streams` field. The income sources for this Item. Each entry in the array is a single income source.
        - `account_id` string — The account ID with which this income source is associated.
        - `income_source_id` string — A unique identifier for an income source. If the report is regenerated and a new `report_id` is created, the new report will have a new set of `income_source_id`s.
        - `income_description` string — The most common name or original description for the underlying income transactions.
        - `income_category` 'SALARY' | 'UNEMPLOYMENT' | 'CASH' | 'GIG_ECONOMY' | 'RENTAL' | 'CHILD_SUPPORT' | 'MILITARY' | 'RETIREMENT' | 'LONG_TERM_DISABILITY' | 'BANK_INTEREST' | 'CASH_DEPOSIT' | 'TRANSFER_FROM_APPLICATION' | 'TAX_REFUND' | 'BENEFIT_OTHER' | 'OTHER' — The income category. `BANK_INTEREST`: Interest earned from a bank account. `BENEFIT_OTHER`: Government benefits other than retirement, unemployment, child support, or disability. Currently used only in the UK, to represent benefits such as Cost of Living Payments. `CASH`: Deprecated and used only for existing legacy implementations. Has been replaced by `CASH_DEPOSIT` and `TRANSFER_FROM_APPLICATION`. `CASH_DEPOSIT`: A cash or check deposit. `CHILD_SUPPORT`: Child support payments received. `GIG_ECONOMY`: Income earned as a gig economy worker, e.g. driving for Uber, Lyft, Postmates, DoorDash, etc. `LONG_TERM_DISABILITY`: Disability payments, including Social Security disability benefits. `OTHER`: Income that could not be categorized as any other income category. `MILITARY`: Veterans benefits. Income earned as salary for serving in the military (e.g. through DFAS) will be classified as `SALARY` rather than `MILITARY`. `RENTAL`: Income earned from a rental property. Income may be identified as rental when the payment is received through a rental platform, e.g. Airbnb; rent paid directly by the tenant to the property owner (e.g. via cash, check, or ACH) will typically not be classified as rental income. `RETIREMENT`: Payments from private retirement systems, pensions, and government retirement programs, including Social Security retirement benefits. `SALARY`: Payment from an employer to an earner or other form of permanent employment. `TAX_REFUND`: A tax refund. `TRANSFER_FROM_APPLICATION`: Deposits from a money transfer app, such as Venmo, Cash App, or Zelle. `UNEMPLOYMENT`: Unemployment benefits. In the UK, includes certain low-income benefits such as the Universal Credit.
        - `start_date` string, date — Minimum of all dates within the specific income sources in the user's bank account for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
        - `end_date` string, date — Maximum of all dates within the specific income sources in the user's bank account for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
        - `pay_frequency` 'WEEKLY' | 'BIWEEKLY' | 'SEMI_MONTHLY' | 'MONTHLY' | 'DAILY' | 'UNKNOWN' — The income pay frequency.
        - `total_amount` number — Total amount of earnings in the user's bank account for the specific income source for days requested by the client.
        - `iso_currency_code` string, nullable — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable — 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.
        - `transaction_count` integer — Number of transactions for the income source within the start and end date.
        - `next_payment_date` string, date, nullable — The expected date of the end user's next paycheck for the income source. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
        - `status` 'ACTIVE' | 'INACTIVE' | 'UNKNOWN' — 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.
        - `historical_average_monthly_gross_income` number, nullable — An estimate of the average gross monthly income based on the historical net amount and income category for the income source(s).
        - `historical_average_monthly_income` number, nullable — The average monthly net income amount estimated based on the historical data for the income source(s).
        - `forecasted_average_monthly_income` number, nullable — The predicted average monthly net income amount for the income source(s).
        - `forecasted_average_monthly_income_prediction_intervals` CraPredictionInterval[], required — The prediction interval(s) for the forecasted average monthly income.
          - `lower_bound` number, nullable — The lower bound of the predicted attribute for the given probability.
          - `upper_bound` number, nullable — The upper bound of the predicted attribute for the given probability.
          - `probability` number, nullable — The probability of the actual value of the attribute falling within the upper and lower bound. This is a percentage represented as a value between 0 and 1.
        - `employer` CraBankIncomeEmployer — The object containing employer data.
          - `name` string, nullable, required — The name of the employer.
        - `income_provider` CraBankIncomeIncomeProvider, nullable, required — The object containing data about the income provider.
          - `name` string, required — The name of the income provider.
          - `is_normalized` boolean, required — Indicates whether the income provider name is normalized by comparing it against a canonical set of known providers.
        - `historical_summary` CraBankIncomeHistoricalSummary[]
          - `total_amounts` CreditAmountWithCurrency[] — Total amount of earnings for the income source(s) of the user for the month in the summary. This can contain multiple amounts, with each amount denominated in one unique currency.
            - `amount` number, required — Value of amount with up to 2 decimal places.
            - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
            - `unofficial_currency_code` string, nullable, required — 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.
          - `start_date` string, date — The start date of the period covered in this monthly summary. This date will be the first day of the month, unless the month being covered is a partial month because it is the first month included in the summary and the date range being requested does not begin with the first day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
          - `end_date` string, date — The end date of the period included in this monthly summary. This date will be the last day of the month, unless the month being covered is a partial month because it is the last month included in the summary and the date range being requested does not end with the last day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
          - `transactions` CraBankIncomeTransaction[]
            - `transaction_id` string, required — The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.
            - `amount` number, required — 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.
            - `date` string, date, required — 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).
            - `name` string — The merchant name or transaction description. This is a legacy field that is no longer maintained. For merchant name, use the `merchant_name` field; for description, use the `original_description` field.
            - `original_description` string, nullable, required — The string returned by the financial institution to describe the transaction.
            - `pending` boolean, required — When true, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled.
            - `check_number` string, nullable — The check number of the transaction. This field is only populated for check transactions.
            - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
            - `unofficial_currency_code` string, nullable, required — 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.
            - `bonus_type` 'BONUS_INCLUDED' | 'BONUS_ONLY' | 'null', nullable — The type of bonus that this transaction represents, if it is a bonus. `BONUS_INCLUDED`: Bonus is included in this transaction along with the normal pay `BONUS_ONLY`: This transaction is a standalone bonus
      - `last_updated_time` string, date-time — The time when this Item's data was last retrieved from the financial institution.
      - `institution_id` string — The unique identifier of the institution associated with the Item.
      - `institution_name` string — The name of the institution associated with the Item.
    - `user_summary` CraIncomeInsightsUserSummary, nullable — Aggregated summary of all income streams for this user.
      - `income_metrics` CraIncomeMetrics[], required — List of a user's aggregated income metrics for each currency.
        - `current` CraCurrentModeledIncome, nullable, required — Modeled estimate of current income based on recently observed income transactions.
          - `monthly` CraMonthlyIncomeValues, required — Modeled estimate of the monthly income.
            - `gross_income` number, required — Gross Income modeled from trends of observed transactions.
            - `net_income` number, required — Net Income estimated from observed transactions.
          - `annual` CraAnnualIncomeValues, required — Modeled estimate of the annual income.
            - `gross_income` number, required — Gross Income modeled from trends of observed transactions.
            - `net_income` number, required — Net Income estimated from observed transactions.
        - `projected` CraProjectedModeledIncome, nullable, required — Forward-looking modeled estimate of income based on recent income transactions and trends in active streams.
          - `monthly` CraMonthlyIncomeValues, required — Modeled estimate of the monthly income.
            - `gross_income` number, required — Gross Income modeled from trends of observed transactions.
            - `net_income` number, required — Net Income estimated from observed transactions.
          - `annual` CraAnnualIncomeValues, required — Modeled estimate of the annual income.
            - `gross_income` number, required — Gross Income modeled from trends of observed transactions.
            - `net_income` number, required — Net Income estimated from observed transactions.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
    - `income_streams` CraIncomeStream[], required — The list of income streams for this user.
      - `income_stream_id` string, required — 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_id`s.
      - `start_date` string, date, required — Minimum of all dates within the specific income stream for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
      - `end_date` string, date, required — Maximum of all dates within the specific income stream for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
      - `description` string, required — The most common name or original description for the underlying income transactions.
      - `insights` CraIncomeStreamInsights, required — Modeled insights for a given income stream.
        - `income_category` CraIncomeCategory, required — 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](https://plaid.com/documents/income-v2-category-taxonomy.csv) for a full list of income categories.
          - `primary` string, required — A high level category that communicates the broad category of the stream.
          - `secondary` string, required — A granular category conveying the stream's intent.
        - `pay_frequency` 'WEEKLY' | 'BIWEEKLY' | 'SEMI_MONTHLY' | 'MONTHLY' | 'DAILY' | 'UNKNOWN', required — The income pay frequency.
        - `income_provider` CraBankIncomeIncomeProvider, nullable, required — The object containing data about the income provider.
          - `name` string, required — The name of the income provider.
          - `is_normalized` boolean, required — Indicates whether the income provider name is normalized by comparing it against a canonical set of known providers.
        - `status` 'ACTIVE' | 'INACTIVE' | 'UNKNOWN', required — 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.
        - `next_payment` CraIncomeNextPayment, nullable, required — Metadata of the income stream's next payment.
          - `date` string, date, required — The expected date of the income stream's next payment. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
      - `income_metrics` CraIncomeMetrics, required — Modeled income metrics for a given income stream or user summary.
        - `current` CraCurrentModeledIncome, nullable, required — Modeled estimate of current income based on recently observed income transactions.
          - `monthly` CraMonthlyIncomeValues, required — Modeled estimate of the monthly income.
            - `gross_income` number, required — Gross Income modeled from trends of observed transactions.
            - `net_income` number, required — Net Income estimated from observed transactions.
          - `annual` CraAnnualIncomeValues, required — Modeled estimate of the annual income.
            - `gross_income` number, required — Gross Income modeled from trends of observed transactions.
            - `net_income` number, required — Net Income estimated from observed transactions.
        - `projected` CraProjectedModeledIncome, nullable, required — Forward-looking modeled estimate of income based on recent income transactions and trends in active streams.
          - `monthly` CraMonthlyIncomeValues, required — Modeled estimate of the monthly income.
            - `gross_income` number, required — Gross Income modeled from trends of observed transactions.
            - `net_income` number, required — Net Income estimated from observed transactions.
          - `annual` CraAnnualIncomeValues, required — Modeled estimate of the annual income.
            - `gross_income` number, required — Gross Income modeled from trends of observed transactions.
            - `net_income` number, required — Net Income estimated from observed transactions.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
      - `transactions` CraIncomeTransaction[], required — The transactions data for the income stream ordered by ascending date.
        - `transaction_id` string, required — The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.
        - `item_id` string, required — The `item_id` of the Item associated with this webhook, warning, or error
        - `account_id` string, required — 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.
        - `amount` number, required — 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.
        - `date` string, date, required — 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).
        - `original_description` string, required — The string returned by the financial institution to describe the transaction.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
        - `outlier` CraIncomeTransactionOutlier, required — Metadata on whether this income transaction is an outlier.
          - `is_outlier` boolean, required — Indicates whether an income transaction amount is unusually high compared to the amounts for that stream.
          - `amount` number, nullable — The amount that the transaction differs from the stream average transaction amount.
    - `bank_income_summary` CraBankIncomeSummary — This is a V1 (II1) schema. For the V2 (II2) equivalent, use `CraIncomeInsightsUserSummary`. Summary for income across all income sources and items (max history of 730 days).
      - `total_amounts` CreditAmountWithCurrency[] — Total amount of earnings across all the income sources in the end user's Items for the days requested by the client. This can contain multiple amounts, with each amount denominated in one unique currency.
        - `amount` number, required — Value of amount with up to 2 decimal places.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
      - `start_date` string, date — The earliest date within the days requested in which all income sources identified by Plaid appear in a user's account. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
      - `end_date` string, date — The latest date in which all income sources identified by Plaid appear in the user's account. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
      - `income_sources_count` integer — Number of income sources per end user.
      - `income_categories_count` integer — Number of income categories per end user.
      - `income_transactions_count` integer — Number of income transactions per end user.
      - `historical_average_monthly_gross_income` CreditAmountWithCurrency[] — An estimate of the average gross monthly income based on the historical net amount and income category for the income source(s). The average monthly income is calculated based on the lifetime of the income stream, rather than the entire historical period included in the scope of the report.
        - `amount` number, required — Value of amount with up to 2 decimal places.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
      - `historical_average_monthly_income` CreditAmountWithCurrency[] — The average monthly income amount estimated based on the historical data for the income source(s). The average monthly income is calculated based on the lifetime of the income stream, rather than the entire historical period included in the scope of the report.
        - `amount` number, required — Value of amount with up to 2 decimal places.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
      - `forecasted_average_monthly_income` CreditAmountWithCurrency[] — The predicted average monthly income amount for the income source(s).
        - `amount` number, required — Value of amount with up to 2 decimal places.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
      - `historical_annual_gross_income` CreditAmountWithCurrency[] — An estimate of the annual gross income for the income source, calculated by multiplying the `historical_average_monthly_gross_income` by 12.
        - `amount` number, required — Value of amount with up to 2 decimal places.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
      - `historical_annual_income` CreditAmountWithCurrency[] — An estimate of the annual net income for the income source, calculated by multiplying the `historical_average_monthly_income` by 12.
        - `amount` number, required — Value of amount with up to 2 decimal places.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
      - `forecasted_annual_income` CreditAmountWithCurrency[] — The predicted average annual income amount for the income source(s).
        - `amount` number, required — Value of amount with up to 2 decimal places.
        - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
        - `unofficial_currency_code` string, nullable, required — 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.
      - `historical_summary` CraBankIncomeHistoricalSummary[]
        - `total_amounts` CreditAmountWithCurrency[] — Total amount of earnings for the income source(s) of the user for the month in the summary. This can contain multiple amounts, with each amount denominated in one unique currency.
          - `amount` number, required — Value of amount with up to 2 decimal places.
          - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
          - `unofficial_currency_code` string, nullable, required — 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.
        - `start_date` string, date — The start date of the period covered in this monthly summary. This date will be the first day of the month, unless the month being covered is a partial month because it is the first month included in the summary and the date range being requested does not begin with the first day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
        - `end_date` string, date — The end date of the period included in this monthly summary. This date will be the last day of the month, unless the month being covered is a partial month because it is the last month included in the summary and the date range being requested does not end with the last day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD).
        - `transactions` CraBankIncomeTransaction[]
          - `transaction_id` string, required — The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.
          - `amount` number, required — 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.
          - `date` string, date, required — 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).
          - `name` string — The merchant name or transaction description. This is a legacy field that is no longer maintained. For merchant name, use the `merchant_name` field; for description, use the `original_description` field.
          - `original_description` string, nullable, required — The string returned by the financial institution to describe the transaction.
          - `pending` boolean, required — When true, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled.
          - `check_number` string, nullable — The check number of the transaction. This field is only populated for check transactions.
          - `iso_currency_code` string, nullable, required — The ISO 4217 currency code of the amount or balance.
          - `unofficial_currency_code` string, nullable, required — 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.
          - `bonus_type` 'BONUS_INCLUDED' | 'BONUS_ONLY' | 'null', nullable — The type of bonus that this transaction represents, if it is a bonus. `BONUS_INCLUDED`: Bonus is included in this transaction along with the normal pay `BONUS_ONLY`: This transaction is a standalone bonus
    - `warnings` CraBankIncomeWarning[] — If data from the report was unable to be retrieved, the warnings object will contain information about the error that caused the data to be incomplete.
      - `warning_type` 'BANK_INCOME_WARNING' — The warning type which will always be `BANK_INCOME_WARNING`.
      - `warning_code` 'IDENTITY_UNAVAILABLE' | 'TRANSACTIONS_UNAVAILABLE' | 'REPORT_DELETED' | 'DATA_UNAVAILABLE' — The warning code identifies a specific kind of warning. `IDENTITY_UNAVAILABLE`: Unable to extract identity for the Item `TRANSACTIONS_UNAVAILABLE`: Unable to extract transactions for the Item `REPORT_DELETED`: Report deleted due to customer or consumer request `DATA_UNAVAILABLE`: No relevant data was found for the Item
      - `cause` CraBankIncomeCause — An 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.
        - `error_type` 'INTERNAL_SERVER_ERROR' | 'INSUFFICIENT_CREDENTIALS' | 'ITEM_LOCKED' | 'USER_SETUP_REQUIRED' | 'COUNTRY_NOT_SUPPORTED' | 'INSTITUTION_DOWN' | 'INSTITUTION_NO_LONGER_SUPPORTED' | 'INSTITUTION_NOT_RESPONDING' | 'INVALID_CREDENTIALS' | 'INVALID_MFA' | 'INVALID_SEND_METHOD' | 'ITEM_LOGIN_REQUIRED' | 'MFA_NOT_SUPPORTED' | 'NO_ACCOUNTS' | 'ITEM_NOT_SUPPORTED' | 'ACCESS_NOT_GRANTED', required — A broad categorization of the error. Safe for programmatic use.
        - `error_code` string, required — We use standard HTTP response codes for success and failure notifications, and our errors are further classified by `error_type`. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. Error fields will be `null` if no error has occurred.
        - `error_message` string, required — A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
        - `display_message` string, required — 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.
  - `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.
  - `warnings` CheckReportWarning[] — If the Income Insights generation was successful but a subset of data could not be retrieved, this array will contain information about the errors causing information to be missing
    - `warning_type` string, required — The warning type, which will always be `CHECK_REPORT_WARNING`
    - `warning_code` 'IDENTITY_UNAVAILABLE' | 'TRANSACTIONS_UNAVAILABLE' | 'USER_FRAUD_ALERT', required — 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.
    - `cause` Cause, nullable, required — An 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.
      - `error_type` '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', required — A broad categorization of the error. Safe for programmatic use.
      - `error_code` string, required — The particular error code. Safe for programmatic use.
      - `error_code_reason` string, nullable — The specific reason for the error code. Currently, reasons are only supported for OAuth-based item errors; `null` will be returned 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.
      - `error_message` string, required — A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
      - `display_message` string, nullable, required — 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.
      - `request_id` string — A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks.
      - `causes` unknown[] — 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`. `causes` will also not be populated inside an error nested within a `warning` object.
        - unknown
      - `status` integer, nullable — 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.
      - `documentation_url` string — The URL of a Plaid documentation page with more information about the error
      - `suggested_action` string, nullable — Suggested steps for resolving the error
      - `required_account_subtypes` string[] — 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.
      - `provided_account_subtypes` string[] — 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.
      - `item_id` string, required — The `item_id` of the Item associated with this webhook, warning, or error

## Other responses

- `default` — Error response

---

[API](https://skmtc.net/plaid/apis/the-plaid-api.md) · [All operations](https://skmtc.net/plaid/apis/the-plaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plaid/the-plaid-api/versions/64c4514ea59b/schema)
