One commerce surface for plans, usage, and workspace upgrades.
web now owns the billing edge: plan catalog, account summary,
real checkout-session creation, and the signed webhook intake that projects
paid subscription state into the Supabase control plane.
When Stripe credentials are configured, paid checkout redirects to a real Stripe
subscription flow and waits for webhook confirmation before entitlements change.
In environments without Stripe credentials, the page still falls back to mock
checkout previews without changing subscription state.
Loading billing edge status...
Learn the product without activating paid commerce.
Free
EUR 0 /month
Personal workspace with auth and account access
20 preview backtest minutes each month
No recurring hosted AI or paid data included
Upgrade required for premium AI, bots, terminal time, and larger data pools
20M standard AI input / 4M output plus 1M / 0.15M premium AI
3,000 backtest minutes, 250 bot-hours, and 60 terminal hours
Wider concurrency and higher capped overage for heavier workloads
What This Slice Proves
Server boundary exists
/api/billing/plans, /api/billing/summary, and
/api/billing/checkout-sessions now live in the web control plane.
Workspace billing UX starts here
Pricing and account pages now use the same TypeScript billing contract instead of
hard-coded placeholder copy.
Supabase is now the real control-plane seam
The public web surface now degrades cleanly between mock mode and the stateful
Supabase billing foundation, while Stripe owns paid checkout and webhook
delivery in configured environments.