{
"messageId": "d5093989-e8e7-429a-b13c-f90ffdf5ee50",
"traceId": "g2ab6814-e858-411d-9482-03a26cdd03b5",
"timestamp": "2026-01-21T14:50:00.000Z",
"type": "credit_grant.balance.low",
"customer": {
"id": "customer-b2b94b",
"name": "Acme Corp",
"billingId": "cus_Tpi55JrRDSuEvs"
},
"creditCurrency": {
"id": "cred-type-ai-tokens",
"name": "AI Tokens",
"description": "Tokens used for AI features",
"unitLabel": {
"singular": "token",
"plural": "tokens"
}
},
"grant": {
"id": "grant-7c33e7b0",
"entityId": "9cb9dcb3-7848-4d34-82f8-896281938ac4",
"displayName": "Q1 Promo Credits",
"grantType": "PROMO",
"priority": 1,
"effectiveAt": "2026-01-01T00:00:00.000Z",
"expireAt": "2026-03-31T23:59:59.000Z",
"amount": 1000,
"remainingBalance": 200,
"cost": null
},
"remainingBalancePercentage": 20,
"thresholdPercentage": 20,
"consumedPercentage": 80,
"eventId": "2728e820-98c9-4ffa-b4e0-748200a03dd1"
}Credit grant balance low
Fired when a specific grant’s remaining balance falls below a configured threshold. Thresholds are configurable, allowing multiple alert levels (e.g., 80%, 50%, 20%). Useful for targeted alerts, “use-it-or-lose-it” nudges when expiry is near, or auto top-up logic at the grant level.
{
"messageId": "d5093989-e8e7-429a-b13c-f90ffdf5ee50",
"traceId": "g2ab6814-e858-411d-9482-03a26cdd03b5",
"timestamp": "2026-01-21T14:50:00.000Z",
"type": "credit_grant.balance.low",
"customer": {
"id": "customer-b2b94b",
"name": "Acme Corp",
"billingId": "cus_Tpi55JrRDSuEvs"
},
"creditCurrency": {
"id": "cred-type-ai-tokens",
"name": "AI Tokens",
"description": "Tokens used for AI features",
"unitLabel": {
"singular": "token",
"plural": "tokens"
}
},
"grant": {
"id": "grant-7c33e7b0",
"entityId": "9cb9dcb3-7848-4d34-82f8-896281938ac4",
"displayName": "Q1 Promo Credits",
"grantType": "PROMO",
"priority": 1,
"effectiveAt": "2026-01-01T00:00:00.000Z",
"expireAt": "2026-03-31T23:59:59.000Z",
"amount": 1000,
"remainingBalance": 200,
"cost": null
},
"remainingBalancePercentage": 20,
"thresholdPercentage": 20,
"consumedPercentage": 80,
"eventId": "2728e820-98c9-4ffa-b4e0-748200a03dd1"
}Body
credit_grant.balance.low Unique webhook message ID for idempotency.
Time the event was generated.
Customer who owns the grant.
Show child attributes
Show child attributes
Credit currency (type) for the grant.
Show child attributes
Show child attributes
The credit grant that crossed the threshold.
Show child attributes
Show child attributes
Remaining balance as a percentage of original grant amount (0–100).
The configured threshold percentage that was crossed (e.g., 80).
How much of the grant has been consumed (0–100).
Correlation ID for tracing.
Unique ID of the underlying event that triggered this webhook.
