There are two methods for calculating taxes: inclusive and exclusive. Inclusive means that the rate in the price list is defined with all the applicable taxes included; so then a single xDR is produced, and the total amount in the xDR includes both charges for services and the taxes applied to them. In the exclusive method, the rate is defined without any taxes, and the total amount in the xDR includes only charges for services. Taxes are calculated later on, and added reas separate xDRs.
With PortaBilling you can use both methods simultaneously to produce the same final result. In the examples given below, you will notice that, although different taxation methods are used, the information on the invoice looks the same. Deciding which method to use for a specific group of customers depends on various aspects of the two methods, which are explained in detail below.
Inclusive rate (single xDR containing charges and tax)
When you enter rates into PortaBilling, you can define them in such a way that they incorporate the necessary charges and applicable taxes. For example, if your price is $0.10 per minute and there is 20% VAT, the rate will be entered as $0.12 ($0.10 + 20%), as illustrated below. When the customer is charged, the total amount in the xDR will then include the appropriate amount of taxes. In our example below, the customer makes a 15-minute call, which is charged at $1.80 – this amount includes both service charges and taxes.
When the invoice is created, the tax information must be properly presented to the customer. Since the total amount of the invoice and the tax rate are known, the actual amount of tax and the pre-tax amount can be “back-calculated”. In our example, we assume that there was only one charge during the billing period, so that the invoice total is also $1.8; but it works exactly the same way if there are multiple transactions in the billing period, too. By applying the tax calculation formulas, PortaBilling determines that, since the invoice total is $1.80 and the tax rate is 20%, the pre-tax amount was $1.50 and the amount of tax $0.30.
This method is ideal for prepaid services. Since every xDR produced contains the tax amount, charges and taxes are debited from the customer’s balance immediately after the service is rendered. This is also convenient for European countries, where customers are used to seeing all prices as “final.”
The inclusive rate functionality is available with these taxation plugins:
Exclusive rate (separate xDRs for charges and taxes)
In this case, the prices you enter in the system exclude any tax information, and so when PortaBilling processes a billing event, the charged amount recorded in the xDR is likewise exclusive of tax. Instead, the taxation process is launched later, when closing the billing period for a given customer (this is actually the final step in closing the billing period process, after all other operations, such as charging recurring subscription fees, have been completed). All the customer’s transactions during the billing period are retrieved and analyzed, and the appropriate taxes are assessed. These tax charges are added to the customer’s account as separate records (xDRs), and then appear on the invoice along with the other charges.
This method allows greater flexibility when dealing with complex taxation (for instance, when the tax is not simply a percentage of the price). It is more suitable for postpaid customers, since tax amounts are applied to the balance only at the end of the billing period. It is also the preferred method for customers in the US and Canada, who are used to seeing prices without tax and having tax amounts added to a bill separately.
Since taxation rules differ from country to country, PortaBilling supports a system of plug-in tax modules. When you configure a taxation plug-in for a customer class, you instruct PortaBilling how to calculate and apply taxes to your customers: as either included or excluded in the rates.
Currently, PortaBilling supports taxation plug-ins:
The latter three enable correct calculation of US state, country, and city taxes, as well as special items such as federal USF, etc.
Unified invoice templates
Since taxes are configured by customer classes, the invoice templates in PortaBilling are unified and apply to all taxation plug-ins. This makes invoicing configurations transparent and simplifies customer management.
Previously configured invoice templates are preserved for backward compatibility for information purposes and are available as read-only.
Unified codes for tax calculation via external plug-ins
Different taxation plug-ins have individual sets of taxation codes that do not always coincide. Therefore, when a service provider switches from one taxation system to another, service management could become cumbersome and lead to misconfigurations (e.g., when an existing customer with one kind of taxation signs up for a product that uses another type of taxation).
To simplify this task, the tax processing logic has been unified as follows:
Taxation for all transactions is defined in PortaBilling using internal tax transaction codes. An internal tax transaction code corresponds to the taxation code of the selected tax plug-in(s). Each set of internal tax transaction codes is unique for the administrator and their resellers.
To illustrate the tax process for customers, consider the following example:
Service provider TATA-Telecom provides voice calls, SMS, and Internet access services to residential customers. They offer different promotions as part of their marketing campaign and provide users with additional products. They also have a range of cloud PBX customers and charge them for their number of active calls.
They have been calculating taxes via taxation company A. However, they have received a better offer from taxation company B and will soon begin to use them to calculate taxes.
To simplify service management and ensure proper taxation for every customer, the administrator creates internal tax transaction codes for every taxation transaction and maps them to the taxation codes of companies A and B.
Then the administrator defines the internal tax transaction codes for each service provided:
- Custom services
- Service wallets
- Bundle promotions
- DID usage
To apply taxes to measured services, the administrator creates a service and defines the tax transaction codes within it.
When customers’ billing periods close, PortaBilling selects company A’s taxation codes for customers that still have that configured as their taxation method and sends them to that company. Likewise, PortaBilling selects and sends company B’s taxation codes to newly added customers.
Thereby the administrator configures taxation for service wallets, subscriptions, bundle promotions and measured services in a unified manner with just a few mouse clicks.
In summary, the key assets of tax calculation using internal tax transaction codes are as follows:
- Internal tax transaction codes must be specified for each transaction and custom service.
- Internal tax transaction codes must be mapped to each of the taxation plug-in(s’) taxation codes configured in the system.
- Internal tax transaction codes are ignored for customers that have VAT or custom taxation.
- Internal tax transaction codes are unique for administrators and resellers.
- The tax transaction codes are preserved when the administrator clones volume discount plans for the same entity (e.g., when the administrator clones a discount for their own use). Consequently, once the volume discount plan owner is changed, the tax transaction code will not be cloned and must be defined later (i.e. when the administrator clones reseller A’s discount and defines reseller B as its owner).
Taxation of subscriptions
A subscription can cover either a single service (e.g., an IPTV channel package) or a service bundle (e.g., 100 free minutes for domestic destinations, 200 minutes of calls to Europe, and SIP phone rental for a $20 monthly fee). In either case, subscriptions are taxed as a single unit. PortaBilling produces a single xDR that covers the subscription’s fee. PortaBilling then sends this xDR and the tax code associated with it for taxation. Thus, if you offer several services for a subscription, the tax code must cover each of them.
For this reason, you must describe your bundle to the taxation company in detail:
- which services are included,
- the price for each service, and
- the estimated percentage of every service to be used within the bundle. For example, you offer 100 free minutes of domestic calls for a $30 monthly subscription. You describe your service bundle as follows:
- interstate calls: $15 and 40% of estimated usage;
- intrastate calls: $10 and 50% of estimated usage;
- calls to toll-free numbers: $5 and 10% of estimated usage.
Each subscription can include up to three separate fees: an activation fee, a periodic fee, and a cancellation fee. Each fee may consist of charges for one or more different services (e.g., the activation fee includes equipment costs, the periodic fee covers voice call services and the cancellation fee covers some administrative costs). To calculate taxes for such a subscription, tax codes must cover every service within a bundle and must be defined separately for each subscription fee.
The taxation company can then correctly assess each service for taxation and provide the bundle tax codes. Your administrator configures a subscription in PortaBilling and associates the codes with it.
Depending on the taxation company, the tax codes can be of different types. SureTax defines only transaction codes while Avalara divides them into transaction and service codes.
To illustrate the taxation of subscriptions, let’s say that a $20 recurring subscription fee covers the following services:
- The SIP phone rental for $2.
- Domestic calls for $6.
- International calls for $12.
The selected tax company is Avalara.
The service provider describes their service bundle to Avalara and receives the transaction/service codes. The administrator enters these codes in PortaBilling, associates them with the subscription, and assigns the subscription to the customer.
At the end of the customer’s billing period, PortaBilling calculates their subscription charges and produces a single xDR record for $20. PortaBilling sends this xDR and the tax codes to Avalara. After the taxes are calculated and the data is forwarded back to PortaBilling, it applies them to the customer’s balance and generates the invoice.
For consistency, taxes for subscriptions and bundle promotions are calculated the same way: for a single xDR with the total amount of charges and using a tax code for the entire service bundle.
To summarize, these steps must be completed for subscription taxation:
- Describe your service bundles to the taxation company (e.g., SureTax) to receive the bundle tax codes.
- Configure taxation in PortaBilling:
- Configure the taxation system;
- Configure the tax codes. PortaBilling uses internal tax codes mapped to the actual tax codes. This is done to simplify taxation management for two taxation systems (e.g., when you switch from one system to another). Therefore, create internal tax codes and associate the bundle tax codes with them (Please refer to the Unified codes for tax calculation via external plug-ins section for details).
- Configure service bundles as subscriptions and assign corresponding tax codes to them.
Taxation management by resellers
Since your resellers are separate business entities, they have different taxation parameters. To properly calculate taxes for their customers, resellers and administrators manage their taxation parameters separately.
Administrators and resellers independently configure taxation plug-ins (Avalara, SureTax or EZTax) on the Taxation tab and apply them to their customers.
As a result, PortaBilling clearly distinguishes between resellers’ customers and those of an administrator and ensures proper tax calculation for them.
Optionally, if you calculate taxes via SureTax, you may configure a single taxation plug-in and allow resellers to apply it to their customers. To do this, set Yes for the AllowTaxPluginCredentialsInheritance option of the Configuration server. SureTax distinguishes customer xDRs received from PortaBilling based on the reseller ID and then creates separate tax reports for your own customers and for those of your resellers.
Taxation management for resellers grants additional flexibility to their service provisioning and ensures proper tax processing for their customers.
Taxes upon payment
As a general rule, taxes for consumed services are calculated at the end of each billing period and are included in the invoice that the customer receives.
However, for prepaid services such as prepaid cards, taxes are applied at the time a calling card or top-up voucher is purchased. The amount of the card excludes taxes. If later on a customer makes a payment using a credit card to top-up his/her account, the taxes must be applied at the time of purchase.
To enable taxes to be calculated and applied to customers at the time of payment, specify the tax rate and select the Apply taxes at the moment of the payment (prepaid Customers only) option for a particular customer class. Thus, you can differentiate among your prepaid customers and specify different tax rates for them (e.g., Canadian residential customers are charged 13% HST tax while European residential customers are charged 20% VAT tax).
This is how it works:
When a prepaid customer makes a payment via a credit card on the self-care interface the tax is calculated for them based on the amount of the top-up and is added to the payment sum. Upon successful payment processing, the customer’s balance is topped up by the actual amount excluding the tax.
For each payment transaction, two xDRs are created and recorded in the database, one for the total payment made (the topped-up amount + tax) and another one that only contains the amount of tax.
Consider the following example:
A prepaid customer, John Doe from Vancouver, BC, buys a $10 prepaid card and registers it for PINless dialing service.
After a while he only has $4 in available funds so he wants to top up his account.
He visits his self-care interface and enters $10 as the top-up amount. A $1.30 HST tax (13%) is calculated and added to the amount entered, bringing the total sum to $11.30.
John Doe confirms the payment and his credit card is charged $11.30. After the payment is processed, two xDRs are created: one for the amount paid ($11.30) and another one for the amount of tax ($1.30). John’s available funds are now $14.
If the top-up is done using a voucher, the tax amount is not included in the voucher. However, the taxes are included in the voucher purchase (e.g., when John Doe buys a $10 voucher, he pays $11.30).
Thus, calculating taxes and applying them to your customers when they make payments allows you to effectively manage your tax proceeds and keep your accounting clear.
Applying taxes to auto-payments
Very often, customers prefer to make regular automatic payments so that their service is uninterrupted and they do not have to bother with invoices. When customers use services on a prepaid basis, their taxes are calculated at the time of purchase, i.e. when they top up their available funds.
Typically, taxes for customers in the USA and Canada are calculated by external taxation companies such as SureTax and Avalara. When prepaid customers automatically top-up their available funds, PortaBilling properly determines taxes and adds them to the total sum of amount charged.
Since a prepaid amount can cover multiple services and/or destinations that might be taxed differently, it is necessary for the ITSP to estimate the percentage of services their customers will use (e.g., for local, long distance and international calls and domestic SMSs) to know which taxes to apply. To do that, the ITSP contacts the taxation company (e.g., SureTax) and describes their service needs.
Based on that data, SureTax creates a taxation bundle for the ITSP and provides a bundle ID (e.g., 100). This bundle ID is then used as a tax transaction code for the main balance top-up in PortaBilling.
To configure PortaBilling to calculate and add tax amounts to prepaid customers’ auto-payments, an administrator must map the bundle ID received from the taxation company to the internal tax transaction code.
Then the administrator creates a customer class and specifies when to assess taxes, defines the tax transaction code, and assigns that customer class to a prepaid customer.
For example, let’s say your taxation company is SureTax and your prepaid customer, “ABC,” wants to automatically make a payment of $90.00 each time their available funds drop to $10.00.
When the auto-payment is initiated, PortaBilling sends a request to SureTax with the tax transaction code and the amount to be paid ($90). SureTax calculates the taxes and PortaBilling receives $6.3 in taxes from SureTax and then adds it to the payment amount. The sum of $96.3 is then withdrawn from the customer’s credit card.
When the transaction is processed, PortaBilling creates two xDRs: one with the amount charged ($96.3) and the other with the tax amount applied ($6.3).
The administrator can also override the existing taxation parameters for an individual customer on the Edit Customer page.