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.