Skip to content

Meter

The Meter resource lets you create and manage Stripe Billing Meters for your Stripe account. Meters define how usage of a product is measured and aggregated for billing purposes.

Minimal Example

Create a basic meter to track API calls:

ts
import { Meter } from "alchemy/stripe";

const apiCallMeter = await Meter("apiUsageMeter", {
  displayName: "API Call Usage",
  eventName: "api.call.recorded",
  defaultAggregation: {
    formula: "sum",
  },
  customerMapping: {
    eventPayloadKey: "customer_id",
    type: "by_id",
  },
  valueSettings: {
    eventPayloadKey: "count",
  },
});

Last-Value Meter

Create a meter that captures the last reported value during a billing period:

ts
import { Meter } from "alchemy/stripe";

const storageMeter = await Meter("dataStorageMeter", {
  displayName: "Data Storage GB",
  eventName: "data.storage.reported",
  defaultAggregation: {
    formula: "last_during_period",
  },
  customerMapping: {
    eventPayloadKey: "user_stripe_id",
    type: "by_id",
  },
  valueSettings: {
    eventPayloadKey: "gb_used",
  },
});

Inactive Meter

Create a meter that is initially inactive:

ts
import { Meter } from "alchemy/stripe";

const inactiveFeatureMeter = await Meter("featureUsageMeter", {
  displayName: "Feature Usage",
  eventName: "feature.usage.recorded",
  status: "inactive",
  defaultAggregation: {
    formula: "sum",
  },
  customerMapping: {
    eventPayloadKey: "customer_id",
    type: "by_id",
  },
  valueSettings: {
    eventPayloadKey: "feature_count",
  },
});