Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

If no jurisdiction code is present for a contact's address when EngageIP tries to charge taxes, EngageIP will attempt to retrieve the proper code. If the code is found it will be stored in the database and EngageIP will continue with tax calculations. If this fails (or for some other reason a tax rate cannot be found) a record gets created to indicate that the statement detail was not taxed. EngageIP will reattempt to charge tax on this detail when the invoice is closed. If it is successful, then it will add the tax to the detail, and remove the flag that indicates taxing was unsuccessful. However, if taxing is still unsuccessful, then the flag will stay set. When the user's next invoice is closed, EngageIP will reattempt to tax these old details. If it is successful, it will create a new $0.00 detail on the current invoice with taxes on it, and a description to indicate that they're previously failed taxes. Currently, EngageIP will try indefinitely to charge the taxes for an account with each closed invoice.

Info

Note: to prevent EngageIP from continuing to attempt to charge failed taxes, you can remove the statementdetails row from StatementDetailsFailedTaxes table.

Jurisdiction Updates

Billsoft automatically updates jurisdictional boundaries when billsoft updates are applied. Any alterations in jurisdictional boundaries (such as an expansion of a city limit) will be reflected in the JCode of locations that are situated within the expanded jurisdiction area. The Avalara tax research staff monitors jurisdiction taxation activity to maintain current and accurate taxation information. The results of this research is applied to monthly updates which are provided to insure the most accurate taxation is applied to the records processed by the billsoft Engine. JCodes change as monthly updates are applied, it is the users responsibility to re-populate their database tables with the new JCodes every time a Billsoft update is provided. If this task is not performed, the Billsoft Engine will return incorrect tax calculations for jurisdictions that have been updated. However, when a transaction is submitted with the stable and location sensitive p-code, the Billsoft Engine can use internal functions to obtain the correct jurisdiction. Since the Billsoft Engine is updated with the re-mapped jurisdiction information monthly, tax calculations are always performed with the most current jurisdiction taxation information that applies to the address defined by the p-code.

