Skip to content
The foundation under itCommercial platform

Plan and payment plumbing

Platform machinery we do not use to sell Growth-OS.

Growth-OS is internal, so nobody buys it and no provider is configured for checkout. What this capability still decides is the plan our own workspace resolves to, because that plan is where the entitlements behind AI and project limits come from. Checkout, the customer portal, metered usage and verified provider webhooks are implemented and stay behind authenticated server boundaries.

1
catalog shared by plans and entitlements
4
hosted provider adapters implemented
1
time each provider event applies

Product example

See it working

This is the same visual component used by the authenticated app, rendered with deterministic sample data.

Scenario
viewport
surface theme
mode

Free workspace

The state a workspace with no subscription is in, and the plans the catalog defines.

Inert sample data · no network access

Current plan

What this workspace pays for now, and when the next charge lands.

Free

No recurring subscription

Free

Current usage

How much of the current plan this workspace has consumed in the open billing windows.

Credit balance

Prepaid credits available to this organization

0

Active projects

1 / 1

x
Server enforcedWindow ends Sep 1, 2026

0 remaining

1 Included in your plan

AI generations

34 / 50

x
Server enforcedWindow ends Sep 1, 2026

16 remaining

50 Included in your plan

Authenticated API requests (all organizations)

42 / 120

x
Enforced on integrated API routesWindow ends 9:31 AM

78 remaining

Available plans

Choose a billing cycle before starting secure hosted checkout.

Free

Get started at no cost.

Your current plan

Free

  • Up to 1 project
  • Community support

Pro

A predictable subscription for teams moving faster.

Most popular

$29.00 /mo

  • Unlimited projects
  • Priority email support
  • Advanced analytics

Scale

A base subscription plus metered usage overage.

Usage-based

$99.00 /mo

1,000 included · $0.01 per extra generation

  • Everything in Pro
  • 7-year organization audit history
  • 1,000 AI generations included
  • Usage-based overage, no surprise caps

Pro Lifetime

One payment for permanent Pro access.

One-time purchase

$499.00 one-time

  • Permanent Pro access
  • No recurring charge
  • All Pro updates

100 credits

Prepay a balance and spend it when your product chooses.

Credit pack

$19.00 one-time

100 credits added after payment

  • 100 durable credits
  • Retry-safe fulfillment
  • No expiration

Enterprise

Custom contracts, dedicated support, and invoice billing.

Contact

Custom

  • Everything in Scale
  • Dedicated CSM and onboarding
  • Custom identity integration support
  • Custom SLA and security review
Contact sales

Preview ready

The problem this solves

Without a shared foundation, every team rebuilds these edge cases, differently.

The event applied twice

Providers resend webhooks as a matter of course. Code that treats each delivery as new grants access or credit a second time. Here a redelivery finds a receipt and changes nothing.

The cancellation that came back

A slow update arrives after a newer one and flips state backwards. The server compares provider timestamps under a row lock and acknowledges the older event as stale instead of applying it.

Three copies of the same price list

One list on a page, another in checkout, a third in the code that grants access. They drift, and the difference is noticed from outside. One typed catalog removes the question.

Highlights

Why it matters

One catalog, one answer

Plans, offers, entitlements and provider identifiers live in one typed file, so what a workspace is allowed to do is written down once.

A repeated provider event changes nothing

Providers resend events by design. Each one applies exactly once, under a receipt, instead of being fulfilled twice.

Late news is discarded

An event that arrives after a newer one is skipped while a row lock is held, so a stale message cannot revive a cancelled subscription.

How it works

The mechanism end to end, as implemented in the repository.

  1. 1

    One catalog defines the plans

    Modes, offers, provider identifiers and fulfillment are declared once in config/billing.ts. Plan pages, checkout and server-side access all read that same definition.

  2. 2

    A workspace resolves to a plan

    resolveCommercialAccess maps subscription state to a plan, with a grace window for a late payment. With no subscription the answer is the free plan, unless an explicit organization grant says otherwise.

  3. 3

    Every provider message is verified

    The webhook route checks a provider signature, or for Mollie classic payment webhooks retrieves the referenced entity with the server key. A forged or unbound message cannot fulfill anything.

  4. 4

    State only moves forward

    Each event applies inside a locked transaction, exactly once, and older events are skipped. Billing state never goes backwards because of delivery order.

Engineering guarantees

What this does and does not promise

Safety boundary

Nothing on this site opens a checkout session; the public pages read the catalog directly. Because we do not sell Growth-OS, checkout, the portal and usage reporting have no day-to-day use for the team. Read this page as a description of the machinery, not of a screen you will open.

Implementation evidence

The boundary above is code, not a claim. These files carry the contract:

  • src/features/billing/server.ts
  • src/features/billing/providers
  • src/features/billing/jobs.ts
  • config/billing.ts
Questions

Frequently asked questions

What plan and payment plumbing rests on

The docs describe the same contracts this page demonstrates.