Update a subscription
Overview
Change specific details about a subscription. Use the updateSubscription method to change specific details about a subscription.
Parameters
Parameters | Type/Description | |
---|---|---|
sessionID |
Required (string) |
|
|
Session identifier, the output of the Login method. Include sessionID into all your requests. 2Checkout throws an exception if the values are incorrect. The sessionID expires in 10 minutes. |
|
Subscription |
Required (Object) |
|
|
You need to include the entire Subscription object keeping its structure unchanged (retrieve it using getSubscription) but you can update only specific parameters enumerated below. |
|
|
EndUser |
Object |
|
|
|
|
ExpirationDate |
String |
|
|
Subscription expiration date - If you changed the time zone for the 2Checkout API by editing system settings under Account settings, then 2Checkout calculates the ExpirationDate according to your custom configuration. Note: The default 2Checkout API time zone is GMT+02:00. You cannot set an expiration date from the past. |
|
SubscriptionEnabled |
Boolean |
|
|
Possible values: TRUE/FALSE |
|
RecurringEnabled |
Boolean |
|
|
Possible values: TRUE/FALSE |
|
ExternalCustomerReference |
String |
|
|
Unique customer alphanumeric (string) identifiers that you control. Use this to move a subscription from under a customer to another customer entity. 2Checkout moves subscription under the customer for which you provide the External customer reference during the subscription update process. View example. |
|
ProductId |
Int |
|
|
System-generated unique product ID. Needs to be the ID of an existing product in the 2Checkout system created under your account. The product ID governs the product to which the subscription is associated with. Product types must match Regular - Regular or Bundle - Bundle. IDs must identify products with the renewal system enabled (max billing cycle 36 months). |
|
ProductName |
String |
|
|
The name of the product for identifier used under ProductID. |
|
ProductQuantity |
Int |
|
|
Ordered quantity. |
|
PriceOptionCodes |
Array |
|
|
Array of product options codes. Pricing options codes are case sensitive. To impact the renewal price, the PriceOptionsCodes need to belong to price options of pricing configurations used for the product with which the subscription is associated. |
ChurnReasons | Array | |
This payload can be sent only when the Subscription object (from above) will have RecurringEnabled set as TRUE. Possible values for this field are: CHURN_REASON_ENABLED_BY_MISTAKE CHURN_REASON_PREFER_MANUAL CHURN_REASON_ALREADY_RENEWED CHURN_REASON_DONT_NEED CHURN_REASON_WANT_PAUSE CHURN_REASON_COVID CHURN_REASON_HIGH_PRICE CHURN_REASON_NOT_SATISFIED_SUPPORT CHURN_REASON_EXTRAORDINARY CHURN_REASON_OTHER |
||
ChurnReasonOther | String | |
This field should have a value only if the ChurnReasons has the CHURN_REASON_EXTRAORDINARY or CHURN_REASON_OTHER values |
All other parameters of the Subscription object are non-editable. The 2Checkout system uses the updated subscription information for:
|
Response
Parameters | Type/Description |
---|---|
Boolean |
true or false depending on whether the changes were successful or not. |
Request
<?php
require ('PATH_TO_AUTH');
$subscriptionReferenceTest = 'YOUR_SUBSCRIPTION_REFERENCE';
try{
$retrievedSubscription = $client->getSubscription($sessionID, $subscriptionReferenceTest);
}
catch (SoapFault $e) {
echo "Retrieved Subscription: " . $e->getMessage();
exit;
}
var_dump ($updatedSubscription);
$retrievedSubscription->RecurringEnabled = false;
$retrievedSubscription->SubscriptionEnabled = false;
$retrievedSubscription->ExpirationDate = '2026-12-12';
$churnReasons = ['CHURN_REASON_OTHER'];
$churnReasonOther = 'I refuse to continue the subscription';
try {
$updatedSubscription = $client->updateSubscription($sessionID, $retrievedSubscription);
}
catch (SoapFault $e) {
echo "updatedSubscription: " . $e->getMessage();
exit;
}
var_dump("updatedSubscription", $updatedSubscription);
?>