Generally accepted accounting principles (GAAP) require that businesses recognize revenue when it’s earned (accrual accounting) rather than when payment is received (cash accounting). This article explains how to build a revenue recognition model in Runway for recurring contracts.
First, connect the data sources you plan to use model revenue recognition. Runway has CRM, data warehouse, and google sheet integrations available.
You can also manually copy data into a Runway database. You will need to follow database configuration directions.
The Runway team can help you write a query that will bring in the fields that you will need for revenue recognition modeling from your integration source.
Typically, for a revenue recognition model the contract or deal databases are segmented by a unique ID and Customer Name, depending on the fields your business uses to track contracts.
The following items brought into Runway as number and date drivers are standard for a revenue recognition model:
Note the example of a simple contract database below:
To recognize revenue over the length of a contract, you will need Start Date, Contract Term and Contract End Date drivers.
Add a date driver column by clicking the + at the right hand side of the database and selecting date driver
Name the date driver Contract End Date
Click on the driver column name and select Add Default Formula
. Default formulas allow you to set a formula for every segment of the driver.
Use DateAdd()
to calculate the Contract End Date based on Contract Start Date and Contract Term Length.
Note that the units must be wrapped in single-quotes, e.g. months as ‘m’
Add a number driver column by clicking the +
at the right hand side of the database and selecting number driver
Edit the name for the number driver column
Clicking on the driver column name, select Add Default Formula to set a formula for every segment of data (in this example, a formula for Contract Term Length will be propagated to each intersection of Contract ID and Customer Name)
Use DateDiff()
function to calculate a Contract Term Length based on contract start date and Contract End Date.
Here’s how to create a formula that will spread your revenue over the period that services get delivered.
+
to the right of the last database column.Add default formula
to open the default formula editor for the driver column.Database Name.Driver Column
.
is on or before
This monthis after
This monthis
This Segment will ensure the rules you set get applied across all segments of the driver, which in this example, means across all slices of Contract ID
x Customer Name
. You can review how to **create dynamic formulas **using This Segment here Contract Term Length (Months)
to calculate a monthly value. Each driver will be populated from Contract Start to Contract End date.To check if the formula is calculating correctly, select all months of values and check whether count and sum in the calculation preview match the Contract Term Length and Contract Value
Finally, you will need to wire up the Contract database to drive Revenue forecasts upstream in your model. This is the last step required to ensure that your topline is actively driven by the Monthly Revenue Recognition
driver you’ve built.
Navigate to a Revenue
driver if it already exists in your Runway instance or create a new driver in a Model or on a Page
Click into the forecast formula of the driver and type sum()
sum()
two ways:
All Customer Names All Contract IDs
Monthly Recognized Revenue
drivers for each Customer x Contract ID
segment pull into the aggregation as expectedMonthly Recognized Revenue
values begin and end on the correct datesMonthly Recognized Revenue
driver has a Runway arrow that will open up a detail pane that will let you investigate the drivers formulas, inputs and Plans