credits.granted
Non-purchase credits were granted to a subscription.
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 number of credits granted.
Why the credits were granted: period_reset or manual_adjustment.
{
"event": "credits.granted",
"timestamp": "2026-06-01T00:00:05.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-06-10",
"data": {
"subscriptionId": "sub_1a2b3c4d",
"customerId": "user_123",
"credits": 500,
"reason": "period_reset"
}
}When this fires
Plan-included credits are granted at the start of every billing period (reason: "period_reset"), and manual adjustments from the dashboard grant purchased credits (reason: "manual_adjustment"). Credit pack purchases are a separate flow and fire credits.purchased instead.
The idempotency key is derived from the billing operation that granted the credits, so engine retries never send a duplicate.
Use it to reset in-app usage meters at the start of a period or to confirm a support-driven credit grant reached the customer.
How is this guide?