Organizations and billing

KV Cache Store uses organizations as the top-level billing and storage boundary. Every customer belongs to at least one organization, and each organization has one storage namespace.

Organizations

When you first sign in, KV Cache Store creates:
  • A default organization named “My Org”.
  • A default project inside that organization.
  • A storage namespace tied to the organization.
You can create additional projects within the same organization. Projects group artifacts and API keys; billing is aggregated at the organization level.

Projects

Projects are the scope for API keys and artifact collections. Switching projects in the dashboard updates the active project_id in your session.

Subscriptions

Billing is handled through Stripe.
  • A default plan is created during setup with a free storage quota.
  • Customers upgrade by starting a Stripe checkout session.
  • Webhook events from Stripe update subscription status in the portal.

Checkout flow

  1. In the dashboard, click Billing > Upgrade.
  2. The portal creates a Stripe checkout session via /api/v1/billing/checkout.
  3. Complete payment on Stripe.
  4. Stripe sends checkout.session.completed and customer.subscription.created webhooks.
  5. The portal activates the subscription and updates the storage quota.

Managing invoices

Invoices are recorded per organization. View them in the dashboard under Billing > Invoices.

Canceling a subscription

You can cancel the active subscription from the dashboard. Cancellation takes effect at the end of the current billing period. After canceling, your organization reverts to the default plan’s quota.

Quota enforcement

Storage usage is checked when:
  • Requesting an upload URL.
  • Confirming an upload.
If an upload would exceed the organization’s quota, the request is rejected with 403 Forbidden.