---
title: "Bank statement income calculator"
method: GET
path: "/v2/book/{book_uuid}/income/bank-statement-v2"
tags: ["Cash Flow Analytics"]
---

# Bank statement income calculator

`GET /v2/book/{book_uuid}/income/bank-statement-v2`

## Request

- Base URL: `https://api.ocrolus.com`
- URL: `https://api.ocrolus.com/v2/book/{book_uuid}/income/bank-statement-v2`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://auth.ocrolus.com/oauth/token`

This API retrieves the bank statement income calculator output in JSON format.  You can also access this through the Dashboard. To learn more, see [Bank Statement Income Calculator](https://docs.ocrolus.com/docs/bank-statement-income-calculator).

## Path parameters

- `book_uuid` string, uuid, required

## Response `200`

Success

- object
  - `book_uuid` string, uuid: Unique identifier for the book.
  - `calculated_at` string, date-time: Timestamp indicating when the income calculation was performed.
  - `bank_statement_income` object[]: List of income calculation results, one entry per account.
    - `account` object: Details of the bank account associated with the income calculation.
      - `pk` integer: Primary key of the account.
      - `account_number` string: The account number.
      - `holder_name` string: Name of the account holder.
    - `deposits` object[]: List of deposit transactions identified in the bank statement.
      - `pk` integer: Primary key of the deposit transaction.
      - `date` string, date: Date of the deposit.
      - `description` string: Description or memo of the deposit transaction.
      - `amount` number: Deposit amount.
      - `page_doc_pk` integer: Primary key of the page document the transaction was extracted from.
      - `period_pk` integer: Primary key of the period this transaction belongs to.
      - `period_uuid` string, uuid: UUID of the period this transaction belongs to.
      - `exclude` boolean: Indicates whether this deposit is excluded from the income calculation.
      - `is_large` boolean: Indicates whether this deposit is flagged as a large deposit.
      - `is_payroll` boolean: Indicates whether this deposit is identified as payroll income.
      - `is_internal_transfer` boolean: Indicates whether this deposit is an internal transfer between accounts.
      - `is_recurring` boolean: Indicates whether this deposit is a recurring transaction.
    - `expenses` object[]: List of expense transactions identified in the bank statement.
    - `nsf_transactions` object[]: List of non-sufficient funds (NSF) transactions.
    - `calculations` object: Aggregated income calculation results for the account.
      - `nsf_count` integer: Total number of NSF transactions.
      - `statement_summary` object[]: Month-by-month summary of statement activity.
        - `begin_date` string, date: Start date of the statement period.
        - `end_date` string, date: End date of the statement period.
        - `total_deposits` number: Total qualifying deposits for this period.
        - `total_nsf_count` integer: Number of NSF transactions in this period.
        - `beginning_balance` number: Account balance at the start of the period.
        - `ending_balance` number: Account balance at the end of the period.
        - `statement_status` boolean: Indicates whether the statement period is valid and complete.
        - `period_pk` integer, nullable: Primary key of the period, if applicable.
      - `large_deposit_summary` object: Summary of large deposit detection and thresholds.
        - `average_deposit` number: Average deposit amount across all transactions.
        - `percentage_amount` number: Percentage threshold used to determine large deposits.
        - `deposit_threshold` number: Calculated dollar threshold above which a deposit is flagged as large.
        - `threshold_base` string: The basis used to calculate the large deposit threshold.
        - `large_deposit_count` integer: Number of deposits flagged as large.
        - `large_deposit_amount` number: Total dollar amount of all large deposits.
        - `large_deposit_txn_pks` integer[]: List of primary keys for transactions flagged as large deposits.
      - `total_deposit_summary` object: Breakdown of total, included, and excluded deposit amounts.
        - `deposits` number: Total deposit amount across all transactions.
        - `included_deposits` number: Total deposit amount included in the income calculation.
        - `excluded_deposits` number: Total deposit amount excluded from the income calculation.
      - `total_included_months` integer: Number of months included in the income calculation.
      - `qualifying_income_average` number: Average monthly qualifying income based on included deposits.
    - `recurring_counterparty_depositors` object[]: List of recurring counterparties identified as depositors.
    - `recurring_counterparty_expensers` object[]: List of recurring counterparties identified as expensers.
    - `recurring_transactions` object[]: List of transactions identified as recurring.
      - `pk` integer: Primary key of the recurring transaction.
      - `date` string, date: Date of the recurring transaction.
      - `description` string: Description or memo of the recurring transaction.
      - `amount` number: Amount of the recurring transaction.
    - `total_withdrawls` number: Total withdrawal amount across all transactions.
    - `total_expense_summary` object: Breakdown of total, included, and excluded expense amounts.
      - `expenses` number: Total expense amount across all transactions.
      - `included_expenses` number: Total expense amount included in the income calculation.
      - `excluded_expenses` number: Total expense amount excluded from the income calculation.
    - `overdraft_transactions` object[]: List of overdraft transactions identified in the bank statement.
    - `monthly_statement_summary` object, nullable: Monthly aggregated statement summary, if available.
    - `negative_balance_day_summary` object: Summary of days the account carried a negative balance.
      - `total_negative_balance_days` integer: Total number of days the account balance was negative.
      - `monthly_breakdown` object[]: Month-by-month breakdown of negative balance days.

## Other responses

- `400`: Txn Limit Exceeded
- `403`: Permission Error
- `404`: Book Not Found Error
- `425`: Analytics Still Processing
- `500`: Internal server error

---

[API](https://skmtc.dev/ocrolus/apis/analyze.md) - [All operations](https://skmtc.dev/ocrolus/apis/analyze/llms.txt) - [OpenAPI document](https://skmtc.dev/ocrolus/apis/analyze/revisions/4ef40f224ab5?raw)
