POST /subscriptions/{subscription-id}/change_term_end
Use this endpoint to adjust when a subscription's current term or trial ends without altering the plan or billing frequency. It is helpful when you need to align renewals to a specific calendar date or extend a trial. Future renewals will follow the new date, keeping the subscription cadence intact.
Prerequisites & Constraints {#PreRequisites}
Subscriptions must be in one of the following status
values: in_trial
, active
, non_renewing
.
Impacts {#ImpactsOfTheOperation}
Subscription
Based on the subscription's status
, the following updates are made:
- If the status is
in_trial
, thetrial_end
is set to the new date. - If the status is
active
, thecurrent_term_end
is set to the new date. - If the status is
non_renewing
, the upcoming cancellation date is set to the new date.
Invoices and Credit Notes
The API can generate unbilled charges, invoice, or credit notes. You can control the behaviour usingprorate
andinvoice_immediately
parameters. To preview invoices, credits, and dates, use the Change term end estimate endpoint.
Advance Charges
If there are advance charges, then credit notes are issued for the unused portion of the service period.
Scheduled Pause
If the subscription is scheduled to pause at the end of the current term, the pause date is updated to match the new term end date.
Ramps
If subscription ramps are present, this operation moves them to thedraft
state. Update and reschedule the ramps as needed to keep them in sync.
Implementation Notes {#ImplNotes}
The request fails with invalid_state
if the subscription is not in one of the trial
, active
, or non_renewing
states. Validate the status before invoking this API.
Servers
- {protocol}://{site}.{environment}:{port}/api/v2
- {protocol}://{site}-test.{environment}:{port}/api/v2
Path parameters
Name | Type | Required | Description |
---|---|---|---|
subscription-id |
String | Yes |
Request headers
Name | Type | Required | Description |
---|---|---|---|
chargebee-request-origin-device |
String | No |
The device from which the customer has made the request |
Content-Type |
String | Yes |
The media type of the request body.
Default value: "application/x-www-form-urlencoded" |
chargebee-event-webhook |
String | No |
skip only webhooks Possible values:
|
chargebee-business-entity-id |
String | No |
If the site has multiple business entities, you can use this custom HTTP header to specify the business entity for which Chargebee should perform the operation. |
chargebee-event-actions |
String | No |
skip all actions to be done on the events Possible values:
|
chargebee-request-origin-user |
String | No |
The email address of your customer/user. Use this when the email address has only ASCII characters. |
chargebee-request-origin-ip |
String | No |
The IP address of the customer where the request originated |
chargebee-request-origin-user-encoded |
String | No |
The Base64-encoded email address of your customer/user. Use this if the email address has UTF-8 characters. When this header is provided, the header |
chargebee-event-email |
String | No |
skip only emails Possible values:
|
Request body fields
Name | Type | Required | Description |
---|---|---|---|
prorate |
Boolean | No |
Applicable for active / non_renewing subscriptions. If specified as true prorated charges / credits will be added during this operation. |
invoice_immediately |
Boolean | No |
If there are charges raised immediately for the subscription, this parameter specifies whether those charges are to be invoiced immediately or added to unbilled charges. The default value is as per the site settings. |
term_ends_at |
Integer | Yes |
The time at which the current term should end for this subscription. The value must be a date in the future, i.e. later than current time. The value must not be the same as next_billing_at. |
How to start integrating
- Add HTTP Task to your workflow definition.
- Search for the API you want to integrate with and click on the name.
- This loads the API reference documentation and prepares the Http request settings.
- Click Test request to test run your request to the API and see the API's response.