...

  1. Download either the 32bit or 64bit installer files. Which you choose will of course depend on whether the server you are installing it on is 64bit or 32bit. Extract the files. Run update.exe. This will walk you through installing the Billsoft software. Avalara strongly suggests using the default directories (i.e. C:\BillSoft). The EngageIP library expects to find EZtax in this location

  2. If EngageIP is running on a 64bit server:

    1. Ensure you installed the 64bit version of Billsoft

    2. Verify the IIS APP POOL has 'Allow 32 bit' set to false

    3. Verify HANDLERS in IIS has only one .rails pointing to FRAMEWORK64 (Check this for the AdminPortal and default sites)

  3. Configure the Environment Variables as outlined by the Billsoft Documentation *** Environment Path should be equal to: C:\BillSoft\EZTax\DLL;C:\BillSoft\EZTax\EXE; (Make sure no spaces are used and that the semicolons are in place)

  4. Reboot the system for the Path changes to take effect

  5. In the EngageIP AdminPortal, Setup tab add the following Workflow to update p-codes based on the users address
    Create an "Action"
    Name: EZtax pcode
    Event: ContactPointAddress.Create,ContactPointAddress.Update
    Code:

    Code Block
    int id = Int32.Parse(context["ContactPointAddressID"].ToString());
    return EZTaxWrapper.GetPcode(id);

  6. Configure the Billsoft tax vendor for transactional or invoice level taxing

    1. To configure taxation per transaction:

      1. Load the Setup page

      2. Load Tax Vendor

      3. Click Add

      4. In the TaxVendor Type list select BillSoft

      5. Click Save

      6. For Vendor enter Billsoft

      7. For the Charge Script enter

        Code Block
        TaxCode taxCode = (TaxCode)context["taxCode"];
        double taxableAmount = (double)context["taxableamount"];
        StatementDetails sd = (StatementDetails)context["statementdetails"];
        int taxTypeId = (int)context["taxtypeid"];
        return TaxVendorManager.GetTaxes(taxCode, taxableAmount, sd, taxTypeId);
        
      8. Click Save

    2. To configure taxation on invoice close:

      1. See the invoice level taxing section below

  7. Enable the tax log, detailed here (further down page) This is required for reporting and reconciliation purposes

  8. Check on the Configuration page in the EngageIP AdminPortal to ensure scripts are compiling correctly. If not, check for errors

  9. Update the Billsoft install folder (default install directory name is 'BillSoft') granting EVERYONE - FULL CONTROL permissions

  10. In the AdminPortal > Setup tab add a Tax Code called 'Default' as shown below

    Note: the less you configure in the Tax Code the more customers it will apply to. I.e. if you do not populate any location details (Country, State, County, City) then all accounts under the owner will use the Tax Code and therefore use Billsoft. If you need to tax services slightly different by way of tax categories, you can create multiple tax codes called Default with different location configurations to meet your requirements

  11. Import Service Tax Categories or Setup Custom Billsoft Tax Types (EngageIP 8.5.17.0+ required)

    1. Import Service Tax Categories using the the instructions provided below. You will need to make this list into an XML file for import using the following format:
      XML Files and Data Formatting
      Service TaxTypes Import
      The ‘Service TaxTypes Import’ xml file can be found below these steps under ‘Import Documents’

      Note: Service Tax Categories if used at all should be added to ALL services that require taxing to be sure the correct tax is applied. Please contact Avalara support for further assistance here

      Note: if you are running an EngageIP version below 8.5.17.0 and want taxes to be applied by Billsoft, you MUST use the service tax categories that Billsoft recognizes. Custom Service Tax Categories are not available prior to EngageIP 8.5.17.0

    2. See the Setting up Custom Billsoft Tax Types section below if you wish to setup Custom Billsoft Tax Types

  12. Setup / Import Account Tax Categories (Billsoft supports the following tax categories - Residential, Residential Incorporated, Business, Business Incorporated)
    Note: An account tax category of just 'Residential' implies that the account is 'unincorporated'. The same is true for a 'Business' account tax category, it really means 'Business Unincorporated'

    1. Import Account Tax Categories using the XML linked to provided in the 'Import Documents' area below or Configure Tax Categories on the Setup tab and add them to the customer accounts as required
      AccountTaxCategoryXMLImport

    2. Account Tax Categories are added as components on the customers 'Overview' page. Load the customer's Account and under the Components section click Add and then Account Tax Category. Select the Appropriate tax category and click Save
      Note: Account Tax Category needs to exist on the sub account and on the main account to tax the account specific packages and services correctly

  13. For EngageIP 8.5.26.0+ Installs:

    1. Download, extract and run the following script EZTaxTaxTypeMappingInsertScript provided below on the EngageIP DB server to create and populate the EZTaxTaxTypeMapping table

Import Documents:

View file
nameTaxTypes-Import.xml

View file
nameAccountTaxCategoryXMLImport.xml

View file
nameEZTaxTaxTypeMappingInsertScript.zip

Post Configuration Steps

Testing

...

