credits.expired
Unused plan credits expired at the period reset.
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
The subscription ID.
The customer ID. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.
The unused plan credits that were discarded.
{
"event": "credits.expired",
"timestamp": "2026-06-01T00:00:05.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-06-10",
"data": {
"subscriptionId": "sub_1a2b3c4d",
"customerId": "user_123",
"expiredCredits": 120
}
}When this fires
Plan credits expire at the end of each billing period: the period reset discards whatever remained and grants the new period's credits (which fires credits.granted). This event reports the discarded amount. Purchased credits never expire and are not affected.
It only fires when there was something to discard — a customer who used all plan credits gets no credits.expired.
Use it for end-of-period usage summaries ("you left 120 credits on the table").
How is this guide?