# Reporting

Column provides the following reports: `bank_account_transaction` and `bank_account_summary`. All reports are available in CSV, JSON, and Parquet formats.

### Bank Account Transaction Report

`bank_account_transaction` reports contain all transactions (e.g., book/ACH/wire transfers, loan payments/disbursements, etc.) that affected balances of bank accounts in given reporting periods, including `available_balance`, `pending_balance`, `locked_balance` and `holding_balance`. Each row is a transaction with its details.

| Column              | Description                                                                               | Type   |
| ------------------- | ----------------------------------------------------------------------------------------- | ------ |
| `effective_at`      | Effective time of transaction in the reporting time zone (format: `2006-01-02T15:04:05Z`) | string |
| `effective_at_utc`  | Effective time of transaction in UTC (format: `2006-01-02T15:04:05Z`)                     | string |
| `bank_account_id`   | ID of the bank account involved                                                           | string |
| `bank_account_type` | Type of the bank account involved                                                         | string |
| `account_number_id` | ID of the account number involved                                                         | string |
| `entity_id`         | Primary account owner ID                                                                  | string |
| `entity_name`       | Primary account owner name                                                                | string |
| `entity_type`       | Primary account owner type                                                                | string |
| `transaction_id`    | ID of the transaction                                                                     | string |
| `transaction_type`  | Webhook event type for this transaction                                                   | string |
| `currency`          | Transaction currency                                                                      | string |
| `available_amount`  | Changes of `available_balance` in cents (negative for debit)                              | int64  |
| `available_balance` | `available_balance` in cents after this transaction                                       | int64  |
| `pending_amount`    | Changes of `pending_balance` in cents (negative for debit)                                | int64  |
| `pending_balance`   | `pending_balance` in cents after this transaction                                         | int64  |
| `locked_amount`     | Changes of `locked_balance` in cents (negative for debit)                                 | int64  |
| `locked_balance`    | `locked_balance` in cents after this transaction                                          | int64  |
| `holding_amount`    | Changes of `holding_balance` in cents (negative for debit)                                | int64  |
| `holding_balance`   | `holding_balance` in cents after this transaction                                         | int64  |

### Bank Account Summary Report

`bank_account_summary` reports contain snapshots of all bank accounts (including bank accounts without any transaction) under your platform by the end of the reporting periods. Each row is a bank account summary. If a bank account has multiple account numbers, they will be aggregated and only one row will be shown in summary reports.

| Column                     | Description                                                                     | Type   |
| -------------------------- | ------------------------------------------------------------------------------- | ------ |
| `bank_account_id`          | ID of the bank account                                                          | string |
| `bank_account_type`        | Type of the bank account                                                        | string |
| `bank_account_status`      | Status of the account number                                                    | string |
| `entity_id`                | Primary account owner ID                                                        | string |
| `entity_name`              | Primary account owner name                                                      | string |
| `entity_type`              | Primary account owner type                                                      | string |
| `transaction_count`        | Number of all transactions in the reporting period                              | int32  |
| `currency`                 | Transaction currency                                                            | string |
| `available_balance_open`   | Open `available_balance` in cents at the beginning of the reporting period      | int64  |
| `available_balance_credit` | Total credit amount in cents to `available_balance` during the reporting period | int64  |
| `available_balance_debit`  | Total debit amount in cents to `available_balance` during the reporting period  | int64  |
| `available_balance_close`  | Close `available_balance` in cents at the end of the reporting period           | int64  |
| `pending_balance_open`     | Open `pending_balance` in cents at the beginning of the reporting period        | int64  |
| `pending_balance_credit`   | Total credit amount in cents to `pending_balance` during the reporting period   | int64  |
| `pending_balance_debit`    | Total debit amount in cents to `pending_balance` during the reporting period    | int64  |
| `pending_balance_close`    | Close `pending_balance` in cents at the end of the reporting period             | int64  |
| `locked_balance_open`      | Open `locked_balance` in cents at the beginning of the reporting period         | int64  |
| `locked_balance_credit`    | Total credit amount in cents to `locked_balance` during the reporting period    | int64  |
| `locked_balance_debit`     | Total debit amount in cents to `locked_balance` during the reporting period     | int64  |
| `locked_balance_close`     | Close `locked_balance` in cents at the end of the reporting period              | int64  |
| `holding_balance_open`     | Open `holding_balance` in cents at the beginning of the reporting period        | int64  |
| `holding_balance_credit`   | Total credit amount in cents to `holding_balance` during the reporting period   | int64  |
| `holding_balance_debit`    | Total debit amount in cents to `holding_balance` during the reporting period    | int64  |
| `holding_balance_close`    | Close `holding_balance` in cents at the end of the reporting period             | int64  |

> **Note: Bank Account Summary History**
>
> Daily summary history of bank accounts is also available via the [Bank Account Summary History API](/api/bank-account/get-bank-account-summary-history).

### Prerequisite

To generate daily or on-demand `bank_account_transaction` or `bank_account_summary` settlement reports, you must configure the reporting time zone of your platform in Platform Settings on Dashboard. Column will use your reporting time zone to decide the day boundaries of your settlement reports.

For example, if your reporting time zone is `UTC`, daily settlement reports for `2022-04-12` will include all transactions between `2022-04-12 00:00:00` (inclusive) and `2022-04-13 00:00:00` (exclusive). However, if your reporting time zone is `America/Los_Angeles`, it will include all transactions between `2022-04-12 07:00:00` (inclusive) and `2022-04-13 07:00:00` (exclusive).

If you update the reporting time zone of your platform to a different value, it will be applied to new daily or on-demand settlement reports. History settlement reports will not be re-generated. You can use the Schedule Settlement Report API to re-generate history settlement reports using the new reporting time zone.

### Daily Settlement Reports

If you have configured the reporting time zone of your platform, Column will automatically generate daily `bank_account_transaction` and `bank_account_summary` reports after the midnight of your reporting time zone every day.

### On-demand Settlement Reports

You can use the Schedule Settlement Report API to submit requests to generate `bank_account_transaction` or `bank_account_summary` settlement reports of your preferred date ranges. Column will process your requests and generate reports once all data required by your reports are ready. For example, if you schedule a report from `2022-04-01` to `2022-04-30`, it will not be generated until the beginning of `2022-05-01`.

The earliest available date for settlement reports is `2022-01-01`, and the maximum date range for on-demand settlement reports is `93` days. If a report with the same type, time zone, and date range has already been scheduled before, we will return the existing report instead of scheduling it again.

When you schedule an on-demand report for a date range, daily reports in the given date range will be automatically scheduled if they are missing.

### Download Settlement Reports

You can use the Document API to get the download URL of a settlement report using the document ID of a report format.

### Webhook Events

You will receive webhook events when settlement reports are scheduled, completed successfully, or failed to generate.

| Webhook Event                                  | Description                                                |
| ---------------------------------------------- | ---------------------------------------------------------- |
| `reporting.bank_account_summary.scheduled`     | Successfully scheduled a `bank_account_summary` report     |
| `reporting.bank_account_summary.completed`     | Successfully generated a `bank_account_summary` report     |
| `reporting.bank_account_summary.failed`        | Failed to generate a `bank_account_summary` report         |
| `reporting.bank_account_transaction.scheduled` | Successfully scheduled a `bank_account_transaction` report |
| `reporting.bank_account_transaction.completed` | Successfully generated a `bank_account_transaction` report |
| `reporting.bank_account_transaction.failed`    | Failed to generate a `bank_account_transaction` report     |
