Threshold
NewBilling-agnostic

The runtime layer for SaaS packaging

Billing tells you who paid. Threshold tells your app what each customer can access, use, and spend from typed, versioned plan snapshots.

Join early access
Runtime contract decisions

Plan logic should have one source of truth.

Define contracts once, publish stable snapshots, and let your backend ask one question: can this entity access, consume, spend, or hold this product state?

Usage + limits

Included usage, resets, and denial reasons stay consistent

Apply included quota first, enforce the reset window, then deny or fall back to balance spend when your app allows it.

Plans

Plans become runtime contracts

Package gates, limits, balances, add-ons, and custom terms into versioned snapshots that survive pricing changes.

Entities

Check people, teams, and workspaces the same way

Let your product keep RBAC and audit trails while Threshold owns the contract state for each entity.

Resources

Resources organize product-state counters

Model members, projects, storage, documents, API keys, imports, domains, and other capacity surfaces without owning app objects.

What it does

Replace entitlement glue, not your billing stack

Threshold is billing agnostic. Use Stripe, Paddle, Orb, Chargebee, custom invoices, or sales-led contracts. Threshold only answers what the product should allow at runtime.

Plan packaging

Versioned contracts for plans, add-ons, limits, grants, custom terms, and safe rollout across environments.

Replaces
StiggSchematic

Runtime entitlements

One backend decision API for feature gates, usage checks, capacity caps, denial reasons, and plan snapshots.

Replaces
Stripe EntitlementsStiggSchematic

Usage and credits

Usage meters, credit balances, spend targets, overages, and allowance-then-credit fallback without owning billing.

Replaces
SchematicStigg
Monetization models

Model pricing like product, then bill anywhere

Turn flat subscriptions, seat packs, usage meters, overages, credit burndown, and hybrid plans into runtime decisions without adding another billing vendor lock-in layer.

Flat fee

Good, better, best plans with gates, limits, add-ons, and custom terms.

Seats

Per-member capacity, workspace caps, and team ownership scopes.

Usage-based

Meter tokens, API calls, emails, imports, workflow runs, or storage.

Overages

Allow included quota first, then charge or deny based on your app policy.

Credit burndown

Spend flat balances against plan-defined targets like images or model runs.

Hybrid

Try allowance, then optionally fall back to credits when the product allows it.

Balances

Spend balances on named product actions

Define spend targets like image generation, model runs, campaign launches, or video rendering. Threshold prices the action and updates the shared balance.

entityuser:maya.chen
spend targetimage.generate
amount340left4,660time09:12
entityworkspace:acme
spend targetcampaign.launch
amount920left1,760time10:04
entityworkspace:delta
spend targetstorage.upload
amount260left680time11:40
entityuser:maya.chen
spend targetimage.generate
amount340left4,660time09:12
entityworkspace:acme
spend targetcampaign.launch
amount920left1,760time10:04
entityworkspace:delta
spend targetstorage.upload
amount260left680time11:40
entityworkspace:acme
spend targetvideo.render
amount1,200left3,460time09:18
entityuser:nora.patel
spend targetreport.export
amount180left1,580time10:22
entityteam:ops
spend targetworkflow.run
amount680left0time12:15
entityworkspace:acme
spend targetvideo.render
amount1,200left3,460time09:18
entityuser:nora.patel
spend targetreport.export
amount180left1,580time10:22
entityteam:ops
spend targetworkflow.run
amount680left0time12:15
entityteam:growth
spend targetmodel.run
amount780left2,680time09:31
entityorg:northstar
spend targetemail.batch
amount640left940time11:06
entityuser:maya.chen
spend targetimage.generate
amount340left4,660time09:12
entityteam:growth
spend targetmodel.run
amount780left2,680time09:31
entityorg:northstar
spend targetemail.batch
amount640left940time11:06
entityuser:maya.chen
spend targetimage.generate
amount340left4,660time09:12
Typed SDK

Backend checks stay typed

Codegen turns plan definitions into backend-safe checks for entitlements, usage, balances, resources, and add-ons.

Backend check
LimitCheck org caps and member caps from one scoped request.
const decision = await threshold.limits.can({
  scope: scope.forMember({ groupId, memberId }),
  entitlement: "ai:tokens",
  amount: 2_000,
})
Generated type safety

Entitlements become editor suggestions

Plan definitions generate typed entitlement keys, balance targets, and grant values so product checks autocomplete before runtime.

type-safety.ts
import { type ThresholdTypes = "allowed_models" | "sso"ThresholdTypes } from "./threshold.gen.ts";

const const bar: ThresholdTypesbar: type ThresholdTypes = "allowed_models" | "sso"ThresholdTypes = "
  • allowed_models
  • sso
;
Bring your own billing

Get runtime plan logic out of billing glue

Join early access for the backend-first runtime for limits, balances, grants, spend targets, and plan decisions.

Temporary landing page. Product in active development.