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.tspackages/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