User Rating: 5 / 5

Star Active Star Active Star Active Star Active Star Active
 
metered-voip-minutes-287x300.jpg

If you are looking forward to having an IP Telephony business at some point you will get into the economics of the business. After all, it is a business and if you don't profit, there is no sense to do it.

When you are looking for your termination trunks (termination, in this case, is for outgoing calls from the point of view of your PBX), the idea here is to get the best carrier (if you are going to select only one) with the overall best rate.

Understanding the Telecom Terms and Nomenclature

Regardless of the carrier you get, the rate list will have at least the following elements:

  • connection rate: usually specified in USD and in minutes. If your carrier doesn't specify this, the connection rate will be the same as the talking rate.
  • connection increment: specified in seconds. If your carrier doesn't specify this, the connection increment will be the same as the talking increment.
  • talking rate: usually specified in USD and in minutes.
  • talking increment: specified in seconds.

When a carrier tells you something like:

0.3300/0.3300 6/6

It is equivalent to:

connection rate/talking rate and connection increment/talking increment

If one of them is omitted, it means both rates or both increments are the same.

The following image explains the relationship between them during a call.

call billing timeline

When the call is answered at t1, the carrier applies the proportional part of the connection rate. If the call is longer than the connection increment (see t2), the carrier will start applying the proportional part of the talking increment.

Lets put this in a small PHP function that will explain better the logic:

function call_cost($call_time, $talking_rate, $talking_increment, $connection_rate = null, $connection_increment = null){
       $cost = (double)0.0;
       if (is_null($connection_rate)){
               $connection_rate = $talking_rate;
       }
       if (is_null($connection_increment)){
               $connection_increment = $talking_increment;
       }
       if ($call_time > 0){
               $cost = (double)$connection_increment * (double)$connection_rate / (double)60.0;
               if (($call_time > $connection_increment) && ($talking_increment)){
                       $call_time -= $connection_increment;
                       $times = intval($call_time/$talking_increment) + (($call_time % $talking_increment)?1:0);
                       $call_time += (double)$times * (double)$talking_increment * (double)$talking_rate / (double)60.0;
               }
       }
       return $cost;
}

Variable names are self-explained. Let's do some examples with simple numbers. Let's pretend a carrier is giving a rate of 1 $/min and increments of six seconds. Since it is not specifying a connection rate or increment, they are the same.

  • if the call length (call_time) is 3 seconds: cost = 6 * 1 / 60 = 0.10 $
    because the first increment is six seconds, the carrier will bill the first six seconds regardless that this call is 3 seconds.
  • if the call length is 6 seconds: cost = 6 * 1 / 60 = 0.10 $
  • if the call length is 15 seconds: cost = (6 * 1 / 60) + 2 * (6 * 1 / 60) = 0.30 $
    the 2 is given by the $times variable that is the integer division of the call length ($call_time) by the talking increment ($talking_increment) + 1 if there is a remainder (module operation).
    the carrier bills the call as if it were 18 seconds because the increments are in six seconds.
  • if the call length is 1 min: cost = (6 * 1 / 60) + 5 * (6 * 1 / 60) = 1 $

Is a Carrier with Lower Rates and Higher Increments more Expensive than One with Higher Rates and Shorter Increments?

What a good question! I would say that the rate is more important than the increment but let's analyze this with fast numbers. The following is a real scenario, calling Ontario Canada. There are many carriers, but for the sake of this example, the following have different combinations.

 Carrier Rate (USD) Increment
(connect/talking)
 To Connect Me 0.0018
(lowest rate)
9/4
(9*1 + 4*12.75) / 13.75 = 4.36 (1-min average plain increment)
(shortest increment)
Twilio 0.0130
(highest rate)
60/60
(longest increment)
Plivo 0.0085 6/6
Voxbeam 0.0033 30/6
(30*1 + 6*5) / 6 = 10
VOIP MS 0.0051 6/6

 

The 1-minute average plain increment is just a weight average of the increments within 60 seconds. You can use this kind of metric to compare carriers with different increments.

Prices and increments were taken from each Carrier website. Some are public, others you need to sign up to obtain them. 

If the call length was the following (six decimal precision):

 Call Length (seconds) To Connect Me Twilio Plivo Voxbeam VOIP MS
3 secs 0.000270 (1) 0.013000 (5) 0.000850 (3) 0.001650 (4) 0.000510 (2)
6 secs 0.000270 (1) 0.013000 (5) 0.000850 (3) 0.001650 (4) 0.000510 (2)
15 secs 0.000510 (1) 0.013000 (5) 0.002550 (4) 0.001650 (3) 0.001530 (2)
30 secs 0.000990 (1) 0.013000 (5) 0.002550 (3) 0.001650 (2) 0.002550 (3)
60 secs (1 min) 0.001830 (1) 0.013000 (5) 0.008500 (4) 0.003300 (2) 0.005100 (3)
600 secs (10 min) 0.018030 (1) 0.130000 (5) 0.085000 (4) 0.033000 (2) 0.051000 (3)
Average place 1 5 3.5 2.83 2.5

 

A small increment is not always a direct sign of an affordable carrier. Rate is more important.

Rule of dumb:

Always avoid carriers with increments greater than 30 such as 30/X or 60/60.

The last table did a fair average position of the call cost per carrier. However, that table assumes that you have the same share of 6-secs calls as 600-secs calls which is unlikely to have. You should analyze your traffic and know the percentage of calls you have and execute the table. This way, you will have a clear picture of what carrier to select. The rate-increment combination makes some carriers cheaper than others depending on the call length.

What is FAS?

FAS is a lowlife technique that some carriers do in order to maximize their earnings. When a carrier starts billing when the call is ringing (to in the timeline picture) we say it has FAS.

Happily for everyone, detecting FAS is easy.

  1. Make sure nobody is using the trunk,
  2. Make sure about the surcharges that a cancel call may take,
  3. Take note of your carriers balance,
  4. Make a call, let it ring for quite sometimes (2-3 mins if possible),
  5. Review your balance.

If the balance has changed it is very likely your carrier is having FAS. It is very common that some carriers charge you for a high cancellation ratio, so before claiming anything, make sure you understand the surcharge policies.

Good luck!

blog comments powered by Disqus

About

Read about IT, Migration, Business, Money, Marketing and other subjects.

Some subjects: FusionPBX, FreeSWITCH, Linux, Security, Canada, Cryptocurrency, Trading.