A billing cycle in BILLmanager is a period between one invoicing period and the next.
Every day the 'billdaily' cron job collects information about activated services and performs the following operations:
- Calculates for how many days a service should be renewed.
- Starts automatic renewal process.
- Sends notifications to inform a client that his service should be renewed.
- Collects service usage statistics.
- Calculates service overdue period.
BILLmanager allows setting up different billing cycles: monthly, daily, and hourly.
There are two types of monthly charges: periodic and calendar.
A client is charged periodically during the whole period. He selects a payment period when ordering a service. A charge day is always the service order date.
Example: a client orders Shared hosting on June 5, and pays for 3 months. The system will charge him on the 5th of every month: September 5, December 5, etc.
To enable calendar charges, navigate to tariff edit form and select the Calendar-based charges checkbox. The service renewal date will be adjusted to the 1st of every month. Also, specify the Pro-rata day. If a service is ordered before this date, it will be active until the end of the current month. If the service was ordered on the pro-rata day or later, it will be active till the end of the next month.
Example: the provider checks the Calendar-based charges box, the Pro-rata day — 15. Therefore, if a client orders a service on July 12, it will be active until August 1. If he orders the service on July 17, it will be active till September 1.
In the case of calendar charges, an incomplete month will be calculated as follows: (number of days in the month - current date + 1) / number of days in the month * tariff price. The client will be charged a full price of the tariff plan for the whole month.
- If the client orders a monthly service before the pro-rate day, he will be charged for the incomplete month (see the formula above).
- If the client orders a monthly service after the pro-rate day, he will be charged for both the incomplete month (see the formula above) and the full month.
If he orders a service for longer periods, for example for 3 months:
- If the client makes an order before the pro-rate day, he will be charged for both two full months and the incomplete month.
- If the client makes an order after the pro-rate day, he will be charged for both the whole period (3 full months) and the incomplete month.
To enable daily charges, navigate to the tariff edit form and select the "Charge daily" checkbox. The price is calculated as follows: (period price/number of months in the period) / number of days in the current month. Services with daily charges do not have an expiration date, as they are considered active as long as the client has funds on his account.
Example: on March 1 the client orders a VPS for 100 euro per month for 3 months with daily charges. The total order price is 300 euro.
In March he will be charged 3.23 euro (300/3/31) every day. In April he will be charged 3.33 euro (300/3/30).
The amount of daily charges depends on a service order period.
Difference between daily charges and charges for the "day" period
In both cases, the cost per day is deducted, but:
- with daily billing, the service is ordered for a certain period and the cost of one day is calculated from the cost of this period. For example, a client orders VDS for 1 month for 100 EUR, then every day he will be charged: 100 / number of days in this month;
- with a period of one day, the cost of one day is specified specifically. For example, a client buys VDS for 1 EUR a day. In this case, 1 EUR will be debited every day.
To enable hourly billing, navigate to the tariff edit form and select the Allow clients to resume/suspend services checkbox. With this option activated, the billing system will count the downtime period.
By default, the client pays for the downtime. Clearing the Charge client after suspension checkbox will make a refund at the beginning of the next month for the period when the service was suspended.
The service price including downtime is calculated as follows: (service price + resource price)/number of hours in a day*number of active hours+ resource price including charges during downtime.
The billdaily cron job makes recalculation and refund. The cron job starts once a day and makes refunds for the services if their suspension date equals the current date. It also changes the suspension date for services with hourly charges — the service will be renewed for one day. To make a refund, you need to edit the expenses generated one day before the payment for services and add-ons was made.
Example: the service provider offers Shared hosting with hourly billing. He doesn't charge his customers for downtime (the Charge client after suspension box is not checked). Service cost is 10 euro per day.
The client ordered two addons — Disk space for 5 euro and Public IP address for 10 euro. When Disk space gets suspended, the client will be charged for the service and is not charged for the IP address.
The total service price is 25 euro a day. For the last 24 hours, Shared hosting was active only for 12 hours. So, the client will get a refund for half of the service and IP address price. The total service price will be 15 euro for the last 24 hours.
We don't recommend that you manually recalculate services with the hourly billing cycle.
This may affect expenses with other billing cycles and the whole charging procedure.