Use the TermsAndConditions amendment to change the terms and conditions of a subscription. The method that you use depends on the version of the Zuora API that you are using.
In version 73.0 and greater, the InitialTerm field on the Amendment object is deprecated, you must use the CurrentTerm field instead. The CurrentTermPeriodType and RenewalTermPeriodType fields are supported to define the period type of the subscription current term and renewal term.
Set the following fields to create an amendment to change the terms and conditions of a subscription:
Set CurrentTerm to the length of the current subscription term.
Set CurrentTermPeriodType to the period type of the current subscription term.
Set RenewalTerm to the length of the renewal term.
Set RenewalTermPeriodType to the period type of the renewal term.
<api:amend> <api:requests> <api:Amendments> <!-- Set the dates and metadata for your amendments --> <obj:AutoRenew>true</obj:AutoRenew> <obj:ContractEffectiveDate>2020-01-01</obj:ContractEffectiveDate> <obj:CustomerAcceptanceDate>2020-01-01</obj:CustomerAcceptanceDate> <obj:Description>changing terms and conditions</obj:Description> <obj:EffectiveDate>2020-01-01</obj:EffectiveDate> <!-- Change initial and renewal terms if desired --> <obj:CurrentTerm>13</obj:CurrentTerm> <obj:CurrentTermPeriodType>Day</obj:CurrentTermPeriodType> <obj:Name>changing terms and conditions</obj:Name> <obj:RenewalTerm>3</obj:RenewalTerm> <obj:RenewalTermPeriodType>Week</obj:RenewalTermPeriodType> <obj:ServiceActivationDate>2020-01-01</obj:ServiceActivationDate> <obj:Status>Completed</obj:Status> <obj:SubscriptionId>402892c42ce3ede0012ce457e74b050e</obj:SubscriptionId> <obj:TermStartDate>2020-01-02</obj:TermStartDate> <obj:Type>TermsAndConditions</obj:Type> </api:Amendments> <api:PreviewOptions> <api:EnablePreviewMode>true</api:EnablePreviewMode> </api:PreviewOptions> </api:requests> </api:amend>
From version 29.0, you can use the amend() call to create amendments. Similar to the subscribe() call, the amend() call allows you to generate an invoice and capture payment electronically when amending subscriptions. The call also allows you to preview the invoices before amending the subscription.
Call amend(), passing it the following information:
<api:amend> <api:requests> <api:Amendments> <!-- Set the dates and metadata for your amendments --> <obj:AutoRenew>true</obj:AutoRenew> <obj:ContractEffectiveDate>2010-01-01</obj:ContractEffectiveDate> <obj:CustomerAcceptanceDate>2010-01-01</obj:CustomerAcceptanceDate> <obj:Description>changing terms and conditions</obj:Description> <obj:EffectiveDate>2010-01-01</obj:EffectiveDate> <!-- Change initial and renewal terms if desired --> <obj:InitialTerm>13</obj:InitialTerm> <obj:Name>changing terms and conditions</obj:Name> <obj:RenewalTerm>3</obj:RenewalTerm> <obj:ServiceActivationDate>2010-01-01</obj:ServiceActivationDate> <obj:Status>Completed</obj:Status> <obj:SubscriptionId>402892c42ce3ede0012ce457e74b050e</obj:SubscriptionId> <obj:TermStartDate>2010-01-02</obj:TermStartDate> <obj:Type>TermsAndConditions</obj:Type> </api:Amendments> <api:PreviewOptions> <api:EnablePreviewMode>true</api:EnablePreviewMode> </api:PreviewOptions> </api:requests> </api:amend>
In version 25.0, Zuora added functionality to amend subscriptions in a single create() call. Zuora recommends that all Z-Commerce API users use the new amend() functionality. However, if you use create() and want to amend the subscription in a single call, you must set the CallOptions in your SOAP header and set useSingleTransaction to true.
Set the following fields to create an amendment to change the terms and conditions of a subscription:
<ns1:create xmlns:ns1="http://api.zuora.com/"> <ns1:zObjects xmlns:ns2="http://object.api.zuora.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:Amendment"> <ns2:Id xsi:nil="1" /> <ns2:ContractEffectiveDate>2010-07-21</ns2:ContractEffectiveDate> <ns2:CustomerAcceptanceDate>2010-07-21</ns2:CustomerAcceptanceDate> <ns2:EffectiveDate>2010-07-21</ns2:EffectiveDate> <ns2:Name>test_amend1279686293769</ns2:Name> <ns2:ServiceActivationDate>2010-07-21</ns2:ServiceActivationDate> <ns2:SubscriptionId>402892ca29f33da70129f33f35fb00ac</ns2:SubscriptionId> <ns2:Type>TermsAndConditions</ns2:Type> <ns2:TermCommitment>InitialAndRenewalTerm</ns2:TermCommitment> <ns2:TermStartDate>2010-07-21</ns2:TermStartDate> <ns2:RenewalTerm>6</ns2:RenewalTerm> <ns2:InitialTerm>12</ns2:InitialTerm> <ns2:AutoRenew>true</ns2:AutoRenew> </ns1:zObjects> </ns1:create>
To change the terms and conditions of a subscription:
Use the create() call to create the new amendment. Set the following fields:
The SOAP call envelope payload should look like the following:
<ns1:create> <ns1:zObjects xsi:type="ns2:Amendment"> <ns2:EffectiveDate>2009-08-01</ns2:EffectiveDate> <ns2:InitialTerm>12</ns2:InitialTerm> <ns2:Name>Change Terms</ns2:Name> <ns2:RenewalTerm>12</ns2:RenewalTerm> <ns2:Status>Draft</ns2:Status> <ns2:SubscriptionId>4028e69922ece21e0122f1de76654501</ns2:SubscriptionId> <ns2:TermStartDate>2009-05-04</ns2:TermStartDate> <ns2:Type>TermsAndConditions</ns2:Type> </ns1:zObjects> </ns1:create>
Set the following fields:
The SOAP call envelope payload should look like the following:
<ns1:update> <ns1:zObjects xsi:type="ns2:Amendment"> <ns2:Id>4028e69922ece21e0122f734f76777d4</ns2:Id> <ns2:ContractEffectiveDate>2009-08-01</ns2:ContractEffectiveDate> <ns2:Status>Completed</ns2:Status> </ns1:zObjects> </ns1:update>