What is a tax engine?
A tax engine performs the calculations necessary to return accurate, timely tax information. The AvaTax for Communications (AFC) engine is updated with tax rates, jurisdiction, and special tax jurisdiction information so that calculations for your transactions can be performed seamlessly.
The engine accepts transaction records, processes the information provided, and creates a table containing the generated tax information.
In addition, functions such as API calls are provided so you can calculate specialized taxes, automate your process, and integrate with other applications.
What's in a transaction record?
Each transaction passed to the engine is contained in a record. The engine uses this information to make its calculation. Each record usually contains information about the following:
Customer - Customer number and invoice number; customer type (for example, residential or business); exemption status such as federal, state, and local, and so on.
Company - Company identifier; whether the company is regulated or unregulated in the state of the service, and so on.
Transaction information - Date of service; amount charged; transaction and service type (requires prior mapping to your billing codes); whether the transaction is a sale or a resale, and so on.
Taxing jurisdiction - Permanent Location Code (PCode); NPANXX, Postal Codes, and FIPS codes. JCodes are Avalara's proprietary codes maintained by the engine.
Mapping your codes to transaction/service pairs
AvaTax for Communications software provides an extensive selection of Transaction Types paired with Service Types (known as Transaction/Service pairs) to meet your taxation requirements. Before the engine can calculate taxes, you must match your company's products to the valid Transaction/Service pairs.
For example, the engine uses Transaction Type 1 is for Interstate calls. The Service Type for Interstate Directory Assistance is 54. So, a Transaction/Service Pair of 1/54 is used for taxation in the correct jurisdiction if you have mapped your internal billing code for Interstate Directory Assistance to this pair of codes.
Transaction/Service pairs are added to the software on a regular basis.
For more information about how to map your billing codes to valid Transaction/Service pairs, see the Mapping Resources.
Jurisdiction determination and special tax jurisdictions
Jurisdiction determination is based on three types of locations:
- Bill-To - The jurisdiction where the transaction is to be billed.
- Origination - The starting point of a transaction.
- Termination - The destination of a transaction.
The tax engine uses several different ways to determine taxing jurisdictions and apply to U.S. jurisdictions only.
- PCode (Permanent Location Code) - Avalara uses Avalara Geo for Communications (AFC Geo) to assist in mapping customer locations to PCodes when populating the client customer database. It quickly obtains the current PCode for a specific geographical location or special taxing jurisdiction. AFC Geo is the recommended method for determining the most precise taxing jurisdictions and will be the most accurate method .
- Federal Information Processing Standards codes (FIPS codes) retrieve tax jurisdiction codes. The US Census Bureau provides codes and associated reference tables. A FIPS Code is a 10-digit numeric code with the following format: SSCCCPPPPP.
- SS is the FIPS State Code
- CCC is the FIPS County Code
- PPPPP is the FIPS Place Code
- Special Tax Jurisdictions (STJs) are defined by Avalara. They contain 99 in the State Code (SS) and are followed by the PCode.
- Postal Code input is only available for jurisdictions within the United States, US territories, and Canada.
- NPANXX (Area Code plus 3-digit exchange) input is a less accurate method of determining jurisdiction and is not recommended.
NPA CHAR (3) Numbering Plan Area code, the first three digits of a 10 digit North American Numbering Plan (NANP) number, commonly called the Area Code. NXX CHAR (3) Central Office Code, the first three digits following the Area Code in a 10 digit NANP number, commonly called the telephone exchange or prefix.
When a transaction is processed through the engine, zero, one, or more than one Tax Type is returned. Tax Types are determined by the transaction location, transaction/service pairs provided in the transaction record, and other parts of the transaction. Tax Types are used to accurately describe the exact nature of the tax applied. If no tax type applies, then a tax type is not returned.
For a list of Tax Types, see AFC Tax Types.
Tax descriptions are provided for use in taxation disclosure. This is useful in billing and customer service and simplifies tax compliance filing.
The engine allows for a change, referred to as an override, of the rate for a specific tax type and tax level in a specific jurisdiction. When you override a tax type, the tax type must exist in the jurisdiction where the override is to be made.
Billing System Integration
There are several AvaTax for Communications integration methods available for your organization.
- SaaS Pro -- A cloud-based REST web service used to calculate taxes. Billing applications send transactions to the web service over the Internet. The taxes are calculated and immediately returned to the calling application. Through your billing application, you can send and receive transactions 24 hours a day, 7 days a week. This service is ideal for adding the ability to tax purchases made from online stores; SaaS Pro customers are provided with reports for tax compliance filing.
- SaaS Standard -- For lower transaction-count customers. It enables you to obtain tax calculations without having to maintain a program on your system. Upload transactions in a batch using an Excel spreadsheet.
- License (On-premises) -- Installed locally. SaaS Pro and SaaS Standard products are recommended over License.
Tax information you define for the engine
The engine uses the information you define to calculate taxes that are customized for your business. Expand the list below for details on the types of tax information.
Customizations you define based on your business
The information you define can be sent to the engine in several ways:
- Client profiles you set up (in the Customer Portal)
- Customization files you send to Avalara to implement for your sessions
- Data you pass to the engine through an API
|Type of Customization||Description||Related Product|
|Tax Exemptions||Exemptions remove tax liability from a jurisdiction. An exemption should be used when you have an exemption certificate that allows you to be exempted from collection certain taxes for a given jurisdiction or group of jurisdictions.||
|Tax Overrides||Overrides allow you to change the rate of a tax in the tax engine.||
Exclusions determine what states or countries should be excluded from consideration for taxation.
Product offerings by telecommunication companies sometimes include a grouping of services into a special price for competitive and/or other strategic reasons. The grouping of services is called “bundling.”
Taxes calculated for bundled transactions are calculated for each transaction/service pair defined within the bundle. Brackets and other logic is applied to the transaction as a whole rather than individual line items.
Each state, and sometimes each jurisdiction within a state, has different standards for when a company is required to collect and remit sales tax. The legal term for this requirement is called nexus.
Nexus is used only for sales and use taxes, and only in the U.S.
Only you can determine whether you satisfy nexus requirements for U.S. jurisdictions.
Use exemptions or exclusions to disregard taxes for jurisdictions where no nexus requirements exist.
Types of tax information returned to you
Tax information returned to you
|Tax Information||Description||Related Product|
|Tax Adjustments (including Refunds)||Adjustments include activities such as refunds, changing a customer’s bill, or writing off uncollectible accounts.||
|Per-Transaction Taxes||The engine applies the appropriate rules and calculates taxes on a transaction-by-transaction basis.||
|Invoice Mode Taxes||
Groups transactions that apply to the same customer. The engine applies the appropriate rules and calculates taxes on the entire group of transactions.
Avalara AvaTax for Communications SaaS Pro (REST)
Avalara AvaTax for Communications License
|Grouped Taxes||Groups the tax calculation results returned in the tax table based on tax level and tax type criteria. To group the results, set the appropriate group mode option in the configuration file. The option you set is automatically applied to every License session but you can override if necessary.||
Avalara AvaTax for Communications License
Avalara AvaTax for Communications License Utilities
|Tax Rate Brackets||
Some jurisdictions dictate a tax rate that changes as the taxable amount of the transaction increases. The points at which the changes occur define the brackets (or steps) and are most commonly based on dollar amount ranges, although other units of measure exist. The rate may increase or decrease according to usage levels.
The Avalara Tax Research department continually researches jurisdictions for updates to tax rate brackets and updates the tax engine.
|Quotes or estimates||
The engine can calculate tax quotes for liability estimates without logging the results.
|Avalara AvaTax for Communications SaaS Pro (REST)|
API Function Calls
The AvaTax for Communications REST (version 2) is a cloud-based interface with a rich set of function calls. The REST API interface is documented on the Avalara Developer's site.
Use the AvaTax for Communication Utilities for reporting and file management tasks after the tax calculation is made. Tax data is output to a log file (EZTax.log), which is used as this input to reporting and file utilities.