Skip to content
All features
commercepackages/commerce/metering

metering package

Usage metering on ClickHouse — sub-second ingestion, per-tenant quota lookup, ready to feed Stripe metered billing or in-product limits.

Open docs
Stability
Stable
Scope
Tenant-scoped
Boundary
packages/commerce/metering
@nebutra/metering
tenant_org_abc123Prolive
  • API calls

    4,521

    of 10,000

    x
  • AI tokens

    847K

    of 2M

    x
  • Storage

    12 GB

    of 50 GB

    x
  • Active users

    38

    of 100

    x
MeterPeriod usageCap% usedPricing tier
api_calls4,52110,000
x
45%
Pro · $0.001/call
ai_tokens847,0002,000,000
x
42%
Pro · metered
storage_bytes12,000,000,00050,000,000,000
x
24%
Pro · 50 GB incl.
active_seats38100
x
38%
Pro · seat-based
Aggregated in ClickHouse · realtime · ≤ 800ms p99
Usagemetering.ts
typescript
metering.ts
1import { getMetering, createUsageEvent, COMMON_METERS } from "@nebutra/metering";
2
3const metering = await getMetering();
4
5await metering.ingest(
6  createUsageEvent(COMMON_METERS.API_CALLS.id, org.id, 1, {
7    endpoint: "/api/chat",
8    model: "claude-sonnet-4-6",
9  }),
10);
11
12const quota = await metering.getQuota(org.id, "api_calls");
13// → { limit: 10000, used: 4521, remaining: 5479, percentage: 0.4521 }