All templates
DashboardSoftware and subscriptions

SaaS revenue dashboard

The screen a subscription business opens every morning. MRR and its movement, revenue trends, plan and customer mix, and the health of collections, readable in about ten seconds.

Dark revenue dashboard showing monthly recurring revenue, net revenue, active customers and revenue at risk above a gross-versus-net trend chart

A working dashboard built in Flitch on Stripe billing data. It leads with the numbers, charts the trend behind each one, and separates growth from collections so a bad month and a bad payment run never look the same. Copy it and point it at your own Stripe account.

What the dashboard does

  • MRR and ARR with their movement against last month, as the first thing on the page
  • Gross against net revenue over the trailing period, so refunds are never hidden inside the top line
  • Net new MRR split into new, expansion, contraction and churn, month by month
  • Revenue by plan tier and by billing interval, in count and in value
  • The customers carrying the most revenue, ranked
  • Collections: failed charges by decline code, invoices past due, and how much a retry recovers

What data sits behind it

DatasetWhat it carries
customersOne row per account, with plan, seats and billing details.
subscriptionsThe live book: plan, quantity, status and cancellation reason.
invoicesEvery invoice with its status, period and amounts.
chargesPayment attempts, including decline codes and refunds.
productsThe plan catalogue.
pricesPer-seat pricing by plan and interval.

How it was built

Nobody laid this out by hand. It came from one prompt, against the datasets above, and was refined from there. This is the prompt, unedited.

Build "Revenue", the dashboard a subscription business opens every morning. This one is a dashboard and it should be an excellent one. Lead with the numbers, chart generously, and make the state of the business readable in about ten seconds from across a desk.

SaaS revenue dashboard FAQ

Is this real revenue data?

No. It runs on a synthetic subscription business: 420 customers, 377 subscriptions and around 1,900 invoices across 22 months, generated so that the growth, the churn and the failed payments all agree with each other. Replace the datasets with your own when you copy it.

Can I point it at my own Stripe account?

That is what it is built for. The datasets carry Stripe’s own field names and formats, including amounts in minor units and epoch timestamps, so the dashboard reads a real Stripe connection the same way it reads the sample.

Why is expansion and contraction separated out?

Because a flat MRR number hides the two things that matter most. An account adding seats and an account leaving can cancel each other out perfectly while the business underneath changes completely. The sample data has genuine seat changes and plan upgrades in it, so the split is not decorative.

What do I get when I copy it?

Your own dashboard in your own space, with its own copy of the six datasets. Nothing you do to your copy touches the original.

Start from this one

You get your own copy, with its own data, in your own space. Change anything you like.

Use this template