The reality of SaaS contracts is often that the license period is somewhat ambiguous, they might read something like “subscription period: Jan 01 2016 - Feb 01 2016” or “subscription period: Jan 01 2016 - Jan 31 2016”.
Without specifying what hour/minute it refers to, without specifying if the start and end dates are included or not, and without specifying if those dates refer to some particular time zone.
Again, from a business perspective that kind of precision isn’t needed since you likely wont cut your service on the second. However from a technical and to some extent a financial point of view this has to be specified.
In Planhat fixed period Licenses (in our terminology same as “subscriptions”) are considered to be valid from (and including) the start date, to (but not including) the end date, we assume contracts refer to the first moment measured in UTC (time zone) of the specified date.
Example A: Jan 01 2016 - Feb 01 2016
This is considered exactly one month long, and running from Jan 01 00:00:00 - Feb 01 00:00:00. Which means all of January is included up until Jan 31 23:59:59 and a little more. However, nothing of February would be included.
Example B: Jan 01 2016 - Jan 31 2016
This is considered one days short of a month, and running from Jan 01 00:00:00 - Jan 31 00:00:00. Which means that NONE of the hours of the day of January 31will be included.
Since some of you prefer to use the “from (and including) to (and including)” style of subscription periods, we’ve allowed some tolerance in Planhat when calculating contract length, conversion mrr <-> total value, and some of the KPIs.
To be specific, periods diverging less then 5% (about 36 hours) from a full month (as measured by moment.js) will be rounded to the nearest number of full months. When calculating churn for example, licenses ending the last days of a month will be assumed to include all of that last day.
A couple of implications of the above are:
- KPI calculations may differ slightly depending on if you’re looking at a report period that starts/ends at the beginning/end of a month rather that from points “inside a month” like “gross churn from 15 jan - 15 Feb”.
- If your team is spread out across multiple time zones if looking at Planhat simultaneously they will all see the same license status. I.e a license expires at a specific moment in time, not a specific date. So a license ending Feb 01 00:00:00 UTC, will appear as expired already on the evening Jan 31 for a Planhat user located in San Francisco.