Context
Authenticated endpoints for creating Stripe Checkout sessions and Customer Portal links.
Scope
modules/billing/services/billing.service.js:
createCheckout(org, priceId, successUrl, cancelUrl) — create/reuse Stripe Customer, create Checkout Session
createPortalSession(org) — create Customer Portal link
getSubscription(orgId) — read current subscription
modules/billing/controllers/billing.controller.js
- Routes in
billing.routes.js:
POST /api/billing/checkout (auth + resolveOrg)
POST /api/billing/portal (auth + resolveOrg)
GET /api/billing/subscription (auth + resolveOrg)
modules/billing/policies/billing.policy.js — CASL rules
Acceptance criteria
- POST checkout returns valid Stripe Checkout URL
- POST portal returns valid Stripe Portal URL
- GET subscription returns current org subscription
- Unauthenticated requests get 401
Dependencies
Context
Authenticated endpoints for creating Stripe Checkout sessions and Customer Portal links.
Scope
modules/billing/services/billing.service.js:createCheckout(org, priceId, successUrl, cancelUrl)— create/reuse Stripe Customer, create Checkout SessioncreatePortalSession(org)— create Customer Portal linkgetSubscription(orgId)— read current subscriptionmodules/billing/controllers/billing.controller.jsbilling.routes.js:POST /api/billing/checkout(auth + resolveOrg)POST /api/billing/portal(auth + resolveOrg)GET /api/billing/subscription(auth + resolveOrg)modules/billing/policies/billing.policy.js— CASL rulesAcceptance criteria
Dependencies