DID provisioning and billing

Link copied to clipboard

DID inventory management

Link copied to clipboard

The DID inventory in PortaBilling facilitates working with the customer’s list of DID numbers, even if they are not currently assigned to any accounts. It also allows customers to manage their DID lists via the self-care interface.

Customers can see a list of currently provisioned numbers (and which extensions they are assigned to) on the “DIDs” tab of the customer self-care interface.

This approach can be used for geo and non-geo DIDs as well as for toll-free and premium numbers.

When working with DID inventory and provisioning DID numbers it is very important for service providers to have a clear idea of which costs they bear and which charges they apply to their customers.

DID number cost

Link copied to clipboard

DID providers traditionally offer DIDs on a “fixed monthly fee” basis, with no per-minute charges. The providers include access for obtaining “buying” rate information for a specific number via XML API (e.g., phone number 12065551234 will cost $5/month). This is the rate the DID provider will charge the ITSP that allocates the number to its network.

When you as the service provider obtain DID numbers from a DID provider, you are usually charged an activation fee and then monthly recurring costs for all of the DID numbers. Therefore, when provisioning DID numbers to your customers, you apply an additional markup to these charges in order to compensate for your costs and earn some profit. The parameters of the markup are defined in pricing batches.

Please note that activation costs do not increase the DID provider’s balance (a DID provider is provisioned as a vendor in PortaBilling). Monthly recurring costs are recalculated according to the vendor’s billing period and applied for all obtained DID numbers regardless of whether or not they are assigned to customers. These costs are what increase the vendor’s balance.

DID costs management

Link copied to clipboard

When your DID provider changes their pricing and sends you an updated DID list, all you have to do is upload it to the DID inventory.

To update the vendor costs in the DID inventory, select the Modify data of existing DIDs option during the DID upload. The new DID numbers from the .csv file, if any, will simply be uploaded to their respective vendor batches in the DID inventory.

DID numbers upload

Upon upload, the new vendor costs override previous costs for all DID numbers regardless of their status (Free, In Use, etc.). You will receive a notification stating the number of both new and updated DIDs that have been uploaded to the DID inventory.

DID fees (calculated as the sum of vendor costs and DID markup) are also modified automatically. Thus, customers using DID numbers are charged updated recurring fees. Their activation fees will not be recalculated.

Billing for DID number usage

Link copied to clipboard

Every DID number belongs to a pricing batch. The pricing parameters of this batch, if any, define which charges will be applied to a customer when a DID number is assigned to them.

This allows you to set up different pricing for different DID number provisioning (e.g., local or international ones).

Consider the following example:

A customer is assigned a US number with $5 in activation costs and $3 in recurring costs from the “Domestic numbers” pricing batch. The markup for this batch is defined as follows: a $1 additional activation fee and a $2 additional recurring fee. The customer is charged $6 ($5+$1) upon DID activation and a $5 ($3+$2) monthly recurring fee recalculated according to the customer’s billing period (i.e. if a customer has a semimonthly billing period, he is charged $2.5 per billing period).

Then the customer is assigned a Chinese DID number with $15 in activation costs and $5 in recurring costs from the “International numbers” pricing batch. This batch has the following DID markup defined: a $5 additional activation fee and $4 additional monthly recurring fee. The customer is now charged $20 ($15+$5) for DID activation and $9 ($5+$4) for the monthly recurring fee.

DID pricing parameters

Link copied to clipboard

DID pricing is defined by the following parameters:

  • Additional activation fee is a configurable fixed amount that is charged when a new number is provisioned, in addition to the DID provider’s activation fee.
  • Additional recurring fee is a configurable fixed amount that is always included in the recurring (monthly) charge.
  • Recurring fee markup is a configurable increase of the DID cost (charged by the DID provider) included in the recurring charge in addition to the actual DID cost. For instance, when defining the ability to dynamically assign US numbers from DIDWW, we can specify that we would like to include a 10% markup on the DID provider rates. Thus, if a customer assigns phone number 12065551234 (DIDWW rate $5/month), the end user will be charged $5.50/month. DID pricing parameters

As a result, the total charge for the DID would be:

  • At activation – DID provider activation charge + Additional activation fee.
  • Monthly – DID provider monthly charge + the markup, consisting of the Additional recurring fee and the Recurring fee markup. This formula is likely to result in some “inconvenient” numbers, such as 3.289, which are usually rounded up.


Link copied to clipboard

You can choose what rounding method to apply to the DID charges in the customer class.

