The Ultimate Guide to ARR book icon

The Ultimate
Guide to
ARR

The Ultimate Guide to ARR book icon

The Ultimate
Guide to
ARR

Table of Contents

Track and grow your ARR

Unlock CFO-grade clarity into your SaaS metrics with Equals.

Subscription vs. Invoice view

  • By
  • Headshot of Chris Burgner Chris Burgner

    Headshot of Chris Burgner Chris Burgner

    12+ years of experience, most recently as a Director of Finance at Intercom.

The final consideration in defining ARR is determining what object to model your reporting off—invoices or subscriptions. Let’s walk through both models’ pros and cons to determine which is right for you.

Subscription-based view

Subscriptions are generally easier to work with because they have fewer edge cases than invoices. They’re also a better proxy for when a customer becomes active (i.e., subscription created) or inactive (i.e., subscription cancelled).

The biggest challenge to working with this object is ensuring you have the right historical event data to know exactly when and how changes were made to a subscription. Depending on your billing software, this may require the use of webhooks or snapshots of a data warehouse. Once you’ve established a process to track historical event data, you can accurately model a customer’s spending at any given time.

Invoice-based view

Because accessing historical event data on subscriptions can be challenging, many companies model ARR reporting off invoices in the early days.

Invoices provide a full historical archive of customer charges. Every invoice has a Start and End date, making it easy to create a time series view of how spend has evolved over time at the customer level.

While the time series view is easier to produce using the invoice-based method, it does come with a few drawbacks. Let’s walk through some of the most common cases below.

Timing

Not surprisingly, using the invoice-based method requires sending an invoice to start tracking ARR. However, it’s certainly not uncommon for there to be a delay between creating or updating a subscription and sending an invoice to a customer. Addressing this delay in invoicing after the fact may require you to back-date invoices, which can cause your historicals to restate.

How do you avoid gaps in reporting when invoices are delayed or haven’t been issued?

First, automate invoicing as much as you can. Second, if manual invoices need to be sent, create SLAs with your billing team on how quickly invoices will be issued after an event. This is a critical step in locking month–end or quarter–end reporting results. Be sure to communicate these timelines to other teams relying on ARR reporting and instruct them not to pull any ARR reporting until invoicing is complete.

How do you compare spend on an apples-to-apples basis when customers are invoiced on different schedules?

Most businesses have customers at different payment frequencies: monthly, quarterly, or annually.

Adjust every invoice down to the monthly level and annualize from there. This looks something like the below:

Overlapping invoices

In most cases, only one invoice per subscription at a time should be honored to avoid double counting.

How do you avoid double counting when a corrective invoice was issued to resolve a mistake in a prior invoice?

In most cases, only one invoice per subscription at a time should be honored to avoid double counting.

In cases where multiple invoices were issued on the same day, it’s usually safe to honor the last invoice created on that date.

In cases where a backdated invoice was issued, we typically recommend counting the corrective invoice on its issue date (rather than its backdated start date) to avoid restating historicals. Hopefully, the backdated invoice volume will be low, allowing you to review each instance with your billing team to make a final call. If you find this is a more regular issue, an upstream operational change will likely be required to reduce the volume.

Here’s an example of a corrective invoice fix:

Step 1: Create the field

ROW_NUMBER() OVER (
  PARTITION BY customer_id, period_start_date
  ORDER BY invoice_created DESC
) AS invoice_number_by_date
Example SQL creating a ranker by customer by period start date based on invoice creation.
  • This creates a ranker by customer by period_start_date and sorts descending based on when the invoice was created
  • By doing this, the LAST invoice created among matching period_start_dates will return 1

Step 2: Apply a filter

  • Filter for invoice_number by date = 1 in your data pulls

Here’s an example of a backdated logic fix:

CASE WHEN invoice_created > invoice_period_start THEN invoice_created END AS period_start_clean
Example SQL for a corrective invoice fix using the row ranker field from step one.

How do you avoid double counting when a prorated invoice was issued to resolve a mistake in a prior invoice?

The second common cause of invoice overlap is from amendment invoices. These come as a result of a customer’s subscription changing midway through the service period.

Here’s an example:

  • Customer A is billed monthly, has five seats on their subscription, and is invoiced on April 1st for $100 ($20 per seat per month).
  • On April 16th, they upgrade their subscription to include two more seats.
  • Rather than waiting to invoice Customer A for seven seats on May 1st, you issue a $20 prorated invoice ($20 * 2 seats * 50% of the month) for the 15 days the two seats are active in April, which were not included in the April 1st invoice.

You should send prorated invoices automatically to bridge the gap between the amendment and the next scheduled invoice. This is the most optimal solution for reporting and cash flow for your business.

There are two things we suggest doing when sending prorated invoices:

  1. Adjust the end date of the original invoice up to the day before the prorated invoice (i.e., to April 15th in the example).
  2. Gross up the invoice amount to what it would’ve been in a non-prorated environment. This will look something like the below:

Now that we’ve covered all the factors to consider when defining ARR for your business, we can move on to the fun part—building it.

Next topic

Building your ARR