---
title: "Get categorized bank statement transactions"
method: GET
path: "/companies/{companyId}/reports/categorizedBankStatement/{reportId}/transactions"
tags: ["Bank statements"]
---

# Get categorized bank statement transactions

`GET /companies/{companyId}/reports/categorizedBankStatement/{reportId}/transactions`

## Request

- Base URL: `https://api.codat.io`
- URL: `https://api.codat.io/companies/{companyId}/reports/categorizedBankStatement/{reportId}/transactions`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/codatio/apis/lending/docs/companies/:companyId/reports/categorizedBankStatement/:reportId/transactions/get.ts> (a function with typed inputs; its response is checked against the schema)

The *Get categorized bank statement transactions* endpoint returns fully categorized bank transactions for a company. Transaction data is obtained from the company's connected bank accounts.

Before using it, you must call the [Generate report](https://docs.codat.io/lending-api#/operations/generate-report) endpoint of type `categorizedBankStatement`.

## Response `200`

OK

- CategorizedBankStatementTransactions: > **Categorization engine** > > The categorization engine uses machine learning and has been fully trained against Plaid and TrueLayer banking data sources. It is not fully trained against the Basiq banking data source. The Enhanced Cash Flow Transactions endpoint provides a fully categorized list of banking transactions for a company. Accounts and transaction data are obtained from the company's banking data sources.
  - `results` object[]
    - `id` string: The unique identifier of the bank transaction.
    - `date` string: In Codat's data model, dates and times are represented using the <a class="external" href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601 standard</a>. Date and time fields are formatted as strings; for example: ``` 2020-10-08T22:40:50Z 2021-01-01T00:00:00 ``` When syncing data that contains `DateTime` fields from Codat, make sure you support the following cases when reading time information: - Coordinated Universal Time (UTC): `2021-11-15T06:00:00Z` - Unqualified local time: `2021-11-15T01:00:00` - UTC time offsets: `2021-11-15T01:00:00-05:00` > Time zones > > Not all dates from Codat will contain information about time zones. > Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced.
    - `description` string: The description of the bank transaction.
    - `amount` number: The bank transaction amount.
    - `currency` Currency (unresolved $ref)
    - `transactionCategory` TransactionCategory (unresolved $ref)
    - `platformName` string: Returns the payment processor responsible for the transaction.
    - `counterpartyNames` string[]: An array of counterparty names involved in the transaction.
    - `sourceRef` SourceRef (unresolved $ref)
    - `accountRef` AccountRef (unresolved $ref)
    - `modifiedDate` string: In Codat's data model, dates and times are represented using the <a class="external" href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601 standard</a>. Date and time fields are formatted as strings; for example: ``` 2020-10-08T22:40:50Z 2021-01-01T00:00:00 ``` When syncing data that contains `DateTime` fields from Codat, make sure you support the following cases when reading time information: - Coordinated Universal Time (UTC): `2021-11-15T06:00:00Z` - Unqualified local time: `2021-11-15T01:00:00` - UTC time offsets: `2021-11-15T01:00:00-05:00` > Time zones > > Not all dates from Codat will contain information about time zones. > Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced.
    - `isRecurring` boolean, nullable: Indicates if the transaction is classified as recurring by Codat's categorization engine.
  - `pageNumber` integer, required: Current page number.
  - `pageSize` integer, required: Number of items to return in results array.
  - `totalResults` integer, required: Total number of items.
  - `_links` Links, required (unresolved $ref)

## Other responses

- `400`: The request made is not valid.
- `401`: Your API request was not properly authorized.
- `402`: An account limit has been exceeded. The type of limit is described in the error property: - You have exceeded the 50-company limit that applies to a Free plan. Delete any companies you no longer need and retry the request. - The requested sync schedule is not allowed. You requested an hourly sync schedule but this functionality is not included in the Free plan. - Your Free account is older than 365 days and has expired. Contact support@codat.io.
- `403`: You are using an outdated API key or a key not associated with that resource.
- `404`: One or more of the resources you referenced could not be found. This might be because your company or data connection id is wrong, or was already deleted.
- `429`: Too many requests were made in a given amount of time. Wait a short period and then try again.
- `500`: There is a problem with our server. Please try again later.
- `503`: The Codat API is temporarily offline for maintenance. Please try again later.

## Changes

- **2026-02-04** `4fffb93dd152`: 1 info
  - added the optional property `allOf[subschema #1]/results/items/isRecurring` to the response with the `200` status
- **2024-10-18** `d77786aca64c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/codatio/apis/lending/changes/companies/:companyId/reports/categorizedBankStatement/:reportId/transactions/get.md)

---

[API](https://skmtc.dev/codatio/apis/lending.md) - [All operations](https://skmtc.dev/codatio/apis/lending/llms.txt) - [OpenAPI document](https://skmtc.dev/codatio/apis/lending/revisions/d6c286a8b8d5?raw)