To add jurisdiction codes to all customers in the system (if you've configured Billsoft after customer Accounts were already present in EngageIP) without the need to navigate to and save every Address Contact Point Type, you can use the updater tool on the webserver located here:

...



C:\Program

...

Files

...

(x86)\EngageIP\Tools\

Double click the 'ContactPointAddressUpdate.exe' executable. This tool when run will look at all Users and attempt to add Jurisdiction Codes where there are none.

...

Setting up Custom Billsoft Service Tax Types

Info

...

Note: These do not work for the Avatax implementation or cloud implementation. This only works for on premise Billsoft. For Avatax cloud, add items with correct T/S pair to the EZTaxTaxTypeMapping table in the database

...

.

...

Requires EngageIP 8.5.17.0 or higher

  1. Load the Setup tab

  2. Click on Service Tax Categories

  3. Click the Add button

  4. Enter the name in this custom format CustomEZTax(Name,<transactionType>,<serviceType>)

    • the format above cross-references the Tax Type Name to the Transaction/service types

    • e.g. a Tax Type with the name CustomEZTax(MyTaxType,1,2) would configure a custom tax type with transaction type 1, and service type 2

    • the Name must be entered without slashes or spaces, i.e. CustomEZTax(VPNxxxMPLS,61,586)

  5. Click Save when finished or Save/New to save the new custom Tax Type and create another one

...

  1. Click Setup tab

  2. Click Services

  3. Click on the name of the desired service

  4. Click the Add button under Components

    • Select Service Tax Category

    • Select the appropriate item

    • Click the Save button

  5. Done - Proceed to other services to do the sameRepeat the steps to configure additional service tax categories on services as needed

Multiple Branded Owners Install

...

The rating script should look something like below and have the 'Set UDR Taxing' processor in it:

...

Info

Note: UDRBillerTax and StatementdetailsTax may both contain information, however only one is referenced based on the CDRLevelTax configuration described above.

International Taxing

International taxing with functions very similarly to the way US and Canada taxing functions. In the postal code text box, enter a valid code, and ensure that the country on setup has a valid ISO defined, 2 character. This will match to the CountryISO table in the EngageIP database.

...

<TaxType Owner="admin" TaxType="Telephony Service"/>

TransType

TRANS_ALIAS

ServType

SERVICE_ALIAS

15

Telephony

7

Service

15

Telephony

624

Wireless Service

15

Telephony

627

Internet Access

15

Telephony

629

Messaging Services

 

Tax Exemption Options

Tax exemption is now available at multiple levels, as below.

Info

Note: you need to have the UserAttributeTaxExempt and UserAttributeTaxExemptLevel Role Permissions configurd on your Role to see each option under components on an account.

Info

Note: an exemption at the parent level will apply to all sub account levels as well so there is no need to duplicate exemptions on child / sub accounts.

  • All - this exempts ALL Billsoft taxes

  • Federal

  • County

  • State

  • Local

  • County_Local

  • Other

  • State_County_Local

  • Unincorporated

Info

Note: if you want to exempt County, State and Local taxes, which may tax individually, you need to add each individually rather than just selecting 'State_County_Local'. The  'State_County_Local' is only for tax line items that are an aggregate tax for these three definitions.

Configuring Tax Exempt Levels

...

Info

Note: Tax exempt types as of 8.5.17.x are added into the TaxExemptType table for use in the exemption levels component during upgrades. When the upgrade occurs to EngageIP, it loads the current tax types from the billsoft dlls and adds them to the existing list of tax types which you can then use going forward. If Billsoft has new tax types but they do not exist in EngageIP, you can manually add them to the TaxExemptType table, reset IIS and restart services, and then test their application on accounts to confirm exemptions are working as expected.

Tax Exempt Type Import XML file: TaxExemptTypes

View file
nameTaxExemptTypes.xml

Account Level Tax Exemption:

  1. Click on the Overview tab of the account you wish to apply tax exemption to

  2. On the right side under Components click Add

  3. Select Tax Exempt Level (To determine the correct selections, see the description below this list describing how to find it)

    • Select the specific exemptions such as Federal exemption.

    • Optionally: select the tax exempt type (as illustrated in the image where there is a federal base exemption and the type is ADVANCED...)

    • Click Save

  4. Repeat this process if you need to apply multiple tax exemptions at different levels to the user account (the above image shows to exemptions applied, one for state taxes and one for federal taxes)

...

Type: FCC_REGULATORY_FEE_VOIP (where the type is basically what is shown in the transaction detail with the additional VOIP element attached.) (Similar bracketed values may include 'WIRELESS' and such)

To TestTesting:

  1. Add a transaction that taxes with the tax you want to exempt

  2. Confirm the tax is charged as expected

  3. Add the new exemption

  4. Add a new transaction for the same amount

  5. Confirm that the tax amount is zero for that same tax type

Tax Override Options

Info

Note: If overrides exist that are the same in multiple places, there may be errors in the Billing service log file (or other service log files) stating that tax overrides cannot be added. This is due to there being multiple overlapping overrides or tax exclusions and Billsoft is tossing out the duplicate overrides where encountered. This is a non-issue as taxes will be applied correctly using the first override that Billsoft processes.

There are two basic ways to override taxes when using the Billsoft integration

...

Excluding Country or State Taxes Per Owner

Tip

New feature in EngageIP 8.5.27.0

The configuration steps below describe how to exclude taxes per Owner at a Country level (both Federal and State taxes) or at a State level (State/Provincial taxes only).

...

You can import Tax Exclusions by using the EngageIP XML Import feature. First create the XML (sample TaxExclusionImport xml), then

View file
nameTaxExclusionImport.xml

Then do the following:

  1. Load the Setup tab

  2. Click on Import

  3. Either click Choose File or paste the XML into the XML Data field

  4. Click Save and you should see a 'Import successful.' message

  5. Return to the Setup tab and load the Tax Exclusions page to verify the imported exclusions are present

...

Configuring Inclusive Taxes on Services

Tip

New feature in EngageIP 8.5.25.0

When added to a Service the 'Inclusive Taxes' Component cause taxes to be calculated within the set price of the Service in question. Inclusive tax calculations are performed by Billsoft with EngageIP using the returned values to set the revenue and taxes on Services.

Info

Note: Inclusive Tax is not applicable to transaction reversals, credits or usage.

Inclusive Tax System Configuration

  1. Access the EngageIP host

  2. Open the BillSoft installation folder and edit/add the EZtax.cfg file in the Data sub-directory (e.g. C:\BillSoft\EZTax\Data\EZTax.cfg)

  3. Using a Text Editor add the following line at the end of this file

    reversecalcsession=on

  4. Save and close the file

  5. Load the EngageIP Adminportal Setup tab and select Tax Vendor

  6. Edit the BillSoft tax vendor and replace the existing script with the one listed below
    BillSoft Tax Vendor Script

    Code Block
    TaxCode taxCode = (TaxCode)context["taxCode"];
    double taxableAmount = (double)context["taxableamount"];
    StatementDetails sd = (StatementDetails)context["statementdetails"];
    int taxTypeId = (int)context["taxtypeid"];
    return TaxVendorManager.GetTaxes(taxCode, taxableAmount, sd, taxTypeId);
    


Adding the Inclusive Tax Component to Services

...

If jurisdiction codes are not able to be found, the Billsoft integration will simply assign a zero for the pcode (jurisdiction code). To locate and update these in an automated fashion, the following action can be implemented to set generic pcodes in states / provinces where its not able to locate a specific pcode.

Event:

Event can be timer.midnight. Be sure that there is a timer named that in the database.

  1. Open BOSS database

  2. Open table 'WorkflowEventTimer'

  3. Enter name in name column

  4. Enter hours and minutes in same named columns, this is 24 hour time. 23 = 11pm

  5. Hit enter. The first and last column can be left null and will be updated by the system.

  6. Remember the exact naming here as it will be entered on the action below

Action:

It should not be triggered off of ContactPoint.Update or add since that will fight for resources with the general jurisdiction code updater script.

Info

Note: of the two scripts below, one is for ID based states (state predefined) and one is for manually entered states (not predefined).

The below is for free form state entry, where state is not configured as predefined so this looks by state name, not ID. Need to determine which the system users and select the appropriate action script

...

  1. Run this command in SQL:

    Code Block
    INSERT INTO EngageIPOption (Name,VALUE) VALUES ('TaxLog','True')
  2. Restart billing, event, job services.

  3. Reset IIS

The TaxLog table has nothing to do with billing, it simply logs the tax taxes that was were calculated and applied.

Temporary Disabling Billsoft Integration

...

  • Ensure that no taxcodes are associated to Billsoft taxvendor, if they are, the next item will error with foreign key error.

  • Remove the TaxVendor EZtax (or named Billsoft)

  • Remove all the workflows related, ie i.e. pcode action that sets jurisdiction code

...

To auto update these with an action, see the 'Zero Jurisdiction Code Updater Action' section belowabove.

Rate / Tax Bundler

If you're using the tax bundler file and entering more rows, the max number of a row is 32000 so if you try to use 50000 it won't be used.

...

To assign in EngageIP, add a new service tax category with that bundle  name and IDs per format below.

CustomEZTax(BundleLongDistanceBucket,20000,20003)

...


Invoice Charge Script - Taxing on Invoice Close

Info

Note: this functionality requires EngageIP 8.5.27.0 or newer to function.

As the name implies tax on invoice close (a.k.a. InvoiceLevelTaxing) calculates and applies tax when closing an invoice. If the invoice is opened, taxes will remain but if the invoice is closed again taxes will be recalculated. Taxlog entries will be removed accordingly and added back in a reopen/close invoice scenario.

...