General
Admin Panel

Subscriptions

Manage user subscriptions and billing information from the admin panel.

The Subscriptions section of the admin panel allows you to view, monitor, and manage all subscriptions in your application, including active subscriptions, canceled subscriptions, and subscription metadata.

Features

View All Subscriptions

The subscriptions table displays all subscriptions with key information:

  • User/Organization - The subscriber (user or organization)
  • Plan - The subscription plan name
  • Status - Current subscription status (active, canceled, past_due, etc.)
  • Price - Subscription price and billing interval
  • Current Period - Current billing period dates
  • Created Date - When the subscription was created
  • Stripe Subscription ID - External subscription identifier

Filter Subscriptions

Filter subscriptions by various criteria:

  • Search Query - Search by user email, organization name, or subscription ID
  • Status - Filter by subscription status (active, canceled, past_due, etc.)
  • Plan - Filter by subscription plan
  • Billing Interval - Filter by billing frequency (month, year)
  • Creation Date - Filter by when the subscription was created

Bulk Actions

Perform actions on multiple subscriptions:

  • Cancel Subscriptions - Cancel multiple subscriptions at once
  • Bulk Updates - Update subscription settings in bulk

Using the Admin Subscriptions API

List Subscriptions

app/admin/subscriptions/page.tsx
import { trpc } from '@/trpc/client';

export function SubscriptionsTable() {
  const { data, isPending } = trpc.admin.subscription.list.useQuery({
    limit: 25,
    offset: 0,
    query: '', // Optional search query
    sortBy: 'createdAt', // 'organizationName' | 'status' | 'interval' | 'currentPeriodEnd' | 'createdAt'
    sortOrder: 'desc', // 'asc' | 'desc'
    filters: {
      status: ['active'], // Optional: 'active' | 'trialing' | 'canceled' | 'past_due' | 'paused' | 'incomplete' | 'incomplete_expired' | 'unpaid'
      interval: ['month'], // Optional: 'month' | 'year'
      createdAt: ['today'] // Optional: 'today' | 'this-week' | 'this-month' | 'older'
    }
  });

  return (
    <div>
      {data?.subscriptions.map((subscription) => (
        <div key={subscription.id}>
          {subscription.organizationName} - {subscription.status}
        </div>
      ))}
    </div>
  );
}

Cancel Subscription

components/admin/subscriptions/subscriptions-table.tsx
const cancelMutation = trpc.admin.subscription.cancel.useMutation({
  onSuccess: () => {
    toast.success('Subscription canceled successfully');
    utils.admin.subscription.list.invalidate();
  }
});

const handleCancel = (subscriptionId: string, cancelAtPeriodEnd: boolean) => {
  cancelMutation.mutate({
    subscriptionId,
    cancelAtPeriodEnd
  });
};

Sync from Stripe

components/admin/subscriptions/subscriptions-table.tsx
const syncMutation = trpc.admin.subscription.syncFromStripe.useMutation({
  onSuccess: () => {
    toast.success('Subscriptions synced from Stripe');
    utils.admin.subscription.list.invalidate();
  }
});

const handleSync = (subscriptionIds: string[]) => {
  syncMutation.mutate({ subscriptionIds });
};

Subscription Management

Monitoring Subscriptions

Use the admin panel to:

  • Track Revenue - Monitor subscription revenue and trends
  • Identify Churn - Find canceled or at-risk subscriptions
  • Monitor Status Changes - Track subscription status transitions
  • Audit Billing - Review subscription billing history

Subscription Statuses

Common subscription statuses:

  • active - Subscription is active and billing normally
  • canceled - Subscription has been canceled
  • past_due - Payment failed, subscription is past due
  • unpaid - Payment failed, subscription is unpaid
  • trialing - Subscription is in trial period
  • paused - Subscription is temporarily paused

Best Practices

Subscription Monitoring

  • Regularly review active subscriptions - Monitor churn rates and trends - Track revenue metrics - Identify payment issues early

Subscription Cancellations

  • Understand why subscriptions are canceled - Reach out to at-risk customers
  • Offer retention incentives when appropriate - Document cancellation reasons

Billing Issues

  • Monitor past_due subscriptions - Set up alerts for payment failures - Have a process for handling billing disputes - Maintain clear communication with customers