Skip to content
Oclavex is in private preview, available to selected users. Public signup is blocked. Request access at [email protected].

A subscription changed: provisions, binds, updates or ends the entitlement it anchors.

POST
/api/v1/provision/admin/billing-events/subscription-changed
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" }'

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
externalReference

The subscription, e.g. chargebee:subscription:AzZ9...: the anchor its entitlement is found by.

string
accountExternalReference

The customer it belongs to, e.g. chargebee:customer:16BQ....

string
customerEmail
null | string
customerName
null | string
changeType
Allowed values: Created Updated Deleted Undeleted
status
Allowed values: Unknown Active Trialing PastDue Paused Canceled Incomplete
entitlementOfferKey

The entitlement offer an unknown subscription is provisioned from, when it names no target.

string
entitlementOfferVersion
null | string
planName

The plan the subscription pays for.

null | string
addOnCodes

Non-empty makes this an add-on subscription: it grants these add-ons on the target and never changes its plan.

Array<string>
quantity
integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
startDate
string format: date-time
endDate
null | string format: date-time
isDeleted
boolean
currentPeriodEnd

When the current billing period ends: the subscription’s next renewal. Not its end, which is endDate.

null | string format: date-time
trialEnd

When your trial ends; only while the status is Trialing.

null | string format: date-time
latestInvoicePaid
null | boolean
targetEntitlementId

An entitlement of yours the subscription binds to instead of provisioning one.

null | string format: uuid
originReference

The record the entitlement is created from, when your system is its system of record.

null | string
policy
One of:
null
wasPastDue
boolean
sourceEventId

Your id for this change. A repeat of the last one applied changes nothing.

null | string
observedAt

When your system observed this state. Anything observed before the last one applied changes nothing.

null | string format: date-time

Accepted

The event was accepted and published; its consumer applies it shortly after.

object
eventId
required
string format: uuid

Bad Request

object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string

Unauthorized

object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string

Forbidden

object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string

Not Found

object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string

Conflict

object
type
null | string
title
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
detail
null | string
instance
null | string