Skip to content

Track revenue at risk

Enterprise plan Owner or Admin

When someone on billable work does not file their timesheet, those hours cannot be invoiced. Revenue at Risk puts a number on that gap: for each person behind on their hours, it prices the missing hours at their billable rate (revenue), their cost rate (cost), and the difference (margin).

For every week in the period, Onplana finds users whose logged hours fall short of their expected hours (compliant and exempt users are skipped). The shortfall hours are summed per user, then priced once with that user’s resolved rates:

  • Cost at risk = missing hours times the cost rate
  • Revenue at risk = missing hours times the billable rate
  • Margin at risk = revenue minus cost

Rows are sorted by margin at risk, worst first, so the most expensive gaps surface at the top. Only billable projects feed cost-at-risk hours, so unlogged internal time does not inflate the figures.

  1. Open Reports and select the Revenue at Risk report (it lives at /reports/revenue-at-risk).

  2. Set the From and To dates. A single report covers up to 90 days.

  3. Review the per-currency margin totals and the per-user table, which includes each person’s rates and how the billable rate was derived.

  4. Select Export CSV to take the rows into a spreadsheet or your finance system.

The custom dashboard catalog includes a Revenue at Risk widget in the Compliance group. It shows the per-currency margin strip and the top users over a configurable lookback window (4 weeks and 5 rows by default), with a link through to the full report.

The report and widget require the compliance management permission, which defaults to organization owners and admins and is configurable in the permission matrix. The widget also guards itself: members and guests see a locked placeholder even if the widget is on a shared dashboard.

  1. Run weekly to catch trends. Revenue at Risk is a tracking signal, not a one-time audit. Weekly runs surface trending users before they accumulate weeks of gap.
  2. Pair with escalation chains. Revenue at Risk shows the gap; escalation chains address it. The two together close the loop. See Run escalation chains.
  3. Use the widget for executive visibility. The dashboard widget gives execs a single- number view (per-currency margin) without needing to run the full report. Make the widget visible on PMO dashboards.
  4. Don’t confuse Revenue at Risk with uncollected revenue. This metric is ABOUT missing timesheets, not unpaid invoices. Uncollected revenue is an AR/Finance system concern, separate from Onplana.
  5. Verify per-currency totals on multi- currency teams. A team with USD + EUR rate cards shows two totals. Don’t naively sum them; the per-currency split is the feature.
  • Revenue at Risk is empty. Three causes: (a) no users non-compliant; (b) no rate cards configured with billable rates; (c) no Billable-flagged projects with logged hours.
  • Margin = $0 across the board. Billable rate equals cost rate (no markup/explicit billable rate set). See Split cost and billable rates.
  • User missing despite being non-compliant. Their rate card may not resolve (no per-user/role card + no org default). Their cost-at-risk shows but revenue-at- risk can’t be computed.
  • CSV export hits date-range error. 90-day max per export. Run multiple for longer periods.
  • Widget shows “Locked” for a member. Defense-in-depth gate. Members can’t see Revenue at Risk regardless of who put the widget on the dashboard.
  • Revenue at Risk + Compliance. Compliance identifies the non-compliant users; Revenue at Risk monetizes the gap. See Monitor timesheet compliance.
  • Revenue at Risk + Billable rate. The metric reads billable rates as the revenue side. Without billable rates, margin reads zero. See Split cost and billable rates.
  • Revenue at Risk + Escalation. Escalation chains drive behavior change; Revenue at Risk measures the impact. See Run escalation chains.
  • Revenue at Risk + Forecast. Forecast is forward-looking (next 4 weeks); Revenue at Risk is backward- looking (past gap). Together they cover past + future revenue visibility. See Forecast billable capacity.
ToolMapping
ServiceNow PSADirect concept; same revenue-leakage metric
Smartsheet PSADirect
Custom Excel pivotOnplana automates the cross-currency reporting
Microsoft Project OnlineLacks revenue-at-risk natively
FinOps toolsAdjacent concept; FinOps tracks cloud spend, not revenue leakage

Why is someone missing from the report? They were compliant or exempt for every week in the range, so they have no hours at risk. Users whose rate cannot be resolved are also skipped rather than priced with a guess.

Does this bill or charge anyone? No. It is a reporting surface only. Nothing is invoiced, and no one is notified by the report itself; reminders and escalations are a separate timesheet enforcement feature.

Why do I see two totals? Your at-risk users resolve to rate cards in different currencies. Each currency gets its own total on purpose, instead of a converted single figure that would move with exchange rates.

Can I run this report against a specific project? Today the report is org-wide. For project-level revenue leakage, use per-project compliance views combined with the rate resolver.

Does the report account for non-billable hours that SHOULD have been billable? No — only the configured Billable flag drives the metric. If a project is misclassified as Internal, its missing hours don’t show. Run a bulk-classify pass to verify.

How fresh is the data? Refreshes on demand when you run the report. The widget refreshes per dashboard refresh cadence (typically every few minutes).