> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Generating reports

> Generate reconciliation summaries, match details, exception views, and variance reports to monitor outcomes and support compliance.

Reports turn a reconciliation run into something you can act on: how much matched, what's still open, and how much money is exposed. Operations teams use them to work the day's queue; finance and compliance use them to close the books and document outcomes.

## Available reports

***

Each report answers a different question:

* **Reconciliation summary**: A high-level snapshot of match rates, exception volume, and total variances.
* **Match detail report**: A complete list of matches, including transaction details, confidence scores, and variance breakdowns.
* **Unmatched report**: A list of transactions that remain unmatched for follow-up.
* **Exception report**: A focused view of unresolved exceptions with aging, severity, and resolution status.
* **Variance report**: A breakdown of fee differences between matched transactions. Each row preserves the raw net variance, shows recorded adjustments applied to that row, and reports the resulting outstanding variance. An adjustment that cannot be attributed to exactly one source, fee-schedule, and currency row remains reported as unattributed instead of being split.

Use the reporting dashboard endpoints to access reconciliation metrics and export data.

<Tip>
  API Reference:

  * [Dashboard aggregates](/en/reference/matcher/get-dashboard-aggregates)
  * [Export matched report](/en/reference/matcher/export-matched-report)
  * [Export unmatched report](/en/reference/matcher/export-unmatched-report)
</Tip>

## Dashboard analytics

***

The reporting dashboard provides real-time reconciliation metrics for a context and date range. Reporting endpoints default to the 30-day window ending tomorrow (UTC) and normally limit the window to 90 days. Only the unmatched list and count endpoints accept `unbounded=true` to query without date bounds.

### Dashboard aggregates

Use the combined dashboard aggregates endpoint for a single call that returns volume, match-rate, and SLA statistics for a context:

```bash cURL theme={null}
curl -X GET "https://api.matcher.example.com/v1/reports/contexts/{contextId}/dashboard?date_from=2025-01-01&date_to=2025-01-31" \
 -H "Authorization: Bearer $TOKEN"
```

`GET /v1/reports/contexts/{contextId}/dashboard` accepts `date_from`, `date_to`, and an optional `source_id` filter, and returns a `DashboardAggregatesResponse`:

| Field       | Description                                       |
| ----------- | ------------------------------------------------- |
| `volume`    | Transaction volume statistics for the range       |
| `matchRate` | Match-rate statistics (matched vs. total)         |
| `sla`       | SLA statistics for exception handling             |
| `updatedAt` | When the aggregates were last computed (RFC 3339) |

More granular dashboard slices are available under `/v1/reports/contexts/{contextId}/dashboard/*` (for example `metrics`, `match-rate`, `sla`, `volume`, `source-breakdown`, and `cash-impact`).

<Note>
  There is no bare `GET /v1/reports/contexts/{contextId}` endpoint. Report data is served through the typed sub-paths under `/v1/reports/contexts/{contextId}/...` — for example `dashboard`, `summary`, `matched`, `unmatched`, and `variance` (each with an `/export` variant).
</Note>

<Tip>
  API Reference: [Get dashboard aggregates](/en/reference/matcher/get-dashboard-aggregates)
</Tip>

### Source breakdown

View reconciliation performance by source — including match rates, transaction counts, and unmatched amounts:

```bash cURL theme={null}
curl -X GET "https://api.matcher.example.com/v1/reports/contexts/{contextId}/dashboard/source-breakdown?date_from=2025-01-01&date_to=2025-01-31" \
 -H "Authorization: Bearer $TOKEN"
```

<Tip>
  API Reference: [Get source breakdown](/en/reference/matcher/get-source-breakdown)
</Tip>

### Cash impact

Assess the total financial exposure from unmatched transactions, broken down by currency and age:

```bash cURL theme={null}
curl -X GET "https://api.matcher.example.com/v1/reports/contexts/{contextId}/dashboard/cash-impact?date_from=2025-01-01&date_to=2025-01-31" \
 -H "Authorization: Bearer $TOKEN"
```

The response includes `byCurrency` and `byAge` breakdowns to help prioritize resolution efforts.

<Tip>
  API Reference: [Get cash impact](/en/reference/matcher/get-cash-impact)
</Tip>

## Pagination

***

The matched, unmatched, and variance report endpoints use cursor-based pagination. Pass the `cursor` value from a previous response to retrieve the next page of results.

If an invalid cursor value is provided, the API returns a `400 Bad Request` error with a message indicating the pagination parameters are invalid. Previous versions returned a `500` error in this case.

## Quick counts

***

Use count endpoints for lightweight status checks without fetching full result sets:

| Endpoint                                                       | Description                           |
| -------------------------------------------------------------- | ------------------------------------- |
| [Count matches](/en/reference/matcher/count-matches)           | Total matched items in a date range   |
| [Count transactions](/en/reference/matcher/count-transactions) | Total transactions in a date range    |
| [Count exceptions](/en/reference/matcher/count-exceptions)     | Total exceptions in a date range      |
| [Count unmatched](/en/reference/matcher/count-unmatched)       | Total unmatched items in a date range |

```bash cURL theme={null}
curl -X GET "https://api.matcher.example.com/v1/reports/contexts/{contextId}/matches/count?date_from=2025-01-01&date_to=2025-01-31" \
 -H "Authorization: Bearer $TOKEN"
```

Each count endpoint returns a single `count` value — ideal for lightweight dashboards or health checks that don't need the full result set.

## Best practices

***

<AccordionGroup>
  <Accordion title="Schedule daily summaries">
    Automate a daily summary report delivered each morning to keep stakeholders aligned.
  </Accordion>

  <Accordion title="Archive exports for compliance">
    Store reports in secure, durable storage. Financial artifacts often require multi-year retention.
  </Accordion>

  <Accordion title="Use filters to stay actionable">
    Generate targeted reports by date and source—avoid exporting everything by default.
  </Accordion>

  <Accordion title="Make exports self-explanatory">
    Include source names, rule names, and key identifiers so the output can stand alone outside Matcher.
  </Accordion>

  <Accordion title="Monitor report jobs">
    Large reports can fail or stall. Export jobs use `QUEUED`, `RUNNING`, `SUCCEEDED`, `FAILED`, `EXPIRED`, and `CANCELED`; alert on `FAILED` or prolonged `RUNNING`.
  </Accordion>
</AccordionGroup>

## Next steps

***

<Card title="Contexts and Sources" icon="database" href="/en/matcher/configuration/matcher-contexts-and-sources" horizontal>
  Set up reconciliation contexts and data sources.
</Card>

<Card title="Security" icon="shield-halved" href="/en/matcher/reference/matcher-security" horizontal>
  Learn how access control and data protection work in Matcher.
</Card>
