Run your workspace
Billing
Glozr billing runs on Stripe through Laravel Cashier, with PayPal and Razorpay available as alternative gateways. Each workspace sits on exactly one plan at a time.
The billing model
Plans are first-class records that admins define once and assign to workspaces. Subscriptions, invoices, and webhooks are all delegated to the gateway; Glozr keeps a local mirror so it can enforce quotas without hitting Stripe on every request.
Plan fields
- Display name and slug — what the customer sees and how the plan is referenced internally.
- Monthly conversation quota —
0means unlimited. - Optional message cap — hard ceiling on visitor messages per calendar month.
- Token cap per response — defaults to 800; sizes the maximum LLM output.
- Price in cents and billing interval (
monthlyoryearly). - Feature toggles — for example
remove_branding.
Monthly and yearly intervals
To offer an annual discount, create two rows of the same plan — one monthly, one yearly — and price the yearly variant below 12× the monthly rate. Stripe, PayPal, and Razorpay each handle the underlying billing cycle natively.
Quotas and token caps
Two enforcement mechanisms run side by side:
- Message quotas are tracked through
usage_eventsrows and checked before each visitor message is dispatched. - Token limits cap the LLM response so a single answer can't blow through your budget.
Both run at request time, so changes to the plan take effect on the next message — no need to recycle anything.
Managing a subscription
Customers self-serve from /app/billing. Stripe supports prorated swaps and resumption within the grace period. PayPal and Razorpay require a fresh checkout to change plans, because their APIs don't expose a true upgrade primitive.
Subscription reconciler
After every checkout the SubscriptionReconciler service syncs the workspace's local plan against the gateway. If a webhook arrives late or fails entirely, the next page load fixes the discrepancy — so quotas are never enforced against a stale subscription state.
Note. Conversation quotas are per workspace, not per agent — running more agents doesn't multiply your limit.