CentraPoint

Guides

Reports & report builder

Standard reports, the custom report builder, saved and scheduled reports, and CSV/XLSX exports in the CentraPoint dashboard.

On this page

Overview#

The Reports page in the dashboard has two parts:

  • Standard reports: ready-made reports (revenue, refunds, aged receivables, MRR and more) with charts and summary figures.
  • Custom reports: reports you build yourself from any data source on your plan, save, share with your team and have emailed on a schedule.

All dates are worked out in South African time (Africa/Johannesburg, UTC+2). Reports only ever read your own organisation's data.

Plan and permissions#

What you need for each part of Reports
ToYou need
Open Reports and run standard reportsreports:read (View reports). Standard reports do not need the Report builder plan feature.
Build, save, duplicate, edit or delete custom reportsA plan that includes Report builder, plus reports:build (Build and save custom reports).
View saved custom reportsA plan that includes Report builder, plus reports:read.
Edit, delete or schedule other users' saved reportsreports:manage (Manage all saved reports; Admin by default) as well as reports:build.
Report on a particular kind of dataThe plan feature for that data source (if any) and the source's read permission, e.g. transactions:read. See the data source table below.

By default Admin and Staff have both report permissions and Viewer has reports:read only. See Roles & permissions to change this with a custom role.

Each standard report and data source is checked separately. If your plan does not include the module behind it, it is shown as Locked with the feature it needs; if your role cannot read that data, it is shown as No access.

If your plan stops including the Report builder, your saved reports are kept but cannot be opened, and scheduled deliveries are skipped until the feature is back on your plan.

Standard reports#

Open a standard report from Reports. Most have several views (for example "By month" and "By gateway") that you switch between at the top of the report, and some show summary figures above the table.

Standard reports
KeyReportWhat it showsViewsDefault range (date used)Needs
revenueRevenue summaryGross collected, fees and net for payments with status complete, partially_refunded or refunded, with a payment count.By month, By gateway, By productThis year (payment date)transactions:read
transactions_by_statusTransactions by statusCount and value of payments by outcome.By status, By day and statusLast 30 days (created date)transactions:read
refundsRefundsRefunds issued, with reason, customer and the original payment reference.List, By statusLast 30 days (created date)refunds:read
aged_receivablesOutstanding invoices (aged receivables)Sent or overdue invoices with an outstanding balance, bucketed as current, 1-30, 31-60, 61-90 and 90+ days overdue.Ageing summary, By customer, InvoicesAll time (issue date)Invoicing; invoices:read
customer_ltvCustomer list with lifetime valueEvery customer with payment count, last payment, total paid, total refunded and net lifetime value, highest first.CustomersAll time (customer created)customers:read
subscription_mrrSubscription MRR, ARR & churnRecurring revenue normalised to a month, plus trials. Summary figures: MRR, ARR, active subscriptions, in trial, new in period, churned in period (with churn rate).MRR by plan, By status, TrialsThis month (only used for the new/churned figures; MRR is as of today)Recurring card billing; subscriptions:read
debit_collectionsDebit order collectionsCollected vs unpaid and rejected debit order lines, with unpaid reasons. Summary figures: success rate, collected, unpaid and rejected amounts.By status, By month, Unpaid & rejectedLast 30 days (batch action date)Debit orders; debit_orders:read
payment_link_performancePayment link performanceViews, payments, conversion rate and revenue per payment link.LinksAll time (link created)Payment links; payment_links:read
coupon_usageCoupon usageRedemptions and discount given per coupon code, and each redemption.By coupon, RedemptionsThis year (redeemed date)Coupons; coupons:read
eft_awaiting_reviewEFT orders awaiting reviewManual EFT orders with proof of payment uploaded and waiting for review, oldest first.Awaiting reviewAll time (created date)Payment links; eft:read

MRR counts subscriptions that are active or past due, converting each subscription's amount × quantity to a monthly value from its billing frequency. ARR is MRR × 12. The churn rate is churned ÷ (active + churned) for the selected period.

The debit order success rate is collected ÷ (collected + unpaid + rejected) for lines whose batch action date is in the range.

Date ranges#

Every report has a date range picker. The presets are: All time, Today, Yesterday, Last 7 days, Last 30 days, This week, Last week, This month, Last month, This quarter, Last quarter, This year, Last year and Custom range. Weeks start on Monday. A custom range includes both the start and end dates.

Report builder#

Choose Reports → New report to open the builder. You work through four steps: pick a data source, choose what to show, preview, then save (and optionally schedule). The preview updates as you change the report and shows the first 100 rows or groups.

Data sources#

A report runs against one data source. Sources whose module is not on your plan are shown with Upgrade: needs …; sources your role cannot read are shown with Your role cannot view this data.

