Contracts

Contracts in streamOS are business logic elements that store financial logic of how to charge a customer.

Contract Types

Contracts in streamOS are containers that decide how billing elements (plans / modifiers) are charged (frequency) and how they interact with each other. They define dates (start, end, how often) and sequence, they do not define how much (these are handled by plans and modifiers)

Screenshot

Parent Contract

Parent Contracts are top level contracts that are directly linked with a customer. These are overarching concepts that are containers for all related elements and can action on all items below them. Any direct items associated with them are indicative of the fact that they will be charged just because the contract exists and for no other reason.

A Parent Contract contains the following elements:

  • Display Name: The Name of the Parent Contract - usually named something simple - 'Company A Master Agreement'
  • Customer ID: The id of the customer associated with this contract
  • Payment Terms: in days - translated directly to the accounting platform as issue_date + days
  • Start Date: The Start Date of the contract
  • End Date: The End Date of the contract
  • Fixed Fees: [List of FixedFee] : Any fixed fees associated with this contract
  • Minimums: Minimum Any minimums associated with this contract - (this will be applied after all charges are totaled)
  • Discounts: Discount Any discounts that need to be applied after all the charges are totaled
  • Auto-Renewals: [Auto-Renewal] Logic about renewal of the contract
  • Sub-Contracts: [List of SubContract] Sub-Contracts associated with this parent
  • Billing Frequency: Billing-Frequency Specifies how all aspects of charges in this contract should be billed

Sub-Contract

Sub-Contracts are exactly like Parent Contracts except that they do not link to customer's and hence cannot live without a Parent Contract.
They are useful concepts to separate units of billables by dates, billing frequencies or other behaviors.
Sub-Contracts are infinitely nestable - meaning that a sub-contract can have infinite children, where each child is subject to the parent.

Example

Company A has 2 kinds of fees it charges it customer's:
a platform fee that is billed one year in advance for $10,000 & a support fee that is billed every month for $500.

Parent Contract: 
    Sub-Contract: Platform Fee Contract 
        Fixed Fee Plan : Platform 
            Amount: $10,000 / year 
        Billing Frequency: 1Y advance
    Sub-Contract: Support Fee Contract
        Fixed Fee Plan : Support
            Amount: $500 / month
        Billing Frequency: 1M arrears

Product Contract

Product Contracts exist to create contract structures around products - they tie a product with its price and its usage.

  • Display Name: The name of the Contract
  • Product ID: The streamOS ID of the product that this contract is representing
  • Tiers: Tiers the effective pricing schematic of the product
  • Billing Frequency: Billing Frequency how the charges from this contract need to be billed