> ## Documentation Index
> Fetch the complete documentation index at: https://zenskar.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Products

## Products

The Products module is your catalog of what you sell and how you charge for it.

### Map of concepts

| Concept | Details |
| - | - |
| [Product type](#product-types-when-consumption-happens) | A product type decides which product subtypes fit. If the product type is period of time, each pricing preset of the product has a pricing period. |
| [Product subtype](#product-subtypes-how-usage-is-measured) | A product subtype must fit the product type. |
| [Pricing preset](#pricing-presets-how-you-charge) | A pricing preset charges for a product in one currency, has one pricing model, and can meter usage. |
| [Pricing model](#pricing-models) | A pricing model calculates the amount of a pricing preset from a quantity. [Pricing models](https://zenskar.com/docs/20260301/pricing-models/concepts/pricing-models.md) describes each one. |
| [Metered usage](#metered-usage) | In metered usage, a billable metric measures the quantity, and the quantity strategy decides how Zenskar treats it. |

### Related modules

Products uses the following modules:

| Module | Details |
| - | - |
| [Tax configuration](https://zenskar.com/docs/20260301/product-modules/settings/tax-configuration/concepts/tax-configuration.md) | A product refers to a tax category. You create tax categories in that module. |
| [Pricing models](https://zenskar.com/docs/20260301/pricing-models/concepts/pricing-models.md) | Each pricing preset uses one pricing model. That section describes how each pricing model calculates an amount. |
| [Billable metrics](https://zenskar.com/docs/20260301/product-modules/usage/concepts/billable-metrics.md) | A pricing preset that meters usage refers to a billable metric. You create billable metrics in that module. |

The following modules use products:

| Module | Details |
| - | - |
| [Contracts](https://zenskar.com/docs/20260301/product-modules/contracts/concepts/contracts.md) | A contract charges for products with their pricing presets. |
| [Customer portal](https://zenskar.com/docs/20260301/product-modules/customers/concepts/customer-facing-portal.md) | The customer portal shows products to your customers. |

## Products: what you sell

A **product** is a good or service that you sell, such as a software seat or an API call. A product describes what you sell, not what it costs. A product has the following properties:

| Property | Details |
| - | - |
| Name | Every product requires a name. Each product in your organization has a unique name. Names are case sensitive, so `Seats` and `seats` are different names. Zenskar rejects a duplicate name. The name can change after you create the product. |
| Tax category | A product can refer to one [tax category](https://zenskar.com/docs/20260301/product-modules/settings/glossary.md#tax-category) from [Tax configuration](https://zenskar.com/docs/20260301/product-modules/settings/tax-configuration/concepts/tax-configuration.md). The tax category is optional and can change after you create the product. Automated tax calculation requires a tax category. Without one, Zenskar treats the product as non-taxable, or as taxed outside Zenskar. |
| Description | The description is optional and can change after you create the product. Your customers see the description on invoices, at checkout, and in the [customer portal](https://zenskar.com/docs/20260301/product-modules/customers/concepts/customer-facing-portal.md). |
| Unit labels | A **unit label** is the name of the unit in which a product is measured, such as seat or API call, in a singular form and a plural form. Unit labels are optional and can change after you create the product. Your customers see unit labels in the same places as the description. Without a plural form, Zenskar adds an "s" to the singular form. Zenskar saves unit labels only when the singular form is set. |
| SKU | A **SKU** is an identifier that you assign to a product to track it in your inventory or in external systems. A SKU is optional and can change after you create the product. Two products in your organization cannot have the same SKU. Zenskar rejects a duplicate SKU. The SKU of a deleted product becomes available again. |
| Product ID | The **product ID** is the identifier that Zenskar assigns to a product when you create it. The product ID cannot change. |
| Product status | **Product status** is the lifecycle state of a product: active, inactive, or archived. A new product is active. Only the API can change the product status. A product that a contract uses cannot become inactive. |

## Product types: when consumption happens

A **product type** is the classification of a product by when the customer consumes it: at one moment, or over a period of time. Every product has one product type. You set the product type when you create the product, and it cannot change in the UI afterward.

### Point-in-time product type

The **point-in-time product type** is the type of products that the customer consumes at one moment, such as an API call or a generated report.

For example, a messaging company sells SMS messages. Each message is consumed at the moment it is sent, and the customer pays for the messages sent.

The price of a point-in-time product has no period in it, for example \$0.01 per SMS. For how the period of a price is set, see [Pricing presets](#pricing-presets-how-you-charge).

### Period-of-time product type

The **period-of-time product type** is the type of products that the customer consumes over a period of time, such as a seat for a month.

For example, a project management company sells user seats. A customer holds 20 seats for the whole month, whether the users log in once or every day.

The price of a period-of-time product always includes a period, for example \$20 per seat per month. Without the period, the price has no meaning. For how the period of a price is set, see [Pricing presets](#pricing-presets-how-you-charge).

### Product types and the wording of a price

The wording of a price shows which product type fits:

| Price | Product type |
| - | - |
| \$0.01 per SMS | Point in time. The price has no period in it. |
| \$50 for 1,000 API calls, valid for 30 days | Point in time. Each call is consumed at one moment. The 30 days only limits how long the bundle can be used. |
| \$0.05 per GB transferred | Point in time. The transfer happens once. |
| \$20 per seat per month | Period of time. The seat is held for the month. |
| \$0.10 per GB stored per month | Period of time. The storage is held for the month. |

The same company can sell both. A video platform that charges per minute of video streamed uses the point-in-time product type for streaming minutes. If it also charges a monthly fee for each channel that a customer keeps, it uses the period-of-time product type for channels.

The product type also affects how contracts use the product. See [Contracts](https://zenskar.com/docs/20260301/product-modules/contracts/concepts/contracts.md).

## Product subtypes: how usage is measured

A **product subtype** is the classification of a product by how its usage is measured. Every product has one product subtype. You set the product subtype when you create the product, and it cannot change in the UI afterward.

### Quantity product subtype

The **quantity product subtype** is the subtype of products whose usage is measured as a number of units, such as 100 API calls or 5 seats. It is the default for both product types.

For example, a messaging company counts the SMS messages that a customer sends. The SMS product uses the point-in-time product type with the quantity subtype. A project management company counts the seats that a customer holds each month. The seat product uses the period-of-time product type with the quantity subtype.

### Credits product subtype

> [!NOTE]
>
> Coming soon. The UI shows this product subtype, but you cannot select it yet.

The **credits product subtype** is the subtype of products that provide credits or units of a custom currency, such as \$100 in platform credits. Another example is 50 report generation credits. The credits product subtype fits only point-in-time products.

### On/off product subtype

> [!NOTE]
>
> Coming soon. The UI shows this product subtype, but you cannot select it yet.

The **on/off product subtype** is the subtype of services that are either enabled or disabled, such as priority support. Another example is white-labeling. The on/off product subtype fits only period-of-time products.

### Product subtypes and product types

Each product subtype fits one or both product types:

| Product subtype | Point-in-time products | Period-of-time products |
| - | - | - |
| Quantity product subtype | Yes | Yes |
| Credits product subtype | Yes | No |
| On/off product subtype | No | Yes |

Zenskar rejects a product subtype that does not fit the product type.

## Pricing presets: how you charge

A **pricing preset** is a reusable way to charge for a product in one currency. A product can have several pricing presets, but a contract calculates charges for the product with only one of them at a time.

A pricing preset cannot change after you create it, and it cannot be deleted. A different way to charge for the product requires a new pricing preset. After a product has a pricing preset, Zenskar rejects a change of its product type through the API.

A pricing preset has the following properties:

| Property | Details |
| - | - |
| Pricing model | Every pricing preset requires a [pricing model](https://zenskar.com/docs/20260301/product-modules/products/glossary.md#pricing-model). The per-unit pricing model is the default. See [Pricing models](#pricing-models). |
| Currency | Every pricing preset requires a currency: USD, INR, EUR, GBP, RUB, or BRL. A product can have several pricing presets in the same currency. A contract offers only the pricing presets in its own currency. See [Contracts](https://zenskar.com/docs/20260301/product-modules/contracts/concepts/contracts.md). |
| Pricing period | A **pricing period** is the length of time that the amount of a pricing preset covers, such as one month. Every pricing preset of a period-of-time product requires a pricing period, for example \$20 per seat per month. A pricing preset of a point-in-time product has no pricing period. The pricing period can be monthly, quarterly, semi-annual, annual, or a custom length. On a point-in-time product, the volume and tiered pricing models have a [tier-reset period](https://zenskar.com/docs/20260301/product-modules/products/glossary.md#tier-reset-period) instead. After each tier-reset period, the count of units starts again from the first tier. On a period-of-time product, the tiers apply to the quantity in each pricing period. See [Volume](https://zenskar.com/docs/20260301/pricing-models/concepts/volume.md) and [Tiered](https://zenskar.com/docs/20260301/pricing-models/concepts/tiered.md). |
| Metered usage | A pricing preset can meter usage. See [Metered usage](#metered-usage). |
| Default status | The **default pricing preset** is the pricing preset that Zenskar marks as the default for a product in one currency. Zenskar sets the default status. For each currency, the first pricing preset of a product becomes the default pricing preset. When a product has several pricing presets in the currency of a contract, the contract marks the default pricing preset. See [Contracts](https://zenskar.com/docs/20260301/product-modules/contracts/concepts/contracts.md). |
| Pricing-preset ID | The **pricing-preset ID** is the identifier that Zenskar assigns to a pricing preset when you create it. |
| Alias | An **alias** is a name that identifies a pricing preset among the pricing presets of a product. An alias is optional, and only the API can set it. Each alias is unique within a product. The UI shows the alias when it exists. |
| Unit labels | A pricing preset can have its own unit labels. They are optional, and only the API can set them. The unit labels of a pricing preset replace the unit labels of the product. The UI shows them when they exist. |

### Pricing models

Each pricing preset has one pricing model.

| Pricing model | Description |
| - | - |
| [Per-unit pricing model](https://zenskar.com/docs/20260301/pricing-models/concepts/per-unit.md) | Every unit costs the same. For example, \$2 for each API call. |
| [Percent pricing model](https://zenskar.com/docs/20260301/pricing-models/concepts/percent.md) | The amount is a percentage of the quantity. For example, 2% of a transaction amount. |
| [Volume pricing model](https://zenskar.com/docs/20260301/pricing-models/concepts/volume.md) | The total quantity selects one price per unit, and that price applies to every unit. |
| [Tiered pricing model](https://zenskar.com/docs/20260301/pricing-models/concepts/tiered.md) | Each range of the quantity is charged at its own price per unit. |
| [Dimensional pricing model](https://zenskar.com/docs/20260301/pricing-models/concepts/dimensional.md) | Each combination of usage attributes, such as region and channel, has its own price. |

### Metered usage

A **billable metric** is a measurable quantity that Zenskar calculates from usage events, such as the number of API calls in a month.

**Metered usage** is usage that a billable metric measures for a pricing preset. Metered usage is optional. A pricing preset with metered usage refers to one billable metric.

A **quantity strategy** is the rule that decides how Zenskar treats the measured quantity of a pricing preset: as separate consumptions that occur over time, or as a standing allocation that lasts until it changes. A pricing preset with metered usage has one quantity strategy. Both quantity strategies are available for both product types.

The **on-demand quantity strategy** is a quantity strategy that treats each measured use as a separate consumption at the moment it occurs. It is the default. For example, a messaging company meters the SMS messages that a customer sends. Each message counts once, when it is sent.

The **recurring quantity strategy** is a quantity strategy that treats the measured quantity as an allocation that stays in place until it changes, such as a number of seats. For example, a project management company meters the seats that a customer holds. The count stays in place from one day to the next until the customer adds or removes seats.

**Partial-period handling** is the rule that decides how Zenskar charges, under the recurring quantity strategy, for a quantity that starts partway through a period: in proportion to the time used, or in full. A pricing preset with the recurring quantity strategy has partial-period handling.

| Partial-period handling | Description |
| - | - |
| Prorate | Zenskar charges only for the part of the period that the quantity was in place. This is the default. |
| Charge full | Zenskar charges the full amount for the period, regardless of when the quantity started. |

For example, a customer adds 10 seats halfway through a monthly period. With prorate, Zenskar charges the 10 seats for half the month. With charge full, Zenskar charges the 10 seats for the whole month.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.