Report builder data sources
KeySourceContainsPlan featurePermission
transactionsTransactionsEvery payment attempt across your gateways, debit orders and EFT.-transactions:read
customersCustomersCustomer records with lifetime value.-customers:read
productsProductsYour catalogue with units sold and revenue.-products:read
refundsRefundsRefunds issued against payments.-refunds:read
invoicesInvoicesInvoices with balances and ageing.Invoicinginvoices:read
invoice_paymentsInvoice paymentsPayments recorded against invoices (EFT, cash, card...).Invoicinginvoices:read
payment_linksPayment linksHosted checkout links with clicks, payments and revenue.Payment linkspayment_links:read
eft_ordersEFT ordersManual EFT payments and proof-of-payment reviews.Payment linkseft:read
subscriptionsCustomer subscriptionsSubscriptions with MRR / ARR (normalised to a month).Recurring card billingsubscriptions:read
subscription_eventsSubscription eventsLifecycle history: activations, renewals, failures, cancellations.Recurring card billingsubscriptions:read
coupon_redemptionsCoupon redemptionsDiscount codes used at checkout and on subscriptions.Couponscoupons:read
mandatesDebit order mandatesDebit order authorities (bank details masked).Debit ordersdebit_orders:read
debit_order_entriesDebit order collectionsBatch lines: collected, unpaid and rejected debit orders.Debit ordersdebit_orders:read
statement_linesStatement linesImported statement lines and their match status.Reconciliationreconciliation:read
webhook_deliveriesWebhook deliveriesOutbound webhook attempts to your endpoints.REST API & API keyswebhooks:read
audit_logAudit logUser activity trail.Audit logaudit:read
accounting_sync_jobsAccounting sync jobsInvoices, payments and refunds pushed to your accounting system.Accounting integrationsaccounting:read

Every source has a default date field used by the date range (for example Created for transactions, Issue date for invoices and Batch action date for debit order collections). You can pick any other date field of the source instead.

Columns and filters#

When you pick a source, a sensible set of default columns is added. Add, remove and reorder columns (up to 60). Fields can come from related records, for example a transaction's gateway, customer, product, invoice number or payment link title.

Add up to 30 filters. The operators on offer depend on the field's type:

Filter operators by field type
Field typeOperators
Textequals, does not equal, contains, is one of, is empty, is not empty
Choice (e.g. status)equals, does not equal, is one of, is empty, is not empty
Number and moneyequals, does not equal, greater than, at least, less than, at most, between, is empty, is not empty
Dategreater than, at least, less than, at most, between, is empty, is not empty
Yes / noequals, is empty, is not empty

For is one of, enter comma-separated values. Between needs both values. All filters must match (they are combined with AND).

Grouping, summaries and charts#

  • Group by up to two fields. When you group by a date, choose a bucket: day, week (starting Monday), month, quarter or year. Empty values are grouped as (none).
  • Add up to 12 summaries per group: Count (of rows, or of rows where a field is filled in), Sum, Average, Min and Max of a numeric or money field. If you group without adding a summary, a row count is added for you.
  • Grouped reports can be shown as a bar, line or pie chart. Ungrouped reports have no chart.
  • Results include a totals row for summaries and for summable number and money columns.

Sorting and row limits#

Sort by one field, ascending or descending. In a grouped report you can sort by a grouped field or a summary. Set a Row limit (1 to 50,000) to return only the top rows, or leave it blank for all rows.

Saving and sharing reports#

In the builder's last step give the report a name (required, up to 200 characters) and an optional description, then save.

  • Share with everyone in the team who can view reports is ticked by default. Shared reports appear under Shared with the team for other users; unshared reports are private to you.
  • Opening a saved report runs it live. You can change its date range on the report page without editing it.
  • Anyone with reports:build can Duplicate a report they can see; the copy is private, unscheduled and named "… (copy)".
  • Only the report's owner, or a user with reports:manage (Manage all saved reports; Admins by default), can edit, delete or schedule it; both also need reports:build. Deleting cannot be undone.
  • Creating, updating, deleting and exporting reports are recorded in the audit log.

Scheduled email delivery#

A saved report can be emailed automatically. Choose an Email delivery option when saving:

Delivery schedules
ScheduleSentData covered
Don't email--
DailyEvery day at 06:00Yesterday
WeeklyMondays at 06:00Last week (Monday to Sunday)
Monthly1st of the month at 06:00Last month
  • Times are South African time. The scheduled period replaces the report's own date range.
  • Format: Excel (XLSX, the default) or CSV, attached to the email.
  • Recipients: comma-separated email addresses, at least one and at most 20. Invalid addresses are ignored and duplicates removed.
  • The email uses the report_delivery template (see Email) and includes the report name, the period, the row count and a link to the report.

Deliveries are sent by the platform's scheduled job (POST /api/cron/reports on the API service, run hourly on the hour, cron 0 * * * *, South African time), which processes up to 200 due reports per run and then moves each report to its next delivery time. A report is skipped (and simply waits for its next delivery time) when:

  • your plan no longer includes the Report builder;
  • it has no valid recipients;
  • it has no owner (the user who created it was deleted), since there is no one whose access could be checked; or
  • the report's owner has been deactivated or no longer has reports:read. Scheduled reports run with the owner's current permissions, so a source the owner can no longer read makes the delivery fail.

The saved report page shows when it was last sent and when it is next due.

CSV and XLSX exports#

Every standard and saved report has Export CSV and Export XLSX buttons. The export uses the date range and view currently shown and contains all rows (up to the 50,000 record limit), not just the on-screen preview. Files are named after the report and the date, e.g. revenue-summary-2026-09-26.xlsx.

  • CSV: UTF-8 with a byte-order mark (opens cleanly in Excel), comma-separated with CRLF line endings. Dates are written as South African local time (yyyy-mm-dd hh:mm), money with two decimals and yes/no fields as Yes/No. Text that starts with =, +, - or @ is prefixed with an apostrophe so spreadsheets do not treat it as a formula.
  • XLSX: one worksheet with a bold, frozen header row; dates as real Excel dates and money as numbers with two decimals.

Exporting needs reports:read plus access to the report's data source; exporting a saved report also needs the Report builder on your plan. Each export is recorded in the audit log.