Skip to main content
WEBHOOK
billing.updated
{
  "type": "billing.updated",
  "data": {
    "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": []
  }
}

Payload Fields

object
string
required
customer_id
string
required
The ID of the customer whose plans changed.
entity_id
string | null
The ID of the entity, if the changes are scoped to a specific entity.
plan_changes
object[]
required
The plans that were activated, scheduled, updated, or expired.
tags
string[]
required
Reason tags describing why this event fired (e.g. ‘trial_ended’, ‘phase_changed’). Always present; empty when no specific reason applies.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
type
string
required

The webhook event type.

Allowed value: "billing.updated"
data
object
required
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.