The Problem
In Salesforce CPQ, Calculate ACV (Annual Contract Value) for the first year of all subscription products on the Quote, for both: MDQ and non-MDQ products. All subscription products belong to a Product Family of Subscription. All MDQ products in the catalog has Price Dimension set to a Year, Subscription Term is set to 12, and Subscription Term Unit set to Months.
The Solution
In order to calculate an the ACV, you have to crate 2 Custom Fields:
Object API Name | Field API Name | Type | Purpose |
---|---|---|---|
SBQQ__QuoteLine__c | ACV__c | Formula | Calculate the ACV for a given line. |
SBQQ__Quote__c | ACV__c | Roll-Up Summary Formula | Sum up Quote Line ACV values. |
The ACV__c field on the SBQQ__QuoteLine__c object, needs to have the following formula:
IF( Product_Family__c = 'Subscription' && SBQQ__SegmentIndex__c<=1,
SBQQ__NetTotal__c/SBQQ__ProrateMultiplier__c,
0
)
The above formula, will return 0 for:
- all MDQ segments for year 2 and more,
- all non-subscription products
and will return the value of Net Total for a yearly term for:
- 1st year of MDQ products
- 1st year of non-MDQ products
The ACV__c field on the SBQQ__Quote__c object, has to be a Roll-Up Summary Field, that is summing up all Quote Line ACV__c values.

6 replies on “How to calculate ACV for subscription products in Salesforce CPQ?”
Hi, I get Error: Field Product_Family__c does not exist.
I have that field Data Type – Formula(Text)
Can you help please.
Thanks
Hey, my bad, I did not have it in a post, that field “Product_Family__c” is supposed to be a field on a Quote Line object, in my case it was a formula field.
Where are you getting this error? Can you post a screenshot?
Hi. this is very helpful. thank you. For some reason, the ACV field that I created on the quote line object, is not visible on the quote object for roll up summary. Any advise?
Hi Kathleen, Is the type of the ACV field on the Quote Line a Number field? Also, the ACV cannot be a cross object formula field, so you need to make sure it only uses data from the Quote Line. Let me know if this helps.
It Is assumed here that. the subscription term is set to 12 –> In case it is 1 ( Monthly calculations).. Need to divide the formula by 12
This only works if your segments are 12 months and your default subscription term on the QL is also 12. If either of these are not true, the formula will give an incorrect value.
Also, you will want to use the lookup to Product2 to check the Subscription Type field there, rather than looking at Product Family. The Product Family has no bearing on whether or not the item is actually treated as a subscription product in CPQ.