HyphaBase

Plans and billing

Sandbox is free and has small limits. Production is $29 a month, paid through Stripe, and the switch only happens once the payment does.

Every account starts on Sandbox: every module, small limits, no card. When Glow Salon's app is ready for real customers, Sarah's developer moves the account to Production — more capacity, soft enforcement, and a bill.

Two plans

SandboxProduction
PriceFree$29 / month
EnforcementHard — writes over a limit are refusedSoft — warned by header, never refused mid-request
CapacitySmall (10 users, 1 location, 10k custom-data records, 1 GB files…)Meaningful (1M API requests, 5k clients, 1M records, 50 GB…)

The exact numbers, and what your account has used of them, are on the console's Billing page.

Going to Production

On Billing, choose Switch to Production and confirm Continue to checkout. You're taken to Stripe Checkout; nothing about the account changes until Stripe confirms the payment. When it does, the subscription switches, the limits change, and the plan card shows Production with its renewal date.

One card, one account

Billing is per account, not per application or environment. Every application you build under the account shares the plan and its limits.

Managing the card and invoices

Manage billing on the plan card opens the Stripe billing portal — update the card, download invoices, cancel. The link is short-lived; open it again when you need it.

Going back to Sandbox

Switch to Sandbox doesn't cut you off: a paid subscription ends at the close of the period you've paid for, and the account moves to Sandbox then. The plan card shows the date. The usual downgrade rule applies now, though: if the account's current usage (active locations, clients, records, storage…) doesn't fit Sandbox's limits, the switch is refused with what to reduce first. We never put an account onto a plan it is already over.

When a payment fails

Stripe retries over a few days. Meanwhile the Billing page shows a Payment failed notice, and the account's owners get an email with the portal link. Nothing else changes yet — the API keeps working on Production limits.

If Stripe gives up, the subscription ends and the account lands on Sandbox with a Subscription ended notice; the owners are told. Subscribing again is the same Checkout flow.

From code

The platform SDK exposes the same actions for your own tooling: platform.plans(), platform.subscription.get(), platform.subscription.change(plan) — which answers with a Checkout URL for a paid plan or a scheduled date when leaving one — and platform.billing.portal().

On this page