FEATURES
Billing
Plans, Stripe checkout, invoices, and tenant entitlements for customer orgs.
Overview
Plans, Stripe checkout, invoices, and tenant entitlements for customer orgs.
Who should use this
Organization owners and billing managers upgrading Starter, Growth, Premium, or Business.
Core concepts
Free signup creates a customer tenant (billingMode=free). Paid plans use Stripe Checkout from the org portal or public pricing. Feature add-ons are priced per plan matrix and stored as entitlements.
Setup
Free: org.startupcore.com/signup. Paid (org): GET /billing → POST /billing/checkout → Stripe redirect → webhook applies subscription. Paid (anonymous): startupcore.com/pricing with email → Stripe → signup with same email → auto-claim on verification.
Required entitlement
subscriptions, payments.
Required permissions
billing.view, subscription.manage (Owner/Admin/BillingManager).
REST API
GET /tenants/{id}/billing, POST /billing/checkout (returns checkoutUrl), GET /billing/invoices.
SDK (@startupcore/api-client)
startupCore.billing.current(tenantId), .plans(tenantId), .checkout(tenantId, { planKey }).
React components
Org portal /billing page; public pricing uses CheckoutButton with email.
Security notes
internal_free and StartupCore Internal are never offered to public customers. STRIPE_SECRET_KEY and price IDs stay server-side.
Troubleshooting
Missing checkoutUrl — configure STRIPE_PRICE_* env vars. Claim fails — email must match verified Cognito email.