Pricing Concepts
In this document, you’ll learn about the main concepts in the Pricing Module, and how data is stored and related.
Price
The Price
data model represents any price.
Prices can be conditioned by the min_quantity
and max_quantity
attributes, which are helpful when calculating the price for a specific quantity.
If a price has its min_quantity
or max_quantity
attributes set, they’re only considered for the price calculation if they have a lower min_quantity
or a higher max_quantity
than the quantity specified for calculation.
Price Set
A PriceSet
represents a collection of prices that are linked to a resource (for example, a product or a shipping option). Each of these prices are represented by the Price
data module.
Prices with Rules
Rule Type
Each price within a price set can be applied for different conditions. These conditions are represented as rule types.
A RuleType
defines custom conditions. Each rule type has a unique rule_attribute
, referenced in rule values, such as when setting a rule of a price.
Price Rule
Each rule of a price within a price set is represented by the PriceRule
data model, which holds the value of a rule type. The Price
data model has a rules_count
attribute, which indicates how many rules, represented by PriceRule
, are applied to the price.
For example, you create a zip_code
rule type. Then, a price within the price set can have the rule value 10557
, indicating that the price can only be applied within the 10557
zip code.
Each price within the price set can have different values for the same rule type.
For example:
Each price can have multiple rules applied to it as well.
For example, a price can have the rules zip_code
and region_id
applied to it. In this case, the value of each rule is represented by a PriceRule
.
PriceSetRuleType
The PriceSetRuleType
data model indicates what rules the prices can have within a price set. It creates a relation between the PriceSet
and RuleType
entities.
For example, to use the zip_code
rule type on a price in a price set, the rule type must first be enabled on the price set through the PriceSetRuleType
.
Price List
A PriceList
is a group of prices only enabled if their rules are satisfied. A price list has optional start_date
and end_date
attributes, which indicate the date range in which a price list can be applied.
Its associated prices are represented by the Price
data model.
Each rule that can be applied to a price list is represented by the PriceListRule
data model. The rules_count
attribute of a PriceList
indicates how many rules are applied to it.
Each rule of a price list can have more than one value, representing its values by the PriceListRuleValue
data model.