Billing
Plans Updated
Fired when a customer’s plans change — activated, scheduled, updated, or expired. Each event carries a plan_changes array describing what happened and a tags array (e.g. trial_ended, phase_changed) describing why.
WEBHOOK
Payload Fields
The ID of the customer whose plans changed.
The ID of the entity, if the changes are scoped to a specific entity.
The plans that were activated, scheduled, updated, or expired.
Reason tags describing why this event fired (e.g. ‘trial_ended’, ‘phase_changed’). Always present; empty when no specific reason applies.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
The webhook event type.
Allowed value:
"billing.updated"Example:
{
"object": "billing.updated",
"customer_id": "cus_123",
"plan_changes": [
{
"action": "activated",
"subscription": {
"plan_id": "pro",
"status": "active",
"past_due": false,
"started_at": 1779000000000,
"canceled_at": null,
"expires_at": null,
"trial_ends_at": null,
"current_period_start": 1779000000000,
"current_period_end": 1781592000000
},
"previous_attributes": null,
"item_changes": []
},
{
"action": "expired",
"subscription": {
"plan_id": "free",
"status": "expired",
"past_due": false,
"started_at": 1776000000000,
"canceled_at": 1779000000000,
"expires_at": 1779000000000,
"trial_ends_at": null,
"current_period_start": null,
"current_period_end": null
},
"previous_attributes": { "status": "active" },
"item_changes": []
}
],
"tags": []
}Response
200
Webhook received successfully.