Billing

Audience: Customer — this page documents billing, plans, and subscription management.

The billing page (/dashboard/billing) manages subscriptions, plan selection, and payment.


URL

/dashboard/billing

Access

Available to all plans. No feature gate.


Data Source

GET /api/v1/billing/status

Returns:

{
  "status": "trial",
  "trialDaysRemaining": 5,
  "plan": {
    "id": "pro",
    "name": "Pro",
    "seats": 1,
    "currentPeriodEnd": "2026-03-09T00:00:00Z",
    "cancelAtPeriodEnd": false
  },
  "features": { ... },
  "usage": { "sessions": 42, "events": 1250 },
  "plans": [...]
}

Status Banners

Context-aware banners appear at the top:

Status Banner Color
trial "Trial Period - N days remaining" Blue
expired "Trial Expired — Subscribe to continue" Red
active Current plan card with seat count Neutral
past_due Payment issue warning Yellow
canceled "Cancels at end of billing period" Yellow

Current Plan Card

When an active subscription exists:

  • Plan name and seat count
  • "Cancels at period end" warning if applicable
  • "Manage Billing" button → Opens Stripe Customer Portal

Usage Metrics

Two cards showing current period usage:

Card Display
Sessions This Period usage.sessions / features.sessionsPerMonth
Events This Period usage.events / features.eventsPerMonth

Limits display as formatted numbers (e.g., "50K", "1M") or "Unlimited".


Billing Controls

Interval Toggle

Two buttons to switch between:

  • Monthly — Standard pricing
  • Yearly — 17% discount (shown as green "Save 17%" badge)

Seat Selector

Increment/decrement control for the number of developer seats. Minimum 1 seat. Some plans have minimum seat requirements.


Plans Grid

Two plan cards displayed side-by-side:

Plan Card Contents

Element Description
Name Plan name (e.g., "Pro")
Popular badge Purple "Most Popular" badge (if applicable)
Description Brief plan description
Total price pricePerSeat × seats per interval
Per-seat breakdown $X/seat × N seats
Min seats warning Yellow text if selected seats < plan minimum

Feature Checklist

Each plan card lists:

Feature Icon
Sessions per month Zap
Retention days Clock
Rule violation tracking Check / X
Pattern detection Check / X
Priority support Shield / X
SSO / SAML Users (Enterprise only)

Plan Actions

State Button
Current plan Disabled "Current Plan" (green)
Available plan "Subscribe" or "Switch Plan"
Loading Spinner

Payment Flow

  1. User clicks "Subscribe" on a plan
  2. Client calls POST /api/v1/billing/create-subscription with { planId, interval, seats }
  3. Server creates a Stripe subscription and returns a clientSecret
  4. Payment modal opens with embedded Stripe Elements form
  5. User enters card details
  6. On success: modal closes, billing status refreshes
  7. On error: error message displayed in modal

Payment Modal

  • Plan name header
  • Error display (if applicable)
  • StripeProvider + PaymentForm components
  • Cancel button to close modal
  • Return URL: /dashboard/billing?success=true

Manage Billing

POST /api/v1/billing/portal

Returns a Stripe Customer Portal URL. Redirects the user to Stripe where they can:

  • Update payment method
  • View invoices
  • Cancel subscription
  • Change plan

Enterprise Contact

A card at the bottom for enterprise inquiries:

  • "Need more seats or custom requirements?"
  • "Contact Sales" button → mailto:enterprise@rulecatch.ai

Pricing Reference

Plan Monthly Yearly (per month)
Starter $49/seat ~$41/seat
Pro $199/seat ~$165/seat
Enterprise $499/seat ~$414/seat

See Also