Collection History & Fund Flow Reporting
Collection History & Fund Flow Reporting
The Reports section provides a unified analytics dashboard covering collection performance, clawback history, fund movement, and reserve utilisation. It is available at /dashboard/reports/collections.
Navigating to Reports
Click Reports in the sidebar. The link navigates to /dashboard/reports/collections.
Dashboard tabs
Summary
The Summary tab gives an at-a-glance view of collection performance for the selected period.
Stat cards
| Card | Description |
|---|---|
| Total Collected | Sum of all successfully collected amounts |
| Success Rate | Percentage of attempted collections that succeeded |
| Failed Collections | Count of collections that failed |
| Clawbacks | Count of collections reversed by the tenant's bank |
| Average Collection | Mean amount per successful collection |
| Total Attempted | Sum of all attempted collection amounts |
| Failed Amount | Total value of failed collections |
Daily bar chart
A CSS-rendered bar chart shows up to 30 days of collection activity. Each bar is segmented by outcome:
- 🟢 Green — Collected
- 🔴 Red — Failed
- 🟡 Amber — Clawback
Hover over a bar to see the exact counts and collected amount for that day.
Clawbacks
A paginated table listing all clawback events within the selected date range. Each row includes:
- Collection ID and mandate reference
- Tenant name and email
- Property and tenancy reference
- Collection date and clawback timestamp
- Clawback reason
- Amount
- Modulr Collection ID and BACS reference
A totals banner above the table shows the aggregate clawback count and total value.
CSV export — Click the export button to download a clawback-report-<date>.csv file containing all rows in the current filter.
Fund Flow
The Fund Flow tab shows the movement of funds through the two-stage transfer pipeline:
- Sweeps (Modulr → Griffin) — Funds swept from the Modulr collection account into the Griffin DD holding account after a successful BACS collection.
- Forward Payments (Holding → Client) — Funds forwarded from the Griffin holding account into the agent's Griffin client account after the hold period.
Both tables are paginated and display status badges indicating the current state of each payment.
Reserve
The Reserve tab shows the current state of the clawback reserve and its history:
- Current reserve banner — Displays the actual reserve held, the required reserve, and whether the reserve requirement is currently satisfied. A shortfall amount is shown if the reserve is below the minimum.
- Historical trend chart — Plots actual vs. required reserve values over time, sourced from the audit log snapshots.
- Snapshot table — Tabular view of all reserve snapshots within the selected period.
Filtering
All tabs respect a shared filter bar:
- Date range — Restrict data to a specific start and end date.
- Mandate — Filter by a specific mandate, selected from a dropdown populated by the
mandateListquery.
CSV Export (full collections list)
In addition to the clawback-specific export on the Clawbacks tab, a full collections export is available. The exported file (collections-report-<date>.csv) includes the following columns:
ID, Status, Amount (£), Collection Date, Receipt Date, Tenant Name, Tenant Email,
Property Ref, Tenancy Ref, Modulr Collection ID, BACS Ref, Representation Count,
Scheduled At, Submitted At, Collected At, Failed At, Failure Reason,
Clawback At, Clawback Reason, Swept to Holding At
Exports run client-side for small datasets. Larger exports (up to 1,000 rows) use the collectionsExport tRPC query.
API: reports tRPC router
All queries in the reports router are accessible via orgProcedure, meaning they are automatically scoped to the authenticated organisation (orgId). Each query accepts optional dateFrom, dateTo, and mandateId filter parameters.
reports.collectionSummary
Returns aggregated collection statistics and a daily breakdown.
Input
{
dateFrom?: string; // ISO date string
dateTo?: string; // ISO date string
mandateId?: string;
}
Returns
totalCollectedPence— Sum of collected amounts in pencetotalAttempted— Count of all attempted collectionstotalSucceeded— Count of successful collectionstotalFailed— Count of failed collectionstotalClawbacks— Count of clawback eventsfailedAmountPence— Sum of failed collection amounts in penceclawbackAmountPence— Sum of clawback amounts in penceavgCollectionPence— Average successful collection amount in pencesuccessRate— Percentage (0–100)daily— Array of{ date, collected, failed, clawback, totalCollectedPence }rows
reports.clawbackHistory
Returns a paginated list of clawback events with tenant and property context.
Input
{
dateFrom?: string;
dateTo?: string;
mandateId?: string;
page?: number; // defaults to 1
pageSize?: number; // defaults to 20
}
Returns
items— Array of clawback records (see CSV columns above for field list)total— Total matching record counttotalAmountPence— Sum of all matching clawback amounts
reports.fundFlowHistory
Returns sweep and forward payment records.
Input
{
dateFrom?: string;
dateTo?: string;
page?: number;
pageSize?: number;
}
Returns
sweeps— Modulr → Griffin transfer recordsforwards— Holding → Client transfer records- Separate
totalcounts for each
reports.reserveUtilisation
Returns reserve snapshots from the audit log for trend analysis.
Input
{
dateFrom?: string;
dateTo?: string;
}
Returns
current— Latest reserve snapshot{ actualReservePence, requiredReservePence, reserveSatisfied, shortfallPence }history— Array of snapshots ordered bycalculatedAt
reports.mandateList
Lightweight mandate list for populating filter dropdowns.
Returns
- Array of
{ id, tenantName, propertyRef, tenancyRef, status }objects
reports.collectionsExport
Flat, CSV-ready collection list for bulk export (up to 1,000 rows).
Input
{
dateFrom?: string;
dateTo?: string;
mandateId?: string;
}
Returns
- Array of flat collection records matching the CSV export schema described above