I am facing a challenge in how to set up multi-year deals where one of the years (typically the first, though it doesn't matter - issue is the same) is discounted.
Let's use an example where we close a 3-year, $100,000/yr deal, and the first year is discounted 25% (i.e. first year is $75,000).
Based on research I've done, some people split the deal up into three separate line items, one for each $100k year, and then apply the discount to the first year. This works fine for all but one thing unfortunately. The Annual Contract Value (ACV) gets thrown off, and reads the same as the Total Contract Value (TCV), here would be the line item details:
SKU1 - Billing Start Date 11/22/22 - 12 Month Term - Billing Frequency Annual - Price $100k - Discount 25%
SKU1 - Billing Start Date 11/22/23 - 12 Month Term - Billing Frequency Annual - Price $100k - No Discount
SKU1 - Billing Start Date 11/22/24 - 12 Month Term - Billing Frequency Annual - Price $100k - No Discount
Notice we are using the "Billing Start Date" to denote that the line items are for separate years. I believe I understand why the ACV is not being calculated as we expect - it sees that each line item is a 12 month term, and is ignoring the billing start date in its calculation, so all it sees is a total of $275k over 1 year - hence $275k ACV.
Of course, for a "normal" three year deal (no discount), we could set up one line item, with a 36-month term and the ACV would read as we wanted it to.
Does anyone have ideas on how we can make multi-year deals with certain years discounted, and have the ACV pull in our desired value (which in this case would be an average of ~$91.6k per year)
I mentioned this use case when I was catching up with Dan at RevOps.io. He sent me back a video showing how they handle this type of tiered deal and then syncing back to a custom ACV property in HubSpot.
Hello DMcCarthy! Whatthird-party toolsdo you use to createmulti-year quoteswithline items discounted differently for each year? I recently discovered that this is possible, and I'm feeling frustrated with the technical limitations of HubSpot on this issue. My use case:
Hi @PollyPieCharts, thanks for reaching out to the HubSpot Community! I'm sorry to hear you are running into this but we are happy to help here! I will go ahead and share the feedback to our product team internally.
HubSpot’s AI-powered customer agent resolves up to 50% of customer queries instantly, with some customers reaching up to 90% resolution rates. Learn More.
Mar 17, 20259:56 AM - edited Mar 17, 202510:13 AM
Contributor
Multi-Year Contract - Discount One Year
SOLVE
Hi Julia, thanks for picking up on this post! 📌 To HubSpot Dev Team – Urgent Fix Needed for Multi-Year Deal Reporting
Hello HubSpot Community & Product Development Team, I’m reaching out as a System Administrator for a company offering:
🔹Software Subscriptions (Industry-Specific CRM, similar to HubSpot) – Billing: Monthly, Quarterly, Annually 🔹Professional Services (One-Time Services, similar to HubSpot’s Onboarding)
Our industry relies on 3-year contracts, ensuring software stability and reducing frequent provider switching due to complex data migrations.
🚨The Challenge: Applying a Discount to Year 1 in Multi-Year Deals
Our Sales Strategy offers a first-year discount, followed by standard pricing for years 2 and 3. The big question:💡How do we apply a first-year discount while keeping full price for future years in a multi-year contract?
Initial Solution: Add the same product multiple times within a single deal, adjusting the Billing Start Date:
# Issue 1: Inflated Annual Contract Value (ACV) & Deal Value
When adding a product multiple times with different Billing Start Dates, the Annual Contract Value (ACV) sums up incorrectly, leading to inflated revenue. ACV is the basis for "Amount in Company Currency", which recalculates deal value based on our company currency settings.
🔹Impact: Misleading revenue projections and inaccurate financial reporting.
# Issue 2: Broken Currency & Forecasting Reports
Our company operates in five currencies, and all executive and sales dashboards rely on "Amount in Company Currency". However, adding a product multiple times skews revenue tracking, making reports unreliable.
🚨Critical dashboards impacted:
🔹Closed Business – Overstated revenue per month/year 🔹Salesperson Dashboard – Overstated revenue per rep per month/year 🔹Customer Dashboard – Overstated revenue per customer per month/year 🔹Progress to Target (Goal Functionality) – Misalignment in quota tracking
Currency functionality was a key factor in choosing HubSpot last August. Now, despite paying for an annual subscription, we cannot accurately create multi-year contracts with tiered pricing.
While Quote Templates allow customers to see pricing adjustments across years, the Deal Properties ("Amount in Company Currency" and "ACV") remain incorrect—breaking financial reporting.
🚀Proposed Solution for HubSpot Dev Team
✅Only include a Line Item’s ACV in the Deal ACV when its Billing Start Date falls within the same year as the Deal Close Date.
Excel Logic Equivalent: 📌ACV [Deal level] = SUMIFS(ACV [Line Item], IF(Deal Close Date Year = Line Item Year))
✅This ensures ACV and "Amount in Company Currency" accurately reflect revenue for the year the deal was closed—preventing inflated values from future years.
📢Urgent Call to Action
This is not a nice-to-have feature—this is a high-impact issue affecting forecasting, sales performance tracking, and financial reporting.
HubSpot markets itself as an excellent CRM for reporting, but this flaw makes multi-year SaaS deal reporting unreliable.
🚨This must be addressed ASAP. Who’s with me?🚀 Looking forward to feedback from the community—and action from HubSpot.
Thanks for suggestion @danmoyle and the detailed feedback @PollyPieCharts! I have passed this along to our team internally, hopefully we can see this implemented soon!
HubSpot’s AI-powered customer agent resolves up to 50% of customer queries instantly, with some customers reaching up to 90% resolution rates. Learn More.
Thank you for the tag @juliagentillo - I don't have a solution for this specific use case for @PollyPieCharts though. I've seen this done manually, not in an automatic way. And I don't know of TPS solutions - but if it were me I'd look in the app marketplace for sure.
Did my answer help? Please "mark as a solution" to help others find answers. Plus I really appreciate it!
Nov 24, 20225:42 AM - edited Nov 24, 20228:22 AM
Key Advisor | Gold Partner
Multi-Year Contract - Discount One Year
SOLVE
Hi @DMcCarthy thanks for your great question along with the details which really help in answering you.
Yes it's a challenge that the default ACV calculation cannot handle complex variations.
If it's important for your business metrics, I can think of three possible solutions:
Create a custom deal property to hold 'custom_acv', create a deal-based workflow trigged on line_item, with <> custom javascript actions to calculate the ACV, then save the result in your custom property for custom reporting. HubSpot workflows can trigger on line-item but are not line-item based actions. HubSpot workflows can only enrol the deal into the deal-based workflow, so custom code is required from then on.
or, look at an integration that is designed from the ground up to manage this SaaS-type subscription sales management. Full disclosure HubDo is a partner of almost all HubSpot Quoting apps (PandaDoc, Qwilr, GleanQuote, ContractBook, RevOps.io and others) so we know them well enough to know that you should evaluate RevOps.io as a potential valuable add-on to your HubSpot stack. It's made for this use case.
or, we can custom-code a native HubSpot app that monitors every time a line_item is created or changed and takes any actions based on all deal line_items, to figure out the true subscription contract stages and calculate custom ACV values etc.
I would try suggestion 1 first, as it's free. It makes the best use of the tools you already have 🙂
Also take a peek at the free version of RevOps.io - they have put a lot of SaaS contract smarts in it.
With Suggestion 1 I haven't tried this specific use-case of date-ranged contract stages though, so good luck with it. I'd love to hear how you get on - and everyone in the community who finds this question in future will see how you solved it!
Thanks for these suggestions. I was also looking into doing something with custom code, but figured it made sense to see if there was a way to natively support the functionality first.
These are great suggestions, really appreciate the input here. Unfortunately, we don't have operations hub just yet, so I don't think I'll be able to trigger custom code from a workflow, but I think there may be something I can do via Zapier or as you mentioned through leveraging a custom/private app.
I'll poke around a bit more and be sure to update the thread here with what I end up pursuing.
I mentioned this use case when I was catching up with Dan at RevOps.io. He sent me back a video showing how they handle this type of tiered deal and then syncing back to a custom ACV property in HubSpot.
@HubDoPete - This is great, thanks for sending this over, I'll take a look ASAP.
Haven't gotten a chance to make much progress on this yet, caught up in other things. But I will be sure to update the thread here with whatever I end up deciding.
It's actually @DMcCarthy with the need to report on ACV for these contracts. To split the deal into two deals will likely disrupt other metrics that relate to the number of actual contracts.
I've tagged D in this reply to you though, in case this idea helps too.
Well, Hubspot has pretty good reporting capbilities but there various limitations. What I have to end-up doing for one of my customers is exporting the deal data from Hubspot and create custom report with some automation tools.
HubSpot’s AI-powered customer agent resolves up to 50% of customer queries instantly, with some customers reaching up to 90% resolution rates. Learn More.