---
title: "Retrieve the most recent bank income report"
method: GET
path: "/v1/links/{link_id}/income/transactions/reports/"
tags: ["Income Report"]
---

# Retrieve the most recent bank income report

`GET /v1/links/{link_id}/income/transactions/reports/`

## Request

- Base URL: `https://prod.truv.com`
- URL: `https://prod.truv.com/v1/links/{link_id}/income/transactions/reports/`
- Auth: API key in header `X-Access-Client-Id` and API key in header `X-Access-Secret`

Retrieves the most recent bank income report for the specified link. This endpoint returns the latest generated report containing transaction-based income analysis and verification data.

## Query parameters

- `show_fraud_reasons` boolean

## Response `200`

- BankIncomeReport
  - `status` string, required: Status of the report. Common values: `success`, `processing`, `no transactions found`, `not found`, `failed`. Additional upstream statuses may be passed through.
  - `completed_at` string, date-time, nullable, required: Timestamp when the report was completed.
  - `days_requested` integer, required: The specific duration in days for which the report is requested to be generated.
  - `tracking_info` string, nullable: Additional optional identifier passed by user.
  - `provider` string, required: Data provider ID.
  - `access_token` string, uuid: Access token of the existing link.
  - `companies` string[]: Names of the companies person works for.
  - `accounts` BankIncomeAccount[], required: List of bank accounts
    - `id` string, required: Unique identifier of the account.
    - `created_at` string, date-time, required: Date and time when the account was created in Truv
    - `updated_at` string, date-time, required: Date and time when the account was updated last time in Truv
    - `type` string: The parent type of the account, e.g., CHECKING or SAVINGS.
    - `subtype` string, nullable: The account's subtype, e.g., PLAN_401_K, MONEY_MARKET, or HOME_EQUITY.
    - `mask` string, nullable: The masked banking account number associated with a particular account.
    - `nickname` string, nullable: An alternate name for the account.
    - `days_available` integer: Days of transaction history available at report generation time, from earliest transaction to report date (inclusive).
    - `owners` AssetsOwner[]: List of owners for account.
      - `id` string, string, required: Unique identifier of the owner.
      - `full_name` string: The account owner's name.
      - `email` string, email, nullable: The account owner's email address.
      - `phone` string, nullable: The account owner's phone number.
      - `address` object: The account owner's address.
        - `street` string, nullable: Street address as provided by the financial institution. May contain multiple lines separated by `\n`.
        - `city` string, nullable: City as provided by the financial institution.
        - `state` string, nullable: State or region. For US addresses this is typically a 2-letter state code; returned as provided by the financial institution.
        - `zip` string, nullable: Postal code as provided by the financial institution. Typically a 5-digit US ZIP code; ZIP+4, 9 digits without a separator, and non-US postal codes also occur.
        - `country` string, nullable: 2-letter ISO 3166-1 alpha-2 country code. Defaults to `US` when the source does not specify a country.
      - `relation_type` 'PRIMARY' | 'BUSINESS' | 'JOINT' | 'SECONDARY' | 'AUTHORIZED_USER' | 'FOR_BENEFIT_OF' | 'ACCOUNT_BENEFICIARY' | 'CUSTODIAN' | 'OTHER' | 'null', nullable: The relationship this person has to the account.
  - `income` BankIncomeSource[], required: List of bank income sources
    - `start_date` string, date, required: Minimum of all dates within the specific income sources in the user's bank account for days requested by the client.
    - `end_date` string, date, required: Maximum of all dates within the specific income sources in the user's bank account for days requested by the client.
    - `account_id` string, required: Unique identifier of the account.
    - `income_description` string: Description for the underlying income transactions.
    - `income_category` 'PAYCHECK' | 'RETIREMENT' | 'RENTAL' | 'UNEMPLOYMENT' | 'GOVERNMENT_EMPLOYMENT' | 'GOVERNMENT_BENEFITS' | 'PRIVATE_BENEFITS' | 'EWA_PAYROLL' | 'GIG_ECONOMY' | 'P2P_TRANSFER' | 'TAX_CREDITS' | 'CASH_OR_CHECK' | 'INTEREST' | 'INVESTMENT' | 'OTHER' | 'null', nullable: The income category.
    - `pay_frequency` 'M' | 'SM' | 'W' | 'BW' | 'A' | 'SA' | 'C' | 'null', nullable: Pay frequency: * `M` - Monthly, * `SM` - Semi-Monthly, * `W` - Weekly, * `BW` - Bi-Weekly, * `A` - Annually, * `SA` - Semiannually, * `C` - Commission
    - `next_payment_date` string, date, nullable: The next payment date for the income source.
    - `total_amount` string, decimal, required: Total amount of earnings for the income source of the user in the summary.
    - `iso_currency_code` string: The ISO 4217 currency code of the amount or balance.
    - `transaction_count` integer, required: Number of income transactions per end user for this source.
    - `historical_summary` object[], required: List of bank statements for each period.
      - `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.
      - `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.
      - `total_amount` string, decimal: Total amount of earnings for the income source of the user for the month in the summary.
      - `iso_currency_code` string, nullable: The ISO 4217 currency code of the amount or balance.
      - `transactions` object[]: List of transactions
        - `amount` string, decimal: The settled value of the transaction, denominated in the transactions's currency as stated in iso_currency_code. Negative values when money moves out of the account; positive othervise.
        - `iso_currency_code` string, nullable: The ISO 4217 currency code of the amount or balance.
        - `date` string, date: The date that the transaction occurred.
        - `check_number` string, nullable: The check number for the transaction.
        - `description` string: A human-readable transaction description.
        - `pending` boolean: True if status of the transaction is PENDING or not set.
        - `transaction_id` string: Unique identifier of the transaction.
    - `historical_average_monthly_income` string, decimal, nullable: Historical average income deposited into the account, per calendar month, typically net of taxes and deductions.
    - `historical_average_monthly_gross_income` string, decimal, nullable: Historical average gross payment amount, per calendar month, predicted based on the transaction data.
    - `forecasted_average_monthly_income` string, decimal, nullable: Forecasted income deposited into the account, per calendar month.
    - `avg_deposit_amount` string, decimal, required: The average amount received per deposit, typically net of taxes and deductions.
    - `avg_gross_deposit_amount` string, decimal: The average gross payment per deposit. Gross pay is predicted based on the transaction data.
  - `summary` BankIncomeSummary, required
    - `start_date` string, date, nullable, required: Minimum of all transaction dates among all income sources in the user's bank accounts for days requested by the client.
    - `end_date` string, date, nullable, required: Maximum of all transaction dates among all income sources in the user's bank accounts for days requested by the client.
    - `income_sources_count` integer, nullable, required: Number of income sources per end user.
    - `income_categories_count` integer, nullable, required: Number of income categories per end user.
    - `income_transactions_count` integer, nullable, required: Number of income transactions per end user.
    - `total_amount` string, decimal, nullable, required: Total amount of earnings for the income of the user in summary.
    - `iso_currency_code` string, nullable: The ISO 4217 currency code of the amount or balance.
    - `historical_average_monthly_gross_income` string, decimal, nullable, required: Total monthly average gross income earned historically, over all sources. Gross amounts are estimated from transactions.
    - `historical_average_monthly_income` string, decimal, nullable, required: Total monthly average income earned historically, over all sources.
    - `forecasted_average_monthly_income` string, decimal, nullable, required: Total forecasted monthly average income, over all sources.
    - `historical_annual_gross_income` string, decimal, nullable, required: Annualized gross income earned historically, over all sources.
    - `historical_annual_income` string, decimal, nullable, required: Annualized income earned historically, over all sources.
    - `forecasted_annual_income` string, decimal, nullable, required: Annualized forecasted income, over all sources.
  - `is_suspicious` boolean: Flag to indicate if the data from the source is suspicious. E.g. fraud detected in uploaded documents or SSN of the user does not match with the data
  - `fraud_reasons` FraudReason[]: Findings recorded for this link and its tasks. Included only when `show_fraud_reasons=true`. An empty array means no findings are available for this response.
    - `code` 'editing_software_detected' | 'screenshot' | 'design_software_detected' | 'document_from_online_generator' | 'office_software_detected' | 'scanned_document' | 'suspicious_producer' | 'blocked_text_content' | 'document_type_mismatch' | 'ai_generated_content' | 'invalid_content_credentials' | 'malware_detected' | 'modified_before_creation_date' | 'future_date' | 'modified_after_creation' | 'anomalous_pdf_structure' | 'invalid_date' | 'has_only_images' | 'insufficient_text' | 'content_tampering_suspected' | 'content_diff_between_versions' | 'ssn_mismatch_between_documents' | 'ssn_mismatch_with_applicant' | 'inconsistent_payroll_taxes', required: Machine-readable identifier for the type of finding.
    - `message` string, required: Human-readable explanation of the finding.
    - `severity` 'high' | 'medium' | 'low', required: Severity assigned to the finding. This value is not a confidence score. Use the task status to determine the current processing outcome. `high` - finding classified as fraud, `medium` - finding classified as suspicious, `low` - document-quality or validation finding, not a fraud finding.
    - `document_ids` string[], required: IDs of the documents associated with the finding. Empty when the finding does not refer to a specific document. These are Documents API IDs, which differ from Collections API `document_id` values.
    - `uploaded_file_ids` string[], required: IDs of the original files uploaded through a document collection. Empty when no associated collection upload is available. One uploaded file may contain multiple recognized documents.
    - `details` object, required: Additional information about the finding. Available fields depend on the reason code.
    - `task_id` string, nullable, required: ID of the task associated with the finding. `null` if the finding was recorded directly on the link without an associated task.
    - `created_at` string, date-time, required: Date and time the finding was recorded, in ISO 8601 format.
  - `pdf_report` string, uri, nullable: URL of the PDF report file

