Chapter 9: Dashboard and Reporting
The financial document layer is the data engine. The dashboard is where that data becomes operational intelligence. Convex’s real-time subscription model means every metric updates live as documents are created, statuses change, and payments settle.
Org Admin Dashboard
Section titled “Org Admin Dashboard”The financial command center. It answers: “What is the financial state of my organization right now?”
Treasury Balance and Burn Rate
Section titled “Treasury Balance and Burn Rate”Treasury balance is the current USDC balance held in the Safe. Maintained by the indexer via Transfer event processing. The dashboard subscribes via Convex real-time queries.
Burn rate is the rate at which the treasury is being depleted: the sum of all active payment stream rates plus the average monthly invoice payment volume over the trailing 90 days (or since the org started, whichever is shorter).
Runway is treasury balance divided by monthly burn rate. This tells the org “at your current spending rate, your treasury will be empty in X months.”
Example: treasury holds 50,000 USDC, monthly burn rate is 12,000 USDC (8,000 in streams + 4,000 average monthly invoices). Runway: approximately 4.2 months.
Runway is the single most important number for any organization managing a treasury. It should be the most prominent metric on the dashboard.
Payroll Obligations (Accruing Streams)
Section titled “Payroll Obligations (Accruing Streams)”Total value of all active payment streams, shown as both a real-time accruing counter and a monthly aggregate. Broken down by:
- Total active streams
- Total monthly obligation
- Accrued but unclaimed (funds sitting in employee smart accounts)
Maintained by processStreamEvent mutations in the indexer.
Outstanding Invoices (AP Aging)
Section titled “Outstanding Invoices (AP Aging)”Standard AP aging report grouping unpaid invoices by how long they have been outstanding:
| Bucket | Description |
|---|---|
| Current (0-30 days) | Within payment terms. No action needed. |
| 30-60 days | Getting stale. May need attention. |
| 60-90 days | Overdue. Likely needs escalation. |
| 90+ days | Seriously overdue. Relationship and compliance risk. |
Each bucket shows count and total USDC value. The dashboard highlights anything in 60+ day buckets.
Outstanding AP is independent of the indexer — it queries financialDocuments with type invoice and status submitted or approved. But the transition to paid (removing from AP) is indexer-driven.
Payment Activity
Section titled “Payment Activity”A feed of recent financial activity: payments made (invoices settled), claims processed (employee withdrawals), payslips generated. Summarized as: total outflows this period, number of payments processed, number of claims processed.
Powered by treasuryActivity records from the indexer and financialDocuments status changes.
Fiat Activity
Section titled “Fiat Activity”Recent off-ramp and on-ramp transactions alongside crypto payment activity. Reads from fiatTransactions with Convex subscriptions. Added by the fiat ramp layer.
Verification Status Context
Section titled “Verification Status Context”If the org is not KYB-verified and fiat features are available, a non-intrusive dismissible prompt: “Verify your business to enable fiat payments and virtual accounts.” See Chapter 10.
Dashboard Staleness Indicator
Section titled “Dashboard Staleness Indicator”When the indexer’s last cursor update for the org’s chain is more than 30 seconds old, show a “data may be delayed” badge.
Employee Financial Summary
Section titled “Employee Financial Summary”Answers: “What have I earned, what have I claimed, and what’s available?”
Live earnings counter. Real-time display of USDC accruing from the active payment stream. Ticks up continuously — a powerful visual that makes streaming payments tangible. Computed client-side from cached stream parameters (rate, start time), not blockchain polling.
Current balance. Total claimable amount in the smart account. Difference between total accrued and total claimed.
Claim history. All claim receipts with amounts, dates, and transaction hashes. Each downloadable/viewable.
Payslip archive. All generated payslips organized by period. Downloadable as PDF.
Fiat equivalent. All USDC amounts shown alongside fiat equivalent in the employee’s configured currency (NGN, GHS, etc.) using current exchange rate for live values and recorded rate for historical documents.
Verification status. If verification is expired or approaching expiry, a prompt: “Your verification expires in X days. Re-verify to continue automatic withdrawals.”
Vendor/Contractor View
Section titled “Vendor/Contractor View”Focused on the invoicing relationship with the org:
Invoice status tracker. All invoices submitted with current status (submitted, under review, approved, paid). Clear visual indication of lifecycle position.
Payment history. Settled invoices with amounts, dates, on-chain transaction references.
Outstanding balance. Total value of approved-but-unpaid invoices.
Scheduled Financial Reports
Section titled “Scheduled Financial Reports”Organizations need periodic summaries delivered without logging in.
Report Configuration
Section titled “Report Configuration”- Frequency: Weekly, bi-weekly, monthly, or custom. Multiple schedules can run simultaneously.
- Format: Email summary (inline, quick scan) or PDF attachment (formal, for accountants/auditors).
- Recipients: Configurable list. Not limited to platform users — can include external accountants or board members.
- Content scope: Orgs choose which sections to include.
Report Contents
Section titled “Report Contents”Treasury Summary. Opening balance, total inflows, total outflows, closing balance, runway at current burn rate. The “bank statement” equivalent.
Payroll Summary. Active streams, total obligation for the period, total accrued, total claimed. Highlights streams created, modified, or terminated during the period.
AP Summary. New invoices received, approved, paid, aging breakdown at period end. Highlights anything overdue.
Payment Ledger. Line-by-line list of every payment with document references and on-chain transaction hashes. Raw data for bookkeeping.
Implementation
Section titled “Implementation”Reports are generated by a Convex scheduled job (cron function) at the configured frequency. The job queries financialDocuments for the relevant period, computes aggregations, and renders output.
Email delivery requires an external service (Resend, Postmark, or similar) integrated as a Convex action.
PDF generation shares the same rendering pipeline as payslip/invoice PDFs (different template, same generation approach).
The reporting system should check indexer health (cursor lag) before generating a report. If the indexer is significantly behind, defer the report or include a data freshness disclaimer.