---
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`

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.net/ocrolus/apis/user-management.md) · [All operations](https://skmtc.net/ocrolus/apis/user-management/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ocrolus/user-management/revisions/3571ef602d13/schema)
