Delta Total Contract Value
Delta Total Contract Value (DTCV) is the value change in the total contract value (TCV) amount between the latest TCV and the previous TCV after a subscription amendment. Zuora only returns the value of DTCV from the Zuora REST and SOAP APIs.
As TCV does not match the total invoice amounts that are billed for charges over the subscription term and DTCV is calculated based on TCV, DTCV does not match the total invoice amounts, either. See Total Contract Value for information.
DTCV Calculation
DTCV calculation is based on the charge segment TCVs. Zuora calculates TCV for every charge segment of the one-time and recurring rate plan charges. To get the segment TCVs in a charge:
- SOAP API: Use the query() call on the RatePlanCharge object.
- REST API: Use Get subscriptions by key or Get subscriptions by account with the
charge-detail
request parameter.
See Segmented rate plan charges for more information.
If an amendment does not affect a charge segment, the segment keeps the previous DTCV regardless of the base calculation logic.
The value of the DTCV depends on the term setting:
- If the subscription does not expire (an Evergreen subscription), DTCV is null.
- If the subscription expires after a period (a Termed subscription), follow the functions below to calculate TCV:
DTCV_of_a_Charge = Sum ( DTCV_of_Charge_Segments )
DTCV_of_a_Charge_Segment = Latest_TCV_of_the_Segment - Previous_TCV_of_the_Segment
For more information about TCV, see Total Contract Value.
Examples of DTCV Calculation
The following examples introduce how to calculate DTCV for one-time and recurring charges.
Example of a One-time Charge
Suppose your customer subscribes to your one-time charge:
- Charge model: Flat Fee Pricing
- Price: $100
- Charge Effective Start Date: January 1
In this example, only one charge segment in the newly created subscription.
DTCV_of_charge_segment_1 = Latest_TCV_of_segment_1 - 0 = 100
DTCV_of_charge = 100
Now you create a Remove Product amendment to remove the one-time charge from the subscription. The amendment effective date is on January 1.
DTCV_of_charge_segment_1 = Latest_TCV_of_segment_1 - Previous_TCV_of_segment_1 = 0 - 100 = -100
DTCV_of_charge = -100
Example of a Recurring Charge
Suppose your customer subscribes to your recurring charge:
- Charge Model: Flat Fee Pricing
- Price: $100
- ListPriceBase: Month
- Billing Period: Month
- Charge Effective Start Date: January 1
- Charge Effective End Date: December 31
In this example, only one charge segment in the newly created subscription.
DTCV_of_charge_segment_1 = Latest_TCV_of_segment_1 - 0 = 1200
DTCV_of_charge = 1200
Now you create an Update Product amendment and make the following changes:
- Price: $200
- Amendment Effective Date: July 1
There are two charge segments after subscription amendments.
DTCV_of_charge_segment_1 = Latest_TCV_of_sengment_1 - Previous_TCV_of_segment_1 = 600 - 1200 = -600
DTCV_of_charge_segment_2 = Latest_TCV_of_sengment_2 - Previous_TCV_of_segment_2 = 1200 - 0 = 1200
DTCV_of_charge = DTCV_of_charge_segment_1 + DTCV_of_charge_segment_2 = -600 + 1200 = 600