8.5 Examples: SaaS
The following section contains examples with how SaaS data generators may implement the FOCUS specification. SaaS data generator implementations will vary on the level of the detail available in their data, contract terms, purchasing options, and other factors.
8.5.1 Simple SaaS Agreements
Many SaaS providers provide simple contract terms, therefore don't need to support complex scenarios like spend commitments or pricing strategies in their billing data.
The scenarios described below illustrate how a Cost and Usage FOCUS dataset should look for simple SaaS agreement scenarios (these scenarios may not be specific to SaaS agreements only).
8.5.1.1 Scenario A1: Invoice Up-front for a Purchase of a Service
ACME Corp allows its customers to purchase their service for a term (in this case, a year) for a $10,000. ACME provides AwesomeCorp with a single invoice for their usage. ACME does not provide detailed cost and usage reports to AwesomeCorp throughout the Charge Period after the initial purchase.
Given that ACME does not charge based on or track usage, its usage details are irrelevant to this scenario.
Note the following details in the example dataset:
- The Charge Period is April 1st 2025 - April 1st 2026. The Billing Period is the month of April 2025 (when the licenses were ordered) and therefore will appear in the April invoice.
- A single charge representing the total payment for the 12-month agreement ($10,000) is charged in the first invoice. BilledCost and EffectiveCost are realized in the same record since detailed usage records will not be provided during the 12-month period to realize amortized portions of this up-front payment.
- The single charge record does not include a List Unit Price, Pricing Quantity, or SKU-related information. Alternatively, the Pricing Quantity could have been set to 1, and the List Unit Price could be the same as the total charge.
8.5.1.2 Scenario A2: Invoice Up-front for a Quantity of a Service
ACME Corp offers its customer the ability to purchase a fixed quantity of licenses for their service. ACME provides AwesomeCorp with a single invoice for their usage. ACME does not provide detailed cost and usage reports to AwesomeCorp throughout the Charge Period after the initial purchase.
On April 1st, 2025, ACME executes a contract and invoices AwesomeCorp $50,000 (Billed Cost) for a Charge Period of April 1st 2025 to April 1st 2026. As there is no negotiated discount, List Cost of the purchase is also $50,000.
Note the following details in the example dataset:
- The Charge Period is April 1st 2025 to April 1st 2026. The Billing Period is the month of April 2025 (when the licenses were ordered) and therefore will appear in the April invoice.
- A single charge representing the total payment for the 12-month agreement is charged in the first invoice. Billed Cost and Effective Cost are both realized in the same record since detailed usage records will not be provided during the 12-month period to realize amortized portions of this up-front payment.
- The single charge provided includes a ListUnitPrice for the licenses and a Pricing Quantity.
8.5.1.3 Scenario A3: Additional Purchase Records Provided in the SaaS Data Generator's FOCUS Dataset
On June 1st 2025 ACME provides the following records due to AwesomeCorp's $1,000 mid-contract purchase of an additional 10 licenses for the same Charge Period (April 1st 2025 to April 1st 2026).
Note the following additional details in the example dataset:
- The Charge Period is still April 1st 2025 to April 1st 2026. The Billing Period is now the month of June 2025 (when the additional licenses were ordered) and therefore will appear in the June 2025 invoice.
8.5.1.4 Scenario B: Billed in Arrears for a Quantity of a Service
Similar to Scenario A above, ACME Corp offers its customer the ability to purchase their service with a fixed quantity of licenses. However, in Scenario B, ACME issues the invoice at the end of the usage period.
On April 1st, 2026, ACME invoices AwesomeCorp $50,000 (Billed Cost) for the Charge Period of April 1st 2025 to April 1st 2026. As there is no negotiated discount, List Cost of the purchase is also $50,000.
Note the following additional details in the example dataset:
- The Charge Period is April 1st 2025 to April 1st 2026. The Billing Period is now the month of March 2026 (since this charge is invoiced as of the last month of the Charge Period).
8.5.1.5 Scenario C: Simple SaaS Agreement with Monthly Billing
Like Scenario A2 above, ACME Corp offers its customers the ability to purchase their service with a fixed quantity of licenses. However, in Scenario C, ACME issues invoices at the end of each month (usage period). For this scenario, contract terms additionally include the following terms:
- ACME charges users monthly for the licenses that were consumed in that Billing Period
- The licenses are charged at $20 per license per month
AwesomeCorp's consumption looks like this:
- In April 2025, AwesomeCorp uses 505 licenses
- In May 2025, AwesomeCorp uses 650 licenses
- In June 2025, AwesomeCorp uses 635 licenses
Note the following additional details in the example dataset:
- The Charge Period and Billing Period are April 1st, 2025, to May 1st, 2025, for the first month. Subsequent months increment the Charge Period and Billing Period by one month to match the month the charges are incurred.
- Billed Cost and Effective Cost are the same value since there is no up-front payment to amortize
8.5.2 SaaS Spend Agreements
Many SaaS service providers support billing models that allow (or in some cases require) consumers to agree to an amount to spend over a period. In some cases, customers receive a negotiated discount for usage during that period in exchange for the spend agreement. Spend agreements can have different payment models like billing in arrears or pre-paid contracts and may impose minimum spend requirements for parts of the agreement.
The scenarios described below illustrate how a Cost and Usage FOCUS dataset should look for various spend agreement scenarios.
8.5.2.1 Baseline Scenario
The following baseline conditions apply to the scenarios described below:
- AwesomeCorp has signed an agreement with SaaS service provider Acme Co to use their database services
- On April 1 2025, AwesomeCorp agrees to spend $1200 (post-discounts) in the upcoming 12-months
- AwesomeCorp receives a 20% negotiated discount in return for the commitment
- Acme Co calculates the spend counted against the agreements after discounts (like the negotiated discounts). Other service providers may use the cost after discounts i.e., using List Cost for calculating the spend commitment.
8.5.2.2 Scenario A: Billed in arrears
For this scenario A, contract includes the following terms in addition to the baseline scenario mentioned above:
- All charges will be billed in arrears at a monthly frequency
8.5.2.2.1 Scenario A1: Billed in arrears with no minimum spend requirement per month
For this scenario, contract additionally includes the following terms:
- Committed spend can be used anytime within the 1-year commitment period.
AwesomeCorp's consumption looks like this:
- In the first month, AwesomeCorp uses $48 of services (4 server hours). This usage has a List Cost of $60 (before discounts)
- In the following 2 months, AwesomeCorp has some more usage
- For the final 9 months, AwesomeCorp does not use Acme services
Note the following details in the example dataset:
- A single charge representing the total unused amount from the 12-month agreement is charged during the final month of the 12-month commitment period
8.5.2.2.2 Scenario A2: Billed in arrears with a minimum spend requirement per month
The spend agreement with Acme requires the customer to spend a minimum amount in each Billing Period (monthly). Unused fees are charged per Billing Period when the consumption is below this level (use-it or lose-it). For this scenario, contract additionally includes the following terms:
- A minimum of $60 needs to be spent each month
AwesomeCorp's consumption looks like this:
- In the first month, the AwesomeCorp uses $48 of services (4 server hours). This usage has a List Cost of $60 (before discounts). For this month, Acme charges $12 (ListCost of $15) for not meeting the monthly minimum
- In the following 2 months, AwesomeCorp has usage at or above the minimum requirement
- For the final 9 months, AwesomeCorp does not use Acme services
Note the following details in the example dataset:
- A monthly charge representing the unused minimum monthly amount is charged during months 4 through 11 of the 12-month commitment period
- The final month has a charge that captures the overall unmet spend requirement for the 12-month contract. Alternatively, this could be provided as two charges, one for the unused portion of the final month, and one to capture the overall unmet spend requirement.
8.5.2.3 Scenario B: Prepaid contract
For this scenario B, contract includes the following terms in addition to the baseline scenario mentioned above:
- The charges will be billed in arrears using monthly invoices
8.5.2.3.1 Scenario B1: Prepaid with no minimum spend requirement per month
Scenario B1 is similar to scenario A1 with the difference being that it's a pre-paid contract.
Note the following details in the example dataset:
- A purchase record for the initial $1200 payment is present representing List, Billed, and Contracted cost of the purchase
- The charge for the unused amount has a $0 BilledCost (since the total amount was billed with the prepayment). However, the charge captures the unused portion as an EffectiveCost.
- The unused charge rows apply to the entire Charge Period the contract was signed for.
- This scenario shows List Cost and Contracted Cost column double counting dynamic (described here in ListCost and ContractedCost) where either the ChargeCategory Purchase or Usage rows need to be excluded depending on the reporting scenario.
8.5.2.3.2 Scenario B2: Prepaid with a minimum spend requirement per month
Scenario B2 is similar to A2 with the difference being that it's a pre-paid contract.
Note the following details in the example dataset:
- A purchase record for the initial $1200 payment is present representing List, Billed, and Contracted cost of the purchase
- The monthly charge for the unused amount has a $0 BilledCost (since the total amount was billed with the prepayment). However, the charge captures the unused portion as an EffectiveCost.
- The final month has a charge that captures the overall unmet spend requirement for the 12-month contract. Alternatively, this could be provided as two charges, one for the unused portion of the final month, and one to capture the overall unmet spend requirement.
- This scenario shows List Cost and Contracted Cost column double counting dynamic (described here in ListCost and ContractedCost) where either the Purchase or Usage rows need to be excluded depending on the reporting scenario.
8.5.3 Virtual Currency Pricing Model
Many SaaS service providers support pricing models that utilize virtual currencies such as credits, tokens, or points. Charges may be provided using a virtual currency, which can subsequently be converted to a national currency such as USD or EUR at an advertised or agreed-upon conversion rate.
The scenarios described below illustrate how a Cost and Usage FOCUS dataset should look for various scenarios where a provider utilizes this pricing model.
8.5.3.1 Baseline Scenario
The following baseline conditions apply to the scenarios described below:
- AwesomeCorp has signed an agreement with SaaS service provider Acme Co to use their services.
- Acme Co offers a virtual currency pricing model for their services and requires a purchase of virtual currency in advance of usage. Their denomination of virtual currency is called "tokens".
- Acme Co requires purchase of additional tokens in the event of usage exceeding purchased tokens.
- Acme Co publicly lists the cost of their tokens at $2 per token.
- Acme Co treats token purchases as resources; therefore, charges for token purchases include values for ResourceId, ResourceName, and ResourceType.
- Acme Co publicly lists their usage to token rates. These rates are as follows:
- 1 Q Widget Execution = 1 token
- 1 Z Widget Execution = 2 tokens
- 1 Workflow Operation = 3 tokens
8.5.3.2 Scenario A: Virtual Currency Not Offered at a Discount
For this scenario, contract terms include the following terms in addition to the baseline scenario mentioned above:
- Acme Corp offers no discount for purchased tokens.
8.5.3.3 Scenario A1: Purchase of Virtual Currency Without a Discount
For this scenario, the initial purchase of virtual currency is executed as follows:
- On April 1, 2025, AwesomeCorp agrees to purchase 100,000 tokens at $2 per token for a total spend $200,000. These tokens are only valid for 12 months.
Note the following details in the example dataset:
- The Charge Period is April 1st 2025 - April 1st 2026. The Billing Period is the month of April 2025 (when the tokens were purchased) and therefore will appear in the April invoice.
- Because Acme Co uses a virtual currency pricing model for usage and publishes their token price in terms of dollars and their usage cost in terms of tokens, their Cost and Usage FOCUS dataset includes the columns PricingCurrency, PricingCurrencyContractedUnitPrice, PricingCurrencyEffectiveCost, and PricingCurrencyListUnitPrice.
- A single charge representing the total payment for the initial token purchase agreement ($200,000) is charged in the first invoice.
- ListCost, BilledCost, and ContractedCost of the purchase are all represented in this charge, however EffectiveCost is zero since the tokens are not yet consumed.
- PricingQuantity is set to the total tokens purchased.
- Because Awesome Corp is paying the list price, ListUnitPrice and ContractedUnitPrice are all set to the same value of $2.
8.5.3.4 Scenario A2: Usage of Virtual Currency Purchased Without a Discount
Awesome Corp uses Acme's services consuming tokens as follows in the first day:
- 245 executions of Q Widget
- 5 executions of Z Widget
- 120 operations of Workflow
Note the following details in the example dataset:
- The Charge Period is April 1st 2025 - April 2nd 2025. The Billing Period is the month of April 2025.
- PricingCurrency for these usage charges reflects the per usage token price of the particular usage.
- PricingQuantity reflects the amount of usage of the PricingUnit for each charge and is equivalent to ConsumedQuantity. While relevant to this example, there are scenarios including tiered pricing where ConsumedQuantity and PricingQuantity may not be the same.
- Because Awesome Corp's usage includes no discount on usage to token rates, PricingCurrencyContractedUnitPrice and PricingCurrencyListUnitPrice are equivalent.
8.5.3.5 Scenario B: Virtual Currency Offered at a Discount
For this scenario, contract terms include the following terms in addition to the baseline scenario mentioned above:
- Acme Corp offers a discount for purchased tokens.
8.5.3.6 Scenario B1: Purchase of Virtual Currency at a Discount
For this scenario, the initial purchase of virtual currency is executed as follows:
- On April 1, 2025, AwesomeCorp agrees to purchase 100,000 tokens at discounted cost of $1 per token for a total spend $100,000. These tokens are only valid for 12 months.
Note the following details in the example dataset:
- The Charge Period is April 1st 2025 - April 1st 2026. The Billing Period is the month of April 2025 (when the tokens were purchased) and therefore will appear in the April invoice.
- Because Acme Co uses a virtual currency pricing model for usage and publishes their token price in terms of dollars and their usage cost in terms of tokens, their FOCUS dataset includes the columns PricingCurrency, PricingCurrencyContractedUnitPrice, PricingCurrencyEffectiveCost, and PricingCurrencyListUnitPrice.
- A single charge representing the total payment for the initial token purchase agreement ($100,000) is charged in the first invoice.
- ListCost, BilledCost, and ContractedCost of the purchase are all represented in this charge, however EffectiveCost is zero, as required for prepaid purchases.
- PricingQuantity is set to the total tokens purchased.
- Because Awesome Corp is receiving a discount on the token price, the ListUnitPrice is set to $2 and the ContractedUnitPrice is set to $1. A ListCost of ($200,000) and ContractedCost ($100,000) reflect the cost of the tokens at the list price and contracted price respectively. The BilledCost is set to $100,000 since this is the amount that Awesome Corp will be charged for the purchase of tokens.
8.5.3.7 Scenario B2: Usage of Virtual Currency Purchased at a Discount
Awesome Corp uses Acme's services, consuming tokens as follows in the first day:
- 245 executions of Q Widget
- 5 executions of Z Widget
- 120 operations of Workflow
Note the following details in the example dataset:
- PricingQuantity reflects the amount of usage of the PricingUnit for each charge and is equivalent to ConsumedQuantity. While relevant to this example, there are scenarios including tiered pricing where ConsumedQuantity and PricingQuantity may not be the same.
- Because Awesome Corp's usage includes no discount on usage to token rates, PricingCurrencyContractedUnitPrice and PricingCurrencyListUnitPrice are equivalent.
8.5.3.8 Scenario B3: Usage of Virtual Currency at a Modified Rate
Awesome Corp uses Acme's services consuming tokens as follows in the first day:
- 245 executions of Q Widget
- 5 executions of Z Widget
- 120 operations of Workflow
Additionally, Acme Co offers a modified usage to token ratio for one of their services as follows:
- 1 Workflow Operation = 2 tokens
Note the following details in the example dataset:
- Because of the modified rate for Workflow Operations, the PricingCurrencyContractedUnitPrice and PricingCurrencyListUnitPrice are different for this charge. The ContractedUnitPrice is set to $1 and the ListUnitPrice is set to $2.
- The PricingCurrencyEffectiveCost is 240 tokens for this charge, which is less than example B2 above due to the modified rate.
- ListCost reflects the cost of the charge at both the list cost of the tokens and the list rate for which the usage consumes tokens.
8.5.3.9 Scenario C: Handling Virtual Currency Usage Overages
For this scenario, Awesome Corp has exceeded their purchased tokens on October 1st 2025 by 1,500 tokens and Acme Co has charged them for the overage. The following conditions apply:
- Acme Co has charged Awesome Corp for the cost of tokens at the list price of $2 per token, and this purchase is effective from April 1st 2025 to the date of the purchase, October 1st 2025.
- Awesome Corp purchases an additional 25,000 tokens to facilitate usage to the end of their contract. These tokens are valid from October 1st 2025 to April 1st 2026.
Note the following details in the example dataset:
- This example focuses on the purchases records only for the overage and additional purchases. Neither usage charges nor earlier purchases are not included in this example.
- The Charge Period for the Overage Purchase is April 1st 2025 - October 1st 2025. This is because the overage charge is to cover the period of time the overage token purchase is applicable to.
- The Charge Period for the Additional Purchase is October 1st 2025 - April 1st 2026. This is because the additional purchase is to cover the period of time to which the additional token purchase is applicable. Because end dates are exclusive, ChargePeriodEnd is April 1st 2026.