You can select one of the following rounding methods:

  • Away from zero – this rounding method is selected by default. It works similar to rounding up but differs when rounding negative values. Positive and negative values round symmetrically. For example, if the rounding precision is set to two decimals, then:
    • 1.214, 1.215 and 1.216 all round up to 1.22.
    • – 1.214, – 1.215 and – 1.216 all round to – 1.22.
  • Half away from zero – this rounding method works similar to arithmetic rounding but differs when rounding negative values. Positive and negative values round symmetrically. For example, if the rounding precision is set to two decimals, then:
    • 1.214 rounds to 1.21, 1.215 and 1.216 all round to 1.22.
    • – 1.214 rounds to – 1.21, – 1.215 and – 1.216 all round to – 1.22.
  • Special rounding (malaysian) – formerly known as custom rounding. This type of rounding depends on the last decimal at precision point. For example, if the rounding precision is set to two decimals, then:
    • If the last decimal at precision point is [0…2], it is set to zero. For example, 1.204, 1.215 and 1.226 all round to 1.20.
    • If the last decimal at precision point is [3…7], it is set to 5. For example, 1.234, 1.255 and 1.276 all round to 1.25.
    • If the last decimal at precision point is [8…9], it is set to 0 and the previous decimal increases by 1. For example, 1.284, 1.296 all round to 1.30. Rounding method

Also, you can choose the number of decimals to round the DID charges in the Rounding precision option when creating a DID pricing batch.

Rounding precision

For instance, in a situation where number 12065551234 (which has a $1.00 activation fee and a $3.00 monthly fee charged by the DID provider) is provisioned by an end user, the DID pricing setup would be as follows:

  • $2.95 for additional activation fee,
  • $1 for additional recurring fee,
  • 10% for recurring fee markup,
  • and 0.01 (2 decimals) pattern for rounding precision. DID self-provisioning

If a customer has a shorter billing period, e.g., weekly, a proportion of the DID provider’s monthly fees will be used to calculate the customer’s charge.

Please keep in mind that if you are going to provisionally terminate a customer, this customer won’t be charged for any DID numbers assigned to them. At the same time, the DID provider will still charge you a fee (e.g., $5/month) because these DID numbers remain allocated to your network until the customer is permanently terminated.

Completely free of charge DID numbers

Link copied to clipboard

When you provide virtual DID numbers for internal use (e.g., for SIP calls among accounts within your network), you still want to see which of them are in use and which are available. The best way to do this is by using the DID inventory. However, since these DIDs are virtual, they are, as a rule, provisioned free of charge and incur no charges to customers.

Therefore, to manage such internal DID numbers differently the concept of completely free of charge DID has been introduced. These are the DID numbers that have no costs or charges associated with them and are therefore free of charge for every entity they are provisioned to.

When an administrator assigns a completely free DID number to a pricing batch and then provisions the DID number to a customer, no charges apply.

Since there are no recurring costs associated with the DID number, the vendor is not billed either. Thus, both customer and vendor balances remain unchanged since no xDRs are created in the database.

Consider the following example:

You operate with thousands of end users. The services you provide allow end users to make and receive calls within your network. Since end users are not available from outside of your network, they do not require geographic DID numbers. However, to identify them within your network, you provision them virtual DID numbers. For this, you use the pool of virtual DID numbers 87899800000-87899989999.

Since these are your own internal numbers, you bear no costs and apply no charges to customers for their usage. Therefore you have them as completely free of charge in the DID inventory.

When a customer signs up for a product directly or via a reseller, no costs for DID provisioning apply to the customer.

Frozen DIDs and DID pool

Link copied to clipboard

It may be that you do not want to immediately provision DID numbers acquired from a DID provider (e.g., you plan to release a new product next month and therefore need to keep the DIDs until then). In this case you need to prevent the DID numbers from being used by your customers and resellers.

In order to keep the DIDs unavailable for usage, they are uploaded to the DID inventory under the Frozen status. When frozen, DIDs are displayed on the administrator’s DID inventory page only.

Frozen DIDs

To allow resellers to provision DID numbers, the administrator simply releases them to the pool of available DIDs.

Release DIDs to the pool

The DID pool is the tool that allows you to control the DID numbers that will be provisioned by your resellers. It contains the numbers that are:

  • not frozen;
  • not assigned to pricing batches; and
  • not used as an account ID, account alias, or an access number.

In order to retrieve DID numbers from the pool, resellers must have pricing batches with a DID markup assigned to them, since this markup is what they are charged for DID number usage.

Consider the following example:

You are releasing a new product in two weeks – the cloud PBX solution for your corporate customers. For this you have acquired the following range of DID numbers: 12045556500 – 12045556599. You must be sure that these DID numbers remain reserved for provisioning until the product is released. Therefore you keep them frozen in the DID inventory.

When the product is released, you unfreeze the DID numbers by releasing them to the DID pool and then distribute them to respective pricing batches.

Or, if you want your resellers to provision DIDs along with the new product, leave some of these DIDs in the DID pool.

Assigning DID numbers to pricing batches

Link copied to clipboard

You can provision DID numbers to your customers either with your markup or free of charge. The type of pricing batch a DID number is assigned to is what determines whether it is free or not. The pricing batch type is selected during batch creation.

Pricing batch