## Other responses

- `401`: HTTP 401 Unauthorized
- `403`: HTTP 403 Forbidden
- `404`: HTTP 404 Not Found

## Changes

- **2026-10-30** `64de38c55f45`: 2 info
  - added the new optional `query` request parameter `show_fraud_reasons`
  - added the optional property `fraud_reasons` to the response with the `200` status
- **2026-07-27** `f7c013875516`: 15 info
  - the `income/items/avg_deposit_amount` response's property pattern `^-?\d{1,10}\.\d{2}$` was added for the status `200`
  - the `income/items/avg_gross_deposit_amount` response's property pattern `^-?\d{1,10}\.\d{2}$` was added for the status `200`
  - the `income/items/forecasted_average_monthly_income` response's property pattern `^-?\d{1,10}\.\d{2}$` was added for the status `200`
  - the `income/items/historical_average_monthly_gross_income` response's property pattern `^-?\d{1,10}\.\d{2}$` was added for the status `200`
  - …11 more
- **2026-07-26** `e58688835e25`: 20 breaking, 2 warning, 3 info
  - the response property `accounts/items/mask` became nullable for the status `200`
  - the response property `income/items/forecasted_average_monthly_income` became nullable for the status `200`
  - the response property `income/items/historical_average_monthly_gross_income` became nullable for the status `200`
  - the response property `income/items/historical_average_monthly_income` became nullable for the status `200`
  - …21 more

[Operation history](https://skmtc.dev/truv/apis/truv-api/changes/v1/links/:link_id/income/transactions/reports/get.md)

---

[API](https://skmtc.dev/truv/apis/truv-api.md) - [All operations](https://skmtc.dev/truv/apis/truv-api/llms.txt) - [OpenAPI document](https://skmtc.dev/truv/apis/truv-api/revisions/e20fd88e9371?raw)
