Components Quickstart
Four steps take you from an empty page to a live billing portal for the signed-in company. The same setup serves every drop-in component and every hook.
Using an agent? Paste this into Claude Code, Cursor, or Codex and it does the setup on this page:
1. Install the packages
The React package carries the provider and the hooks. The components package carries the drop-ins and the derivations the reference code uses. The two Stripe packages are peers of the components; Checkout and Payment Methods load them when a payment form opens.
2. Mint access tokens on your server
Components read a company’s own billing state, so they authenticate with a short-lived, company-scoped temporary access token. Your server issues it with your secret key; the browser only ever sees the token. Put the endpoint behind your own auth and resolve the company from the signed-in session, never from the request.
Node.js
Python
Go
cURL
3. Wrap your app in the provider
session says whose billing is being read. Pass null when nobody is signed in and undefined while your auth is still resolving; Session and access tokens explains why the three differ. Leave user out when your tokens are company-wide.
4. Render the portal, or a hook
Drop-in
Build your own
Render <SchematicStyles /> once and drop any card you do not need. CheckoutLauncherProvider renders one <Checkout /> for the page, and the cards show their purchase actions only when you hand them open; the Drop-in components overview walks through the portal card by card.
The company endpoints answer 404 for an account that has not enabled them. If a correctly configured page shows a drop-in’s unavailable message, such as “Your plan is not available for this account.”, or a hook’s error is a 404 reading “Not found” (httpStatus(error) === 404), ask Schematic to enable company context (the company-context-api flag) for your account.