EngageIP Tax Configuration

Summary

This document outlines the process of configuring taxation in EngageIP and how taxes are applied to accounts and services. This content focuses on a native/local tax configuration (taxes applied by EngageIP without third party tax software) but the concepts and configuration details below are not exclusive to a local taxation scheme. Additional vendor specific/regional specific tax configuration content is also available in this knowledge base, links to this content can be found below:

How Taxes are Calculated

Taxes in EngageIP are calculated on each transaction and then summed up for invoicing purposes. If you take an invoice, look at the total amount and attempt to multiply that total by the tax percentage you will usually notice a one or two cent difference due to rounding. This is the expected behavior and does not mean tax calculations are incorrect. Since calculations are done per transaction when the transaction is added rounding is performed at that time and then summed up which then reflects on the invoice.

Per transaction is also how Billsoft currently handles taxation and nationwide companies such as Bell Canada.

Should taxing fail for some reason (with AvaTax integration or out of the box tax code configurations) EngageIP will attempt to re-tax all failed charges and apply them to the latest invoice.

Tax Identifier Definitions

Tax identifiers (including Account Tax Categories, Service Tax Categories, Tax Code, and Tax Exempt) can be attached in the following ways within the system:

  • Tax Codes - can be added to services and accounts. Tax codes contain the tax rates which determine the tax to be applied to a transaction

  • Account Tax Categories - can be added to accounts. Account tax categories allow different types of accounts to be taxed at different rates (residential vs. business, etc.)

  • Service Tax Categories - can be added to Services. Service tax categories allow different types of services to be taxed at different rates (cellular, internet access, voice, hardware, etc.)

  • Tax Exempt - can be applied to both accounts and services. This component needs to be added on every account (parent or child) where you want tax to be exempt. If this component only exists at the parent account level then taxes will only be exempted on parent transactions but not on child account transactions. To exempt tax on child accounts the tax exempt component must be added on the child accounts as well

Tax Configuration Options

Tax vendors need to be configured before taxing will function. Tax vendors can be configured to utilize third party tax systems (AvaTax, SureTax) or tax using EngageIP's tax engine (local). Tax vendors are associated with each tax code in the system, so it's possible to perform taxing using multiple vendors if desired.

Once tax vendors are setup there are several other tax settings that can be configured to apply taxes within the system. Applying taxes using the local system (taxation performed entirely by EngageIP) requires the configuration of Tax Codes and Tax Rates. Account Tax Categories and Service Tax Categories can also be configured if desired to tax specific accounts and services with the desired tax rates. Settings for these items are located on the Setup page as illustrated below.

Tax Vendors

Location: Setup menu / Taxes section / Tax Vendor

Tax vendors define the tax software to use, i.e. AvaTax (Avalara cloud based tax solution), Billsoft (older Avalara on-prem solution), SureTax and local (EngageIP tax engine). Each vendor is configured with a charge script, to utilize local (EngageIP) taxation you would add tax vendor with the following script:

return Logisense.Boss.Logic.TaxVendorLocal.Local(context);

Tax Codes

Location: Setup menu / Taxes section / Tax Codes

Tax codes are configured with tax rates which are then applied to account transactions. Tax codes can be setup to be applicable to a geographic location and/or to specific services (by configuring the tax code with a service tax category) or to particular accounts (by configuring the tax code with an account tax category). The two Canadian tax codes shown in the image below are regional (applicable to the provinces of Ontario and Quebec respectively). In order for tax rates to apply for these tax codes the rates must be configured and added to the tax codes. See the Tax Rates section below for details.

Tax Rates

Location: Setup menu / Taxes section / Tax Rates

Rates are configured and attached to tax codes to apply tax rates to account transactions.  In the example below two taxes applicable in Quebec are configured (GST at 5% and QST at 9.975%) and one tax rate applicable in Ontario is configured (HST at 13%).

Note: the QST rate above is rounded to four decimal places in EngageIP due a tax precision value of '4' being set on the Configuration page.

To apply the tax rates to accounts in Quebec the rates must be added to a tax code, the tax code example below shows the attached rates in the Tax Rate Details section.

Service Tax Categories

Service tax categories are setup and attached to both services and tax codes. Service tax categories are only required in scenarios were specific taxes need to be applied to specific services. If you apply the same VAT tax on every service charge you would not need to use service tax categories.

If a service is present on an account with a service tax category it will only tax based on a tax code that is configured with a matching service tax category. For instance if you add a tax code component to an account which is configured with no service tax category and a service on the account is setup with a service tax category, the tax code set at the account level will not be selected when attempting to tax service charges related to the particular service (as the tax code's service tax category does not match the service's service tax category). In the mismatch scenario stated above the system will ignore the tax code setup directly on the account and look for another tax code that is configured with the service tax category in question and use it for taxing the service transaction.

Note: a 'Default' tax code can be configured which will be used when the system cannot find a tax code which matches the account/service configuration. See the Default Tax Code section below for more information.

To add Service Tax Categories to Services:

  1. Click on Setup

  2. Click Services

  3. Click on the Service you want to add the category to

  4. Click the Add button under Components section

  5. Select the Service Tax Category

  6. Click Save

Account Tax Categories

Account tax categories function in the same way service tax categories except they are added to both accounts and tax codes instead of being added to services and tax codes. Account tax codes are only required if you need to tax accounts differently based on the type of accounts you have setup.

Account tax categories once configured on the setup page can be added to accounts under the Overview > Components section. Like service tax categories account tax categories must match a tax code exactly, if you add an account tax category component to an account with category of 'Business' there must be a tax code configured on the Setup page with an account tax category of 'Business' to tax the account transaction with the desired account specific tax rates. Tax codes which have no account tax category set, or a mismatched account tax category (compared to the account tax category component configuration on the account) will not be selected when attempting to tax transactions on the account.

Account tax categories can be used in combination with other tax code settings, for instance if you had a corporate tax which only applied to a particular service, the tax code could be configured with both a service tax category and an account tax category.

Account Components

On an account's Overview page you can add the Account Tax Category, Tax Code and Tax Exempt components for the account.

Tax Application Process

Tax codes are used to apply taxes to account transactions. The taxes that are applied are determined by one or more tax rates configured on the tax code. Tax codes can be directly added to an account or service to specify the tax rates to apply, or tax codes may be automatically selected by the system. If a tax code is configured directly on an account you will see it listed on the Overview page under the Components section (shown below).

If the account has settings that match a tax code in the system (whether the tax code has been directly added to the account or not) the tax code the account will use will listed on the Overview page under the Details section (as shown below).



If there is no 'Tax Code' listed under an account's Details section it indicates that there is no tax code in the system that matches the account configuration. For example the account has an 'Account Tax Category' component set on it with a value of 'Corporate' but there are no tax codes setup in the system configured with an account tax category value of 'Corporate' then there is no appropriate tax code to use (mismatched tax codes will not be used, except with the special 'Default' tax code which will be used when the system fails to find a valid tax code for the account. See the Default tax code section below for more information).

Tax Code Selection Process:

  1. If a tax code component exists on a user-service and the tax code's settings are aligned with account settings then tax the transaction using the tax rates in that tax code

  2. If a service tax category component exists on a user-service look up the tax code that matches the service tax category specified. If more than one tax code is configured with the same service tax category then use the tax code whose settings best match the account settings (i.e. compare the account tax category and location settings in the tax code configuration against the account's settings)

  3. If a user-service has a contact component on it, reference the service contact's address (if configured) to determine what tax code to select. Note: a tax code that matches the service contact's address will still need to match other account settings to be selected for taxation. For example if an account has a service contact with a Berlin address and an account tax category with a value of 'Business' then a tax code configured with Country: Germany, State: Brandenburg and Account Tax Category: Residential will not be used because that tax code's configuration doesn't match the account configuration

  4. If a tax code exists on the account (account Overview Page > Components section) with settings that are aligned with the account's settings then tax based on the rates found in that tax code

  5. If an account tax category component is set on the account select a tax code that contains the specified account tax category. As above, chose the best matching tax code when multiple tax codes are configured with the same account tax category

  6. If none of the above are applicable, tax based on the service contact's address. If a service contact does not exist or does not have an address specified then tax based on the billing contact's address (Note: child accounts configured with different service/billing contact addresses can/will tax differently than the parent account when taxing by address)

Selecting a Tax Code based on Address

When matching an address above to a tax code, EngageIP will do the following:

  1. First, it will look up the Country value on tax codes in the system

  2. If one or more tax codes are found with the same country configured then the State will be checked in those codes for a better match

  3. If more than one States are found it will look further down to find a match on City and lower until it finds the best possible match

  4. At any point, if it doesn't find the next lower value, it will take the best match from the existing list of matches

Tax codes which have address details that match the account contact address but category configurations which do not match the service tax category or account tax category will not be selected for taxation. The exception to this rule is the Default tax code (explained below).

Default Tax Code

Default is a special tax code that can be configured in the system so that it will be used when the tax configuration of the account doesn't match an existing tax code.

Note: Note: 'Default' is case-sensitive, creating a tax code called 'default' will not work.

The 'Default' tax code unlike other tax codes will be selected when tax code settings do not match. For instance if you have a service to tax that has a service tax category set to 'hardware' and there is no tax code in the system configured with service tax category: 'hardware' the system will check for a 'Default' tax code and tax based on its rates even if the Default tax code has no service tax category specified.

The Default tax code will be selected to tax account transactions only when an account has some configuration which indicates tax codes should be referenced. If you do not configure any contacts with addresses, tax codes, tax categories at the account or service level then the Default tax code will not be used because the account has no tax related settings whatsoever (the account is not setup to be taxable).

Counties

Counties are not recorded on billing contact addresses or other contacts however they can be used from a tax code perspective to group a number of cities together without having to create a tax code for individual cities. If you create an encompassing county tax code with the city field left empty, EngageIP will do a reverse look up and if a city is associated to a county on the Setup page and there is a tax code with a country, state and associated county but no city, it will use that tax code.

Parent / Child Applications

In a parent/child account relationship, if the parent has an account tax category in place and the child account does not, the child will not inherit the parent's account tax category configuration. The child account in this situation will tax according to the parent's billing address (assuming the child does not have a tax code set, or service/billing contact addresses specified). If you require child accounts to tax according to an account tax category then the account tax category component must be set on the child account.

Child accounts with different service/billing addresses can/will tax differently than the parent according to address and tax codes specified.

Inheriting Another Account's Tax Configuration / Tax Invoicer Configuration

You can configure accounts to tax based on another account's tax configuration (the tax code they have setup, account tax category, etc.). This setting is called 'Tax Invoicer' and can be found on any account by loading the Tools menu and clicking on Invoicer. The accounts you can select must be in the account hierarchy (e.g. a parent account or owner account), you cannot select any account under the current owner.

Invoicer settings are described in the Account Invoicer Configuration article.

Owner (Using Bill to Owner Configuration) / Parent / Child Applications

In an owner billing scenario (owner config = 'Bill Owner Using Owner Taxes'), if there is an account tax category on the owner user then taxes will be calculated based on the owner's account tax category. Both parent and child accounts under that owner will respect the owners account tax category.

Taxing Usage (UDR)

This section describes when usage is taxed in a UDR environment.

User Invoicer can be defined for taxing (tax invoicer) on the tools page. The Tax Invoicer settings are described in the Account Invoicer Configuration article.

Tax Invoicer (introduced in EngageIP 8.5.27.1): specifies which account’s tax settings to use when calculating taxes (e.g. observe the tax invoicer’s tax code, account tax category, etc.). Only accounts in the same hierarchy can be selected as a tax invoicer (i.e. parent account, owner account)

UDR usage is taxed at time of rating or at time of billing. Taxing, where AvaTax is used as an example will respect any Account Tax Exempt levels or overrides specified in the EngageIPOption table in the database.

Tax calculation for individual calls is based on call type, inbound, outbound etc. and not based on service/service tax category necessarily. For example, adding a credit using a usage service will not calculate the same tax as the original group of calls. In this case you need to use the 'tax adj' buttons (on the Transactions page) to balance the account if a refund or credit is needed.

Voiding an invoice will cause usage to re-rate and therefore will cause that usage to attempt taxing again if no tax currently exists. This assumes that a configuration change was made after it was first rated and billed to change the outcome of the tax calculation.

Choosing a Tax Configuration

While there are multiple methods to apply taxes (adding tax codes directly to accounts, using account tax categories, service tax categories, etc.) it is unlikely in many taxation scenarios that you will need to configure all or most of these options. If you have a scenario where you only need to apply a most one or two taxes across multiple states/provinces you would simply setup the few tax codes needed with the appropriate location details and then ensure that service and/or billing contact's addresses on accounts were populated. E.g. if you needed to apply one sales tax for all service charges in France and another sales tax for all service charges in Italy you would setup two rates and two tax codes. One tax code would be configured with its Country value of 'France' and the other tax code would be configured with a Country value of 'Italy'. The appropriate tax rates would then be added to the tax codes. That would be all the configuration required as in this scenario you do not need to tax specific accounts or services with account/service specific rates, nor do you need to be more granular with location details as the taxes in this situation are applicable across entire countries. If a new tax were to be introduced in either country which was account, service or location based (specific to a state/province, or down to a city level) you could simply add another tax code with the specific details (e.g. if an additional tax was applicable in Marseille then you would add a tax code with the city defined as 'Marseille'. When an account address gets evaluated against tax codes it would use the general 'France' configured tax code when the account contact's city value does not match 'Marseille' and use the 'Marseille' tax code when the account contact's city does match).

Validating/Reviewing Applied Taxes

Taxes applied will be displayed on a account's Transactions page. You can test that tax is working by simply adding a transaction to a test account (shown below).

In this example a $100.00 transaction was charged $13.00 in tax (13% rate). This is the appropriate rate for HST in Ontario where the account is located. The Details section on the Overview page of the account confirms that this account is using the Tax Code 'Ontario Taxes' (this tax code was automatically selected because the account billing contact had an Ontario address).



The exact tax code used for a given transaction can also be determined by clicking on the 'ID' link on the Transactions page (ID '35' in the image shown at the top of this section). The edit page that loads after clicking the ID will show the tax code used under the 'Transactions' section.



In this case only one tax rate was applied (HST), if more than one tax rate is configured on the tax code then the name and charge for each tax rate will be listed under the Transactions heading.

Taxes applied are also displayed in Reports. If you click on Reports on the left hand menu and navigate to the Taxes heading you will see the Taxes Payable report. When you load this report you will be able to view and filter all of the taxed transactions that have occurred under the current owner.

The report results in the image above have to filtered to show the single HST charge applied to the Tax Test account. This report details what tax was applied and when, it includes:

  • The user (account) that was taxed

  • The name of the Tax Rate applied

  • The name of the Tax Code selected for taxing (which contained the Tax Rate)

  • The Charge (transaction amount)

  • The Tax Amount applied

  • The Rate used to calculate the tax

Billing Address Changes and Taxing

It may be necessary to check what a billing address is at a specific date (when taxing is location based) in certain situations. EngageIP tracks this information in the following ways:

  • For third party tax integrations (AvaTax, SureTax): historical taxation for each transaction is stored in a TaxLog table in the EngageIP database. This table includes jurisdiction details (pcodes) used at the time of taxation for any transactions or usage billing

  • The Audit Log Report will capture any changes to addresses or pcodes in the objects 'ContactPointAddress' & 'ContactPointAddressAttributeJurisdictionCode'. Ensure these objects are enabled (User Audit=yes) if you need to reference the historical values of addresses

Automatic Tax Error Correction

Sometimes errors occur in EngageIP which are detected and then automatically corrected. In the case of taxes, if an error is found related to tax application, EngageIP will attempt to add an adjusting tax transaction with detail appended like so: ** Fixing tax error from previous charge **

This is normal and is an indication that EngageIP spotted the error and attempted to fix it.

Related Scripts

Add Tax Category to a Child Account
Adding-AccTaxCat:

Delete Tax Category from a Child Account
Deleting-AccTaxCat:

 

Related pages