The reports your leadership asks for — MRR by owner, ARR trends, churn, AR aging — usually live in Stripe or a spreadsheet because HubSpot never had the data. Once Stripe syncs in, the figures sit on native objects, and HubSpot’s report builder can do the rest. Here are five to build first.
1. MRR by company or owner #
The single most-requested number, now self-serve.
| Object | Subscriptions |
| Measure | Sum of stripe_mrr |
| Break down by | Company, or the subscription’s HubSpot owner |
| Filter | hs_status = active |
Build it as a single-object report on Subscriptions, sum stripe_mrr, and group
by owner for a leaderboard or by company for an account ranking. Filter to
hs_status = active so canceled lines don’t inflate the total.
2. ARR: pipeline vs. closed #
Compare committed recurring revenue against what’s still in flight.
| Object | Subscriptions + Deals (cross-object) |
| Measure | Sum of stripe_arr (closed) vs. weighted Deal amount (pipeline) |
| Break down by | Stage / quarter |
Use stripe_arr from active Subscriptions as your “closed” recurring revenue and
chart it beside open-deal pipeline. This gives leadership a true recurring-vs-new
view instead of mixing one-time deal amounts with recurring revenue.
3. Churned MRR this quarter #
The number that explains a flat net-revenue chart.
| Object | Subscriptions |
| Measure | Sum of stripe_mrr |
| Filter | hs_status = canceled · cancel date within the quarter |
| Break down by | stripe_churn_reason |
Filter to canceled subscriptions whose cancellation falls in the period, sum the
stripe_mrr they carried, and group by stripe_churn_reason (which records
voluntary_churn vs. involuntary_churn). The breakdown turns “we lost $40k”
into “we lost $40k, and 60% of it was involuntary — failed payments, not
customers choosing to leave” — which is the part you can act on.
4. Invoices outstanding (AR aging) #
Bring accounts-receivable visibility into the CRM.
| Object | Invoices |
| Measure | Sum of amount / count |
| Filter | hs_invoice_status = open |
| Break down by | hs_due_date (date ranges) or company |
Filter invoices to hs_invoice_status = open and bucket by
hs_due_date to get a classic 0–30 / 31–60 / 61–90 aging view —
inside HubSpot, next to the accounts your team is already working.
5. Revenue by product #
See which products actually carry the revenue.
| Object | Subscriptions → Products |
| Measure | Sum of stripe_mrr |
| Break down by | Product |
Because Stripe Prices sync to HubSpot Products and subscriptions link back to
them, you can report on Subscriptions, sum stripe_mrr (which lives on the
Subscription object), and group by product to see your revenue mix — and spot the
long tail of low-revenue SKUs.
Tips for building these #
Most of these are single-object reports. Reach for the custom report builder only when you need a cross-object view, like ARR vs. open pipeline.
- Filter on
hs_statusearly. Active vs. canceled is the difference between current MRR and churned MRR — it’s the filter that defines the report. - Scope to Stripe with a written
stripe_*property (for example, filter wherestripe_subscription_idis known) if other billing sources also write to these objects. - Save reports to a “Revenue” dashboard so the whole GTM org reads from the same, always-current numbers.
For the properties behind each report, see What syncs to what. For step-by-step build instructions and matching automations, see Example reports & workflows.