| Field | Description |
|---|---|
reason | Why the subscription went inactive: END_NO_RENEWAL or TERMINATED. See subscription.inactive. |
inactive_at | The timestamp service entitlement ended. For END_NO_RENEWAL this is the end of the final order’s last covered day (in the order’s timezone); for TERMINATED it is the start of the termination date. |
subscription | The subscription, in the same shape as the REST API’s subscription detail response (GET /api/v2/subscriptions/current) — including customer, contacts, dates, status, and pricing. |
order | The subscription’s final order, in the standard Order webhook shape. |
Example
JSON
{
"reason": "END_NO_RENEWAL",
"inactive_at": "2026-07-22T23:59:59.999999Z",
"subscription_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"subscription": {
"subscription_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"status": "INACTIVE",
"stage": "CLOSED",
"starts_at": "2025-07-23",
"ends_at": "2026-07-22",
"renews_at": "2026-07-23",
"terminates_at": null,
"time_zone": "UTC",
"auto_renews": false,
"billing_frequency": "ANNUALLY",
"transaction_method": "ORDER_FORM",
"currency": "USD",
"payment_terms": 30,
"customer": {
"customer_id": "77fc9165-7eb4-4ded-9480-437864dcba64",
"name": "Example Co.",
"legal_name": "Example Co.",
"external_id": null,
"address": {
"line_1": "123 Address Line 1",
"line_2": "Address Line 2",
"city": "Address City",
"region": "Address Region",
"zip": "00000",
"country": "Address Country"
},
"stripe_customer_id": null,
"tax_id": null,
"subscriptions": []
},
"point_of_contact": {
"person_id": "fc700351-0268-41cf-a0c7-3c5e427d1b47",
"first_name": "BuyerFirstName",
"last_name": "BuyerLastName",
"email": "buyername@buyer.com",
"preferred_name": null,
"role": ""
},
"signatory_user": {
"person_id": "fc700351-0268-41cf-a0c7-3c5e427d1b47",
"first_name": "BuyerFirstName",
"last_name": "BuyerLastName",
"email": "buyername@buyer.com",
"preferred_name": null,
"role": ""
},
"attributed_to": null,
"products": [
{
"name": "Example Product",
"logo_image": null
}
],
"accounts_payable_emails": [],
"metadata": {},
"sub_total": 10000,
"grand_total": 10000,
"grand_total_details": {
"discount": 0,
"applied_discount_coupons": []
},
"billing_schedule": [
{
"starts_at": "2025-07-23T00:00:00Z",
"ends_at": "2026-07-22T23:59:59.999999Z",
"sub_total": 10000,
"grand_total": 10000,
"grand_total_details": {
"discount": 0
}
}
],
"line_items": [
{
"brick_id": "ffffffff-ffff-ffff-ffff-ffffffffffff",
"brick_name": "Seats",
"quantity": 10,
"plan_id": "dddddddd-dddd-dddd-dddd-dddddddddddd",
"plan_name": "Example Plan",
"sub_total": 10000,
"grand_total": 10000,
"grand_total_details": {
"discount": 0
},
"tiers_breakdown": [
{
"quantity": 10,
"unit_price": "1000.00",
"sub_total": "10000.00",
"duration_text": ""
}
],
"pre_commitment_schedule": null
}
]
},
"order": {
"...": "see the Order Webhook Payload page — identical shape"
},
"webhook_run_id": "00000000-0000-0000-0000-000000000000"
}
The
subscription object above is abbreviated — line_items and pricing breakdowns follow the
same structure as the REST API’s subscription detail and estimate responses. The order object is
identical to the Order Webhook Payload.