Skip to main content

Platform Billing

Platform Billing is where Ascent operators manage the subscriptions of every MSP organization (tenant) on the platform. It tracks plans, seats, trials, licenses, and the underlying Stripe subscriptions. This is an operator-only surface — it manages how MSPs pay Ascent, not how MSPs bill their own clients.

Overview

Platform Billing lets you:

  • Review platform-wide revenue and subscription metrics (MRR, active, trial, past-due, churn, and more)
  • Search and filter every organization's subscription
  • Inspect a single organization's plan, seats, usage, and billing history
  • Change an organization's license tier and seat count
  • Start, extend, end, or remove trials
  • Grant or revoke perpetual and internal licenses
  • Link an organization to a Stripe customer/subscription, and cancel or resume its Stripe subscription

Access

This page is part of the Platform Admin area and is only available to platform operators — not to MSP org admins. Opening the page requires the PLATFORM_ADMIN or PLATFORM_BILLING role; operators without one of those roles see an Access Denied message. All subscription management actions (changing tiers and seats, managing trials, granting or revoking licenses, and Stripe cancel/resume) likewise require PLATFORM_ADMIN or PLATFORM_BILLING, and linking or unlinking Stripe requires PLATFORM_ADMIN.

Open the Platform Admin area and select Billing (breadcrumb: Platform Admin → Billing).

Summary statistics

The top of the page shows summary stat cards calculated across all organizations:

StatWhat it shows
Monthly Recurring RevenueAlthough the card is labelled "From active subscriptions," the displayed total blends actual MRR (from active and past-due subscriptions) with a forecast contribution from trials — each trial adds 50% of its estimated monthly amount. Perpetual and internal licenses are excluded.
Active SubscriptionsCount of paying customers
Trial AccountsOrganizations currently in trial
Past DueSubscriptions that need attention
CancelledLost subscriptions
Churn This MonthSubscriptions cancelled since the start of the month
New This MonthOrganizations created since the start of the month
Total OrganizationsAll registered organizations
Perpetual LicensesOrganizations on permanent access (no MRR) — shown only when present
Internal LicensesBST internal-use organizations — shown only when present

Perpetual and internal licenses are excluded from MRR.

The subscriptions table

Below the stats, a Subscriptions table lists organizations with these columns:

ColumnDescription
OrganizationOrganization name and slug
PlanLicense tier badge (Starter, Teams, Professional, Enterprise)
StatusSubscription status badge, plus a Perpetual or Internal badge when applicable
MembersCurrent number of org members
MonthlyMonthly amount, or Free for non-revenue licenses
Period EndCurrent period end date, or the trial end date if on trial
ActionsRow menu with View Details and (when a Stripe subscription exists) Manage Subscription
  • Search organizations… filters by organization name or slug.
  • Status filter: All Statuses, Active, Trial, Past Due, Cancelled, Pending, No Subscription.
  • Plan filter: All Plans, Starter, Teams, Professional, Enterprise.
  • The refresh button reloads both the stats and the table.

Results are paginated (20 per page).

Subscription statuses

StatusMeaning
ActiveSubscription (or perpetual/internal license) is in good standing
TrialOrganization is in a trial period
Past DueStripe reports the subscription as past due
CancelledSubscription has been cancelled
PendingStripe subscription exists but is incomplete/paused, or could not be loaded
No SubscriptionNo active Stripe subscription and no current trial
ExpiredA trial ended with no active license

Status is derived from live Stripe data when an organization is linked to Stripe; otherwise it is derived from the organization's license record.

Managing a subscription

Open the row's Actions menu and choose View Details (or Manage Subscription when a Stripe subscription exists) to open the Manage Subscription dialog — both menu items open the same dialog. A status summary at the top shows the current Status, Tier, Amount (or Free for non-revenue licenses), Seats (members vs. seat count, or members / ∞ when seats are unlimited), and a date whose label is Period End, Trial Ends when on trial, or Expired when the trial has expired. If the subscription is set to cancel, a banner notes that it will be cancelled at the end of the current billing period.

The dialog is organized into three tabs.

Plan & License tab

License Tier — choose the tier and click Update Tier. Tiers and their per-technician monthly pricing:

TierPrice
Starter$35 / tech / mo
Teams$45 / tech / mo
Professional$75 / tech / mo
Enterprise$135 / tech / mo

Changing the tier updates feature access for the organization.

Seat Count — use the - / + controls or type a value, then click Update Seats. The field shows Unlimited as a placeholder when no seat count is set, but you must enter a value of at least 1 to save (a blank or zero value is rejected, and Update Seats stays disabled until you change the current count). Seat changes affect the billing quantity; for organizations linked to Stripe, the change is prorated in Stripe.

License type — the panel shows the organization's license type (SUBSCRIPTION, TRIAL, PERPETUAL, or INTERNAL) and, when granted, who granted it and when. From here you can:

  • Grant Perpetual — give the organization permanent access with no recurring billing. You are prompted for a reason.
  • Grant Internal — mark the organization as BST internal use (also permanent, no MRR). You are prompted for a reason.
  • Revoke Perpetual / Revoke Internal — revert a perpetual or internal organization back to subscription-based billing.

Trial tab

Pick an Action, then run it:

ActionEffect
Extend TrialPush the trial end date out
Start New TrialBegin (or restart) a trial period
End Trial (Convert to Active)End the trial and activate the organization
Remove Trial (Suspend Access)Remove the trial and suspend access

For Extend Trial and Start New Trial, set Trial Days (days to add from today) or Or Set End Date (a specific date, which overrides the day count). You can record an optional Admin Notes entry explaining the change.

Stripe tab

Connection shows whether the organization is linked to Stripe:

  • When connected, the dialog displays the Stripe Customer and Subscription IDs, an Open in Stripe button (opens the customer in the Stripe dashboard), and an Unlink button.
  • When not connected, a Link to Stripe button opens the linking dialog.

Subscription Actions (shown when a Stripe subscription exists):

  • Cancel at Period End — stops billing after the current period (the subscription stays active until then).
  • Cancel Immediately — ends the subscription and access now.
  • Resume Subscription — reverses a pending cancellation so billing continues. (Shown when the subscription is already scheduled to cancel.)

If an organization has no Stripe customer or subscription, the tab prompts you to use Link to Stripe.

Additional detail data (API)

The endpoint that loads an organization's subscription returns more information than the Manage Subscription dialog currently displays. Beyond the status summary and the three tabs, the response also includes usage counts (tickets, clients, assets, and real storage consumption), per-tier plan limits, the upcoming invoice (when one exists in Stripe), and recent Stripe billing history (up to the last 12 invoices with amount, status, and a link to the hosted invoice). These extra fields are not shown in the dialog today, so they are primarily useful via the API. The per-tier plan limits are reference figures the source marks as placeholder values, so treat them as indicative rather than as hard, enforced caps.

How seat counts stay in sync

Seat quantity is kept in sync automatically. When members are added or removed from an organization that has an active or trialing Stripe subscription, Ascent updates the Stripe subscription quantity to match the active member count (with proration) and notifies the organization's OWNER and ADMIN members. Organizations without a Stripe subscription, or whose subscription is not active or trialing, can still add and remove members freely — the seat sync is simply skipped. Note that a manual seat count you set in the Plan & License tab is not permanent: the next time a member is added or removed, the automatic sync recomputes the quantity from the active member count.

Audit logging

Every subscription change made here is recorded in the platform audit log, capturing the operator, the organization, and the change that was made.

Tips

  • Use the Status filter to surface Past Due organizations that need follow-up.
  • Prefer Cancel at Period End over Cancel Immediately when you want to honor the remaining paid period.
  • Grant Perpetual or Internal licenses for partners and internal accounts so they do not appear in MRR.
  • Always add a note or reason when extending trials or granting special licenses so the audit trail stays clear.