Skip to content

Create a Meter Event with synchronous validation ​

Creates a meter event. Events are validated synchronously, but are processed asynchronously. Supports up to 1,000 events per second in livemode. For higher rate-limits, please use meter event streams instead.

Parameters ​

  • event_name (string, required) The name of the meter event. Corresponds with the event_name field on a meter.

  • payload (map, required) The payload of the event. This must contain the fields corresponding to a meter’s customer_mapping.event_payload_key (default is stripe_customer_id) and value_settings.event_payload_key (default is value). Read more about the payload.

  • identifier (string, optional) A unique identifier for the event. If not provided, one will be generated. We recommend using a globally unique identifier for this. We’ll enforce uniqueness within a rolling 24 hour period.

  • timestamp (timestamp, optional) The time of the event. Must be within the past 35 calendar days or up to 5 minutes in the future. Defaults to current timestamp if not specified.

Returns ​

Response attributes ​

  • object (string, value is "v2.billing.meter_event") String representing the object’s type. Objects of the same type share the same value of the object field.

  • created (timestamp) The creation time of this meter event.

  • event_name (string) The name of the meter event. Corresponds with the event_name field on a meter.

  • identifier (string) A unique identifier for the event. If not provided, one will be generated. We recommend using a globally unique identifier for this. We’ll enforce uniqueness within a rolling 24 hour period.

  • livemode (boolean) Has the value true if the object exists in live mode or the value false if the object exists in test mode.

  • payload (map) The payload of the event. This must contain the fields corresponding to a meter’s customer_mapping.event_payload_key (default is stripe_customer_id) and value_settings.event_payload_key (default is value). Read more about the payload…

  • timestamp (timestamp) The time of the event. Must be within the past 35 calendar days or up to 5 minutes in the future. Defaults to current timestamp if not specified.

Error Codes ​

HTTP status codeCodeDescription
400archived_meterThe meter must be Active to submit events.
400duplicate_meter_eventA meter event with a duplicate identifier has already been submitted.
400no_meterA meter must exist to submit events.
400payload_invalid_valueThe value must be a positive integer.
400payload_no_customer_definedThe payload must have a reference to the customer.
400payload_no_value_definedThe payload must have a value.
409too_many_concurrent_requestsCannot create multiple usage events for the same customer, meter concurrently.
curl
curl -X POST https://api.stripe.com/v2/billing/meter_events \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-04-22.dahlia" \
  --json '{
    "identifier": "idmp_12345678",
    "event_name": "ai_search_api",
    "timestamp": "2024-06-01T12:00:00.000Z",
    "payload": {
        "stripe_customer_id": "cus_12345678",
        "value": "25"
    }
  }'

Response ​

json
{
  "object": "v2.billing.meter_event",
  "created": "2024-06-01T12:10:00.000Z",
  "livemode": false,
  "identifier": "idmp_12345678",
  "event_name": "ai_search_api",
  "timestamp": "2024-06-01T12:00:00.000Z",
  "payload": {
    "stripe_customer_id": "cus_12345678",
    "value": "25"
  }
}

Stripe API Reference - Self-contained docs reference, refreshed 2026-05-18