Product-agnostic Stripe billing — one connection sells everything, entitlements flow to lb_users.tier.
One Stripe connection sells everything (Premium now; add-ons, domain-connect later). includes/billing.php is the product-agnostic core.
billing_products (SKU catalog; kind sub|one_time; grants entitlement; per-modeprice ids), billing_orders (ledger), billing_subscriptions.
platform_settings (not api_keys, not env). No SDK —a curl client. Checkout for both kinds; HMAC webhook to billingGrantEntitlement() (the same grant path as founders codes).
lb_users.tier. Cancel only downgrades premium_source='stripe'.BRAND-NEW sites is metered per user per month (user_site_creations + platform_settings billing.limit_new_sites_pm). See site creation.
billingCreatePortalSession()).Admin: the Revenue nav group (admin-billing.php + admin-users.php). Adding a product is a Stripe Price + a catalog row, no new plumbing.