Launch credit-based pricing without building the billing system behind it. Works with Stripe.
Behind every credit balance is infrastructure you have to build and maintain.
What the customer sees
What you build
Every grant, draw, hold and expiry lands on one ledger, whichever model or provider burned the credits. The app, the portal and the invoice all read the same number.
An agent holds credits before it runs and settles at what it used. Ten runs in parallel cannot overdraw the pool.
Unused credits stay deferred, burned credits recognize, expired credits break. Finance exports the ledger as it is.
Caps per request, per hour and per day. Set them on the plan or let the customer set them. Every check respects them.
Connect Schematic once, and you can change prices, limits and plans without touching your code again.
Plans, bundles, top-ups and promos add credits to the balance.
Credit grants and burndown →Schematic checks the balance and the caps, then reserves the credits.
Preflight checks →The reservation settles at what was used. The rest returns.
Leases and reservations →Top up, block or bill in arrears. The grant’s policy decides.
Empty balances and overage →import { SchematicClient } from "@schematichq/schematic-typescript-node"const result = await client.checkFlagWithEntitlement({ company: { id: "acme-robotics" }, user: { user_id: "agent-7" } },"deep-research",{ eventUsage: { eventSubtype: "steps", quantity: maxSteps } },)if (!result.value) return showLimitMessage(result.reason)// acme-robotics → true 3,200 left · 25 reserved · 1 credit / step
from schematic.client import AsyncSchematic, CheckFlagOptions, EventUsageresult = await client.check_flag_with_entitlement("deep-research",company={"id": "acme-robotics"}, user={"user_id": "agent-7"},options=CheckFlagOptions(event_usage=EventUsage(event_subtype="steps", quantity=max_steps)),)if not result.value: return show_limit_message(result.reason)# acme-robotics → true 3,200 left · 25 reserved · 1 credit / step
client := schematicclient.NewSchematicClient(option.WithAPIKey(apiKey))resp, err := client.CheckFlagWithEntitlement(ctx, &schematicgo.CheckFlagRequestBody{Company: map[string]string{"id": "acme-robotics"},User: map[string]string{"user_id": "agent-7"},Preflight: &schematicgo.PreflightRequestBody{EventUsage: &schematicgo.PreflightEventUsageRequestBody{EventSubtype: "steps",Quantity: maxSteps,},},}, "deep-research")if err != nil || !resp.Value { return showLimitMessage(resp.Reason) }// acme-robotics → true 3,200 left · 25 reserved · 1 credit / step
One ledger keeps your product, your customers and your invoices on the same number. Customers trust their balance, and finance closes the month without reconciling.
Every grant, draw, hold and expiry is an append-only entry with who, what and when.
Grant credits per seat on a plan. The pool grows and shrinks as seats change.
Each feature and each model burns at its own rate. Change a rate any time.
Sell one-time bundles at checkout, and let auto top-up refill the balance before work stops.
A burndown per company and per user, with a forecast of when the balance runs out.
Burn credits per token at a rate per model, and see the margin on every call.
Stripe takes the payment and Schematic grants the credits, with customers, plans and subscriptions kept in sync both ways.
Each seat carries a monthly grant that pools across the team. Add a seat, the pool grows. Usage reports show what each person spent.
Customers buy credit bundles and every agent run reserves before it starts. Caps per request, per agent and per day keep one loop from draining the balance.
Start customers on a monthly free grant, sell bundles at checkout and let auto top-up refill the balance so work never stops.
“I know companies that are putting so much development work into their billing platforms. Why? You shouldn’t build anything that isn’t your product.”

Syrto AI monetized its MCP server after billing logic was hardcoded in a contractor-built web app. The team talked with Metronome, Orb and Chargebee, then realized that billing alone would not do: they needed entitlements too.
Read how Syrto monetized its MCP serverWith billing and enforcement in one system, you stay in control of what is spent and your customers can trust what they are charged.
Build in-house | Stripe Billing alone | Usage invoicing platform | ||
|---|---|---|---|---|
Real-time balance check before an action | Schematic✓Yes, with a preflight check | Build in-houseYou build it | Stripe Billing aloneNo; credits apply when the invoice finalizes | Usage invoicing platformBalance via API and alerts; your app enforces |
Reservations for parallel agents | Schematic✓Yes, reservations and leases | Build in-houseYou build it | Stripe Billing aloneNo | Usage invoicing platformNo; alerts fire after usage lands |
Rollover %, expiry and consumption order per grant | Schematic✓Yes | Build in-houseYou build it | Stripe Billing aloneExpiry and priority order; no rollover | Usage invoicing platformYes |
Zero-balance policy (block, auto top-up, user top-up, arrears) | Schematic✓All four, per grant | Build in-houseYou build it | Stripe Billing aloneBills usage past the credits on the invoice | Usage invoicing platformAuto top-up; block via your app on a balance alert |
Customer-facing wallet, checkout and top-ups | Schematic✓Drop-in components | Build in-houseYou build it | Stripe Billing aloneCheckout and customer portal; no in-app credit wallet | Usage invoicing platformEmbeddable usage and credit dashboards; you build the purchase UI |
Per-user and per-agent spend caps | Schematic✓Hourly, daily, per request | Build in-houseYou build it | Stripe Billing aloneNo | Usage invoicing platformPer-seat or per-group spend alerts; your app blocks |
Best for | SchematicAI products that enforce and show credits | Build in-houseUnique needs and spare engineering capacity | Stripe Billing alonePayments, invoices and tax | Usage invoicing platformHigh-volume invoicing and contracts |
Fast, secure, reliable.
Schematic’s ready-made credit wallet gives you what you need to sell credits with trust and transparency: a live balance, a usage history and a way to top up.
Grants, rates, caps and policies live outside the codebase. The preflight check and the track call are the whole integration, in the SDK you already use.
Launch a grant, a bundle or a cap from the dashboard. Roll a rate change into a new plan version while current customers keep theirs.
Deferred, recognized and expired per grant, exported for ASC 606, from the same ledger the app enforces. No month-end reconciliation between the two.
Short answers, each one backed by the docs. Still stuck? The docs and the demo both go deeper.
Grant, burn, top up and cap credits in real time, with a wallet your customers can see. Works with Stripe.
Pick a time with the Schematic team. 30 minutes, straight to your questions.