A subscription changed: provisions, binds, updates or ends the entitlement it anchors.
const url = 'https://example.com/api/v1/provision/admin/billing-events/subscription-changed';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"externalReference":"example","accountExternalReference":"example","customerEmail":"example","customerName":"example","changeType":"Created","status":"Unknown","entitlementOfferKey":"example","entitlementOfferVersion":"example","planName":"example","addOnCodes":["example"],"quantity":1,"startDate":"2026-04-15T12:00:00Z","endDate":"2026-04-15T12:00:00Z","isDeleted":true,"currentPeriodEnd":"2026-04-15T12:00:00Z","trialEnd":"2026-04-15T12:00:00Z","latestInvoicePaid":true,"targetEntitlementId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","originReference":"example","policy":{"requirePaidInvoice":true,"pastDue":"Pause","canceled":"Disable","canceledPlanName":"example","applyPlanOnUpdate":true},"wasPastDue":true,"sourceEventId":"example","observedAt":"2026-04-15T12:00:00Z"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/provision/admin/billing-events/subscription-changed \ --header 'Content-Type: application/json' \ --data '{ "externalReference": "example", "accountExternalReference": "example", "customerEmail": "example", "customerName": "example", "changeType": "Created", "status": "Unknown", "entitlementOfferKey": "example", "entitlementOfferVersion": "example", "planName": "example", "addOnCodes": [ "example" ], "quantity": 1, "startDate": "2026-04-15T12:00:00Z", "endDate": "2026-04-15T12:00:00Z", "isDeleted": true, "currentPeriodEnd": "2026-04-15T12:00:00Z", "trialEnd": "2026-04-15T12:00:00Z", "latestInvoicePaid": true, "targetEntitlementId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "originReference": "example", "policy": { "requirePaidInvoice": true, "pastDue": "Pause", "canceled": "Disable", "canceledPlanName": "example", "applyPlanOnUpdate": true }, "wasPastDue": true, "sourceEventId": "example", "observedAt": "2026-04-15T12:00:00Z" }'Request Bodyrequired
Section titled “Request Bodyrequired”A subscription as your billing system sees it — the event a built-in connector publishes, posted by
yours. Every reference is scheme:kind:id, the scheme naming your billing system.
object
The subscription, e.g. chargebee:subscription:AzZ9...: the anchor its entitlement is found by.
The customer it belongs to, e.g. chargebee:customer:16BQ....
The entitlement offer an unknown subscription is provisioned from, when it names no target.
The plan the subscription pays for.
Non-empty makes this an add-on subscription: it grants these add-ons on the target and never changes its plan.
When the current billing period ends: the subscription’s next renewal. Not its end, which is endDate.
When your trial ends; only while the status is Trialing.
An entitlement of yours the subscription binds to instead of provisioning one.
The record the entitlement is created from, when your system is its system of record.
Your id for this change. A repeat of the last one applied changes nothing.
When your system observed this state. Anything observed before the last one applied changes nothing.
A subscription as your billing system sees it — the event a built-in connector publishes, posted by
yours. Every reference is scheme:kind:id, the scheme naming your billing system.
object
The subscription, e.g. chargebee:subscription:AzZ9...: the anchor its entitlement is found by.
The customer it belongs to, e.g. chargebee:customer:16BQ....
The entitlement offer an unknown subscription is provisioned from, when it names no target.
The plan the subscription pays for.
Non-empty makes this an add-on subscription: it grants these add-ons on the target and never changes its plan.
When the current billing period ends: the subscription’s next renewal. Not its end, which is endDate.
When your trial ends; only while the status is Trialing.
An entitlement of yours the subscription binds to instead of provisioning one.
The record the entitlement is created from, when your system is its system of record.
Your id for this change. A repeat of the last one applied changes nothing.
When your system observed this state. Anything observed before the last one applied changes nothing.
A subscription as your billing system sees it — the event a built-in connector publishes, posted by
yours. Every reference is scheme:kind:id, the scheme naming your billing system.
object
The subscription, e.g. chargebee:subscription:AzZ9...: the anchor its entitlement is found by.
The customer it belongs to, e.g. chargebee:customer:16BQ....
The entitlement offer an unknown subscription is provisioned from, when it names no target.
The plan the subscription pays for.
Non-empty makes this an add-on subscription: it grants these add-ons on the target and never changes its plan.
When the current billing period ends: the subscription’s next renewal. Not its end, which is endDate.
When your trial ends; only while the status is Trialing.
An entitlement of yours the subscription binds to instead of provisioning one.
The record the entitlement is created from, when your system is its system of record.
Your id for this change. A repeat of the last one applied changes nothing.
When your system observed this state. Anything observed before the last one applied changes nothing.
Responses
Section titled “Responses”Accepted
The event was accepted and published; its consumer applies it shortly after.
object
The event was accepted and published; its consumer applies it shortly after.
object
Examplegenerated
{ "eventId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}The event was accepted and published; its consumer applies it shortly after.
object
Examplegenerated
{ "eventId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}Bad Request
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Unauthorized
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Forbidden
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Not Found
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Conflict
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}