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)
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