Skip to main content

Billing Model

Billing is already modeled as an organization-level concern. That matters because many SaaS starters leave subscription ownership ambiguous until late in implementation.

Current Default Shape

  • Polar is the billing provider
  • subscriptions belong to organizations, not individual users
  • the org billing surface is the primary in-app billing UX
  • provider portal access is secondary infrastructure, not the main app workflow

What Buyers Should Understand

  • billing identity is scoped to the organization billing profile
  • plan changes and billing actions are expected to happen from the product app
  • webhook reconciliation is part of the starter shape, not a future TODO
  • the starter fails closed when billing data becomes inconsistent

Where Billing Lives

  • packages/backend/convex/lib/billingPlans.ts
  • packages/backend/convex/org/billing/*
  • packages/backend/convex/http.ts

Why This Is Valuable

  • the starter already takes a stance on who owns subscriptions
  • the subscription model is aligned with multi-tenant B2B2C product structure
  • billing behavior is not buried in Stripe-only frontend code or one-off scripts

What You Will Still Customize

  • plan names and pricing
  • provider credentials and product IDs
  • upgrade, downgrade, and trial policy details
  • product-specific billing rules and entitlements