Skip to content

How Naarva calculates SaaS metrics

A useful portfolio overview needs consistent definitions. Naarva separates collected revenue from recurring subscription value, preserves currencies and makes incomplete source data visible.

Revenue is successfully collected money

Revenue includes successful subscription payments and one-time payments attributed to the tracked project during the selected period, before internal operating costs. Failed payments, unpaid invoices, unpaid trials and test-mode transactions are excluded.

Refunds reduce revenue in the period in which the refund is recorded. Where the source reliably identifies taxes, Naarva prefers net-of-tax amounts. Where it does not, the report retains the tax limitation instead of silently treating gross and net values as equivalent.

Revenue is different from a payout. Store commissions, merchant-of-record settlements and bank transfers can contain adjustments that do not describe the same period or measure.

MRR normalizes active recurring value

Monthly recurring revenue is the normalized monthly value of eligible active recurring subscriptions. Monthly charges use their monthly amount; annual amounts are divided by twelve and quarterly amounts by three.

Illustrative example: an active €120 annual subscription with no tax or discount adjustment contributes €10 MRR. A €50 one-time purchase can contribute to revenue but contributes no MRR.

Trials, free plans, one-time fees and unpaid subscriptions do not contribute paid MRR. Recurring discounts and taxes are accounted for where source data supports a reliable recurring amount. Ambiguous prices or paused collection can make MRR incomplete rather than justify an assumed amount.

ARR = MRR × 12. Annual recurring revenue is derived from normalized MRR. It is not calculated independently from annual invoices and does not mean the amount has already been collected.

Subscriptions and customers are different counts

Active subscription counts include active and trialing subscriptions, with trials identified separately. Trial inclusion in that count does not imply paid MRR. Canceled, paused, incomplete, past-due and unpaid subscriptions do not contribute to active counts or paid MRR.

A scheduled cancellation is not an effective cancellation until the subscription ends. Counting it immediately would confuse an intention to cancel with an actual loss of active service.

A paying customer with several subscriptions to the same project is counted once for that project. Cross-project or cross-provider customer identities are only deduplicated where they can be matched reliably; an aggregate of project counts is not presented as a proven unique-person count.

Logo churn compares customers lost during a period with customers active at its start. It is distinct from revenue churn. Missing history or a zero starting population cannot support an ordinary percentage comparison.

Failed payment attempts are a separate measure from unpaid invoices or customers in a billing-issue state. Availability depends on whether a source exposes actual attempt history. RevenueCat exports do not provide those individual attempts.

Estimated profit depends on recorded costs

Costs can be recorded as one-time or recurring expenses for a project. Recurring costs are allocated across their applicable reporting periods. Amounts keep their currency, and company or workspace views aggregate the corresponding project values.

Estimated profit = revenue − recorded costs in the same currency. It is a performance estimate, not an accounting statement. Unrecorded expenses are not known to Naarva, and missing revenue coverage cannot be turned into a profit estimate simply because some costs exist.

A missing currency on either side is not a zero. Partial coverage remains partial in the resulting estimate. Negative revenue or profit periods remain visible rather than being clipped to zero.

Compare the same currency, period and data coverage

Naarva preserves original currencies. EUR and USD are shown separately; no implicit exchange rate combines them into one total. Reporting period boundaries follow the workspace timezone even though stored timestamps use UTC.

Source freshness, revenue history and current subscription coverage are separate facts. A recent successful synchronization is not proof of complete historical data. Growth comparisons need comparable current and previous periods; missing or unsuitable baselines remain unavailable.

RevenueCat’s daily full export is an observed snapshot. Historical MRR begins with those observations rather than being reconstructed from today’s price. Tax estimates and incomplete refund histories remain limitations. Each integration’s delivery method affects what can be established.

Before acting on a comparison, check its period, currency, source status and any incomplete-data indicators. The same definitions apply across project, company and portfolio reporting.