A product is something that your users can order. A product may be a shared hosting account, a cloud account, a software license (one-time or leased), or monthly paid system administration subscription.

When a user orders a product, a service is created with the selected billing cycle, and configurable options. The service is associated with the client for whom the order was placed. The product is a general definition, a service is an instance of that definition. Out of the same product many services may be created for the same client or for different clients.

The product Name and Description are visible to your users, and they can order it.

The Product internal code uniquely identifies a product, and it is used internally, e.g. by a provisioning module. Example: “cpanel_starting_product”.

The Group and Product type have only an organizational role. It’s easier to identify a product by a group or type.

A product Module decides what is created, where and how. E.g., the cPanel module connects to a WHM server and creates an account. Similarly, the OpenStack module connects to the OpenStack API and creates a OpenStack project for a client.

Fleio has 3 types of Price model-s:

  • Free. The product is free.

  • Fixed plus dynamic - Dynamic price is calculated by the module and based on resource consumption. The dynamic price in the case of the OpenStack module is the total price of resources used during a billing period (or cycle). For Fixed plus dynamic, a fixed price is charged plus any additional usage calculated by the module.

  • Dynamic but at least fixed. If the dynamic price is less than the least fixed price, the fixed price is charged. If dynamic price is greater or equal to the least fixed price, the dynamic price is charged.

The product Status determines if a product is available for end-users to order. A Public status means the product can be ordered by end-users. A Private product will not appear on the end-users order page and is only visible to staff. A Retired product can’t be ordered anymore, and you cannot upgrade/downgrade to it.

The Auto setup field determines when and if a service of the product is automatically created (provisioned):

  • Disabled - automatic setup is disabled, staff can still create the product manually

  • When order is placed - product is created automatically when the order is placed

  • On first payment - the product is created when the order is paid

  • When pending order is accepted - the product is created when staff member clicks on the Accept order button. Usually used when you want to manually review each order.

The Welcome email is automatically sent when product is Auto setup.

Check Allow zero price order if end-users are allowed to submit an order containing this product and with order price of zero. This checkbox is irrelevant if, based on your product price definition, the product price is always non-zero.

If Apply taxes to this product is checked, taxes are applied on initial order and on periodic invoices based on tax rules.

Check This product requires a domain to show the domain selection form in the order process.

When Credit on downgrade is checked, client is credited when downgrading to a lower priced product, cycle and/or configurable option.

The end-users do not see services associated with a product marked Hide services for this product in enduser panel.

Depending on the module selected, a module configuration section appears. This section contains module-specific settings.

Fleio product pricing (billing cycles)

A billing cycle is a time period for which a service is paid. Pricing for a product is defined by its billing cycles.

The base billing cycles are:

  • One Time - a one time charge, with no subsequent periodic charge.

  • Day - every day or once every X days. Daily is not a common option, but this allows to charge every 2 weeks, for example

  • Month - every one or more months depending on the multiplier

  • Year - every one or more years

Using the Cycle multiplier field, you can define very granular charging periods. Example: Month with a Cycle multiplier of 3 means every 3 months or commonly known as quarterly.

You can define cycle prices in different currencies. A client can see a product and can order it if the product has at least one cycle in the client’s default currency. You have a totally different pricing policy for different currencies, or you can check Auto calculate prices for a currency and the value will be calculated automatically from the default currency price using the exchange rate if this is enabled.

All new billing cycles start at 00:00:00 and are localized using the TIME_ZONE setting. A billing cycles ends at 23:59:59.999999, again using the TIME_ZONE. However, for simplification and consistency across Fleio installations and servers, the dates are stored using the UTC timezone in the database.

A cycle has a Fixed price which is greater or equal to zero. Setting a price of say 5 USD with the Cycle set to Month and the Cycle multiplier of 1 means that the product is charged a fixed amount of 5 USD every month.

Setting the Fixed price to zero is useful for products having modules that offer dynamic price calculation. For example, an OpenStack product with the Fixed plus dynamic price model set, will have a dynamic price based on resource usage. If a fixed price is also set, that price is always charged regardless of the usage done by a client. A cPanel product should have a fixed price since the module does not calculate any dynamic price.

A good rule of thumb is to set a Fixed price greater than zero when no dynamic pricing is calculated or when you wish to charge a fixed amount not only the dynamic price. You can offer products for free: just set Fixed price to zero.

For OpenStack, a fixed price of zero is usually fine, and at least a monthly cycle is required, otherwise invoicing will not take place for that product and dynamic pricing will not be calculated.

The Setup fee is charged when the product is ordered or upgraded to. The cycle Status determines if it’s available for the end-users to order. A Private or Retired Status cannot be selected by an end-user.

An end-user can order a product if the product has at least one Public cycle with the client’s default currency.