3 Creating Tax Codes
In Oracle Communications Billing and Revenue Management (BRM), you use tax codes to assign taxes to the products and services that you sell to your customers. For example, you use tax codes to apply taxes differently for usage and physical goods charges.
Topics in this document:
About Creating Tax Codes
Tax codes define which tax to apply to a charge. For example, a telephone handset may use a different tax code than an online service subscription. The tax code specifies the tax amount or percentage to apply for each jurisdiction.
You can configure tax codes in the following ways:
-
Using the PDC UI. See "Creating Tax Codes" in PDC Online Help.
-
Using the ImportExportPricing utility. See "Creating Tax Codes Using ImportExportPricing".
Note:
The process for creating tax codes for the Vertex O Series tax calculation software differs from other methods. For information, see "Creating Tax Codes for Vertex O Series".
After you create tax codes, associate them with your charges, discounts, chargeshares, and G/L IDs.
You can also assign tax codes to charges, discounts, and chargeshares using tax selectors. Tax selectors determine the tax code to apply based on account, service, event, and profile attributes. You can create tax selectors in the following ways:
-
Using the PDC UI. For information, see "Creating a Tax Selector" in PDC Online Help.
-
Using the ImportExportPricing utility. For information, see "Creating Tax Selectors Using ImportExportPricing".
Creating Tax Codes Using ImportExportPricing
You create tax codes in PDC and publish them to BRM and Elastic Charging Engine (ECE) using the ImportExportPricing utility.
To implement tax codes:
- Define your tax codes in an XML file. You can base your tax codes on those provided in the Sample_Tax_Code.xml file available in the PDC_home/apps/Samples/Examples directory, where PDC_home is the PDC installation directory. The sample file contains examples of tax codes for calculating taxes based on a custom implementation or Vertex Q Series. For more information about XML elements specific to Vertex Q Series or custom tax codes, see:
- Import the XML file into PDC using the ImportExportPricing
utility:
ImportExportPricing -import -config MyTaxCodes.xml
where MyTaxCodes is the name of the XML file where you defined the tax codes.
You can modify existing tax codes using the -ow parameter.
See "Importing Pricing and Setup Components" and "ImportExportPricing" in PDC Creating Product Offerings for more information about the utility's syntax and parameters.
The ImportExportPricing utility publishes the tax codes to the real-time rating engine (RRE) and to ECE.
Note:
You cannot publish tax codes to the Batch Rating Engine (BRE).
Creating Tax Codes for a Flat Tax or Custom Implementation
You implement simple flat taxes by defining them in an XML file that you import into PDC. In the file, you enter a tax code and assign it to one or more tax rates, which are differentiated by criteria such as validity date and jurisdiction.
The following XML example shows custom tax codes:
<taxCodes>
<name>CustomTaxCode</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>CustomTaxCode</code>
<taxPackageType>CUSTOM</taxPackageType>
<glidName>National VAS</glidName>
<taxCodeValidityPeriods>
<validFrom>20010101</validFrom>
<validTo>20020120</validTo>
<taxCodeMaps>
<description>TRS1</description>
<percent>4.0</percent>
<taxJurisdictionLevel>FEDERAL</taxJurisdictionLevel>
<taxJurisdictions>US</taxJurisdictions>
<taxJurisdictions>UK</taxJurisdictions>
<taxJurisdictions>IN</taxJurisdictions>
<taxJurisdictions>RU</taxJurisdictions>
<taxJurisdictions>GE</taxJurisdictions>
<taxJurisdictions>SZ</taxJurisdictions>
<taxRuleType>TAX</taxRuleType>
</taxCodeMaps>
</taxCodeValidityPeriods>
<taxCodes>- <percent>: If you include this element, the elements described in Table 3-1 are also required.
- <transType_CategoryCode_Rate>: If you include this element, no other elements are supported in the tax code map.
Table 3-1 describes the critical XML elements specific to custom tax codes.
Table 3-1 XML Elements in the Tax Code File for Custom Tax Codes
| Element | Description |
|---|---|
| code | The tax code. A unique alphanumeric value that defines categories with different tax treatments. |
| taxPackageType | The package type. For flat taxes and custom implementations, this is always CUSTOM. |
| validFrom | The start date of the validity period for the tax rate in
yyyymmdd format.
Note: You can use multiple validity periods to create different rates for a single tax code, as shown in the example, but the validity periods must not overlap. |
| validTo | The end date of the validity period for the tax rate in yyyymmdd format. |
| description | A brief description of the tax code. |
|
glidName |
The general ledger ID associated to the tax code. |
| percent | The tax rate in percent. For example, 4.25 means
4.25%.
For prepaid purchase events that grant negative currency balances, the corresponding tax associated with it should also be negative. For example, -4.25. |
| taxJurisdictionLevel | The jurisdiction level for which this rate is applicable. Values are FEDERAL, STATE, COUNTY, CITY, and LOCATION. |
| taxJurisdictions |
The jurisdiction where the rate applies. Similar to a nexus for the corresponding jurisdiction level. For example, if the taxJurisdictionLevel value is STATE, the taxJurisdictions values must be state-level jurisdictions. |
| taxRuleType |
Determines how taxes will be computed. Values are:
|
Creating Tax Codes for Vertex Tax Q Series
You specify to calculate taxes using Vertex Tax Q Series by mapping tax codes to Vertex Tax Q Series product codes in an XML file that you import into PDC. The Vertex Tax Q Series product codes are used to apply the tax rate.
The following XML example shows the two types of Vertex Tax Q Series tax codes. The three elements under the taxCodeMaps element are the only ones supported for Vertex Tax Q Series tax codes.
<taxCodes>
<name>Usage</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>usage</code>
<taxPackageType>CUSTOM</taxPackageType>
<glidName>National VAS</glidName>
<taxCodeValidityPeriods>
<validFrom>20010201</validFrom>
<validTo>20010201</validTo>
<taxCodeMaps>
<description>USF</description>
<percent>4.0</percent>
<taxJurisdictionLevel>FEDERAL</taxJurisdictionLevel>
<taxJurisdictions>US</taxJurisdictions>
<taxRuleType>STANDARD</taxRuleType>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>
<taxCodes>
<name>Cycle</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>cycle</code>
<taxPackageType>CUSTOM</taxPackageType>
<glidName>Cancel Fees</glidName>
<taxCodeValidityPeriods>
<validFrom>20010201</validFrom>
<validTo>20300131</validTo>
<taxCodeMaps>
<description>Excise</description>
<percent>3.5</percent>
<validFrom>20010201</validFrom>
<validTo>20300131</validTo>
<taxJurisdictionLevel>FEDERAL</taxJurisdictionLevel>
<taxJurisdictions>US</taxJurisdictions>
<taxRuleType>STANDARD</taxRuleType>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>
<taxCodes>
<name>Purchase</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>purchase</code>
<taxPackageType>CUSTOM</taxPackageType>
<glidName>Deposit Charge</glidName>
<taxCodeValidityPeriods>
<validFrom>20010201</validFrom>
<validTo>20300131</validTo>
<taxCodeMaps>
<description>Sales</description>
<percent>6</percent>
<taxJurisdictionLevel>STATE</taxJurisdictionLevel>
<taxJurisdictions>CA</taxJurisdictions>
<taxRuleType>STANDARD</taxRuleType>
</taxCodeMaps>
<taxCodeMaps>
<description>Sales</description>
<percent>1.25</percent>
<taxJurisdictionLevel>COUNTY</taxJurisdictionLevel>
<taxJurisdictions>*</taxJurisdictions>
<taxRuleType>STANDARD</taxRuleType>
</taxCodeMaps>
<taxCodeMaps>
<description>Sales</description>
<percent>1.0</percent>
<taxJurisdictionLevel>CITY</taxJurisdictionLevel>
<taxJurisdictions>*</taxJurisdictions>
<taxRuleType>STANDARD</taxRuleType>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>
<taxCodes>
<name>Toll</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>toll</code>
<taxPackageType>CUSTOM</taxPackageType>
<glidName>Deposit Refund</glidName>
<taxCodeValidityPeriods>
<validFrom>20010201</validFrom>
<validTo>20300131</validTo>
<taxCodeMaps>
<description>TRS</description>
<percent>2.0</percent>
<taxJurisdictionLevel>FEDERAL</taxJurisdictionLevel>
<taxJurisdictions>US</taxJurisdictions>
<taxRuleType>TAX</taxRuleType>
</taxCodeMaps>
<taxCodeMaps>
<description>911</description>
<percent>1.5</percent>
<taxJurisdictionLevel>STATE</taxJurisdictionLevel>
<taxJurisdictions>CA</taxJurisdictions>
<taxRuleType>TAX</taxRuleType>
</taxCodeMaps>
<taxCodeMaps>
<description>B-O</description>
<percent>2.0</percent>
<taxJurisdictionLevel>STATE</taxJurisdictionLevel>
<taxJurisdictions>CA</taxJurisdictions>
<taxRuleType>TAX</taxRuleType>
</taxCodeMaps>
<taxCodeMaps>
<description>Deaf</description>
<percent>3.15</percent>
<taxJurisdictionLevel>CITY</taxJurisdictionLevel>
<taxJurisdictions>Cupertino</taxJurisdictions>
<taxRuleType>TAX</taxRuleType>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>
<taxCodes>
<name>VAT</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>VAT</code>
<taxPackageType>CUSTOM</taxPackageType>
<glidName>Payment received</glidName>
<taxCodeValidityPeriods>
<validFrom>20010201</validFrom>
<validTo>20300131</validTo>
<taxCodeMaps>
<description>VAT-EU</description>
<percent>5</percent>
<taxJurisdictionLevel>FEDERAL</taxJurisdictionLevel>
<taxJurisdictions>GB</taxJurisdictions>
<taxJurisdictions>FR</taxJurisdictions>
<taxRuleType>STANDARD</taxRuleType>
</taxCodeMaps>
<taxCodeMaps>
<description>VAT-GB</description>
<percent>4.5</percent>
<taxJurisdictionLevel>FEDERAL</taxJurisdictionLevel>
<taxJurisdictions>GB</taxJurisdictions>
<taxRuleType>STANDARD</taxRuleType>
</taxCodeMaps>
<taxCodeMaps>
<description>VAT-FR</description>
<percent>4.0</percent>
<taxJurisdictionLevel>FEDERAL</taxJurisdictionLevel>
<taxJurisdictions>FR</taxJurisdictions>
<taxRuleType>STANDARD</taxRuleType>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>
<taxCodes>
<name>qt_usage</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>qt_usage</code>
<taxPackageType>VERTEX_QUANTUM</taxPackageType>
<glidName>Monthly Fees</glidName>
<taxCodeValidityPeriods>
<taxCodeMaps>
<transType_CategoryCode_Rate>01</transType_CategoryCode_Rate>
<transSubType_ServiceCode>01</transSubType_ServiceCode>
<salesIndicator>SALE</salesIndicator>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>
<taxCodes>
<name>qt_cycle</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>qt_cycle</code>
<taxPackageType>VERTEX_QUANTUM</taxPackageType>
<glidName>Monthly Fees</glidName>
<taxCodeValidityPeriods>
<taxCodeMaps>
<transType_CategoryCode_Rate>01</transType_CategoryCode_Rate>
<transSubType_ServiceCode>01</transSubType_ServiceCode>
<salesIndicator>SALE</salesIndicator>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>
<taxCodes>
<name>ct_direct</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>ct_direct</code>
<taxPackageType>VERTEX_COMMTAX_21</taxPackageType>
<glidName>Misc Adjustments</glidName>
<taxCodeValidityPeriods>
<taxCodeMaps>
<transType_CategoryCode_Rate>01</transType_CategoryCode_Rate>
<transSubType_ServiceCode>01</transSubType_ServiceCode>
<salesIndicator>SALE</salesIndicator>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>
<taxCodes>
<name>ct_toll</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>ct_toll</code>
<taxPackageType>VERTEX_COMMTAX_21</taxPackageType>
<glidName>Misc Adjustments</glidName>
<taxCodeValidityPeriods>
<taxCodeMaps>
<transType_CategoryCode_Rate>04</transType_CategoryCode_Rate>
<transSubType_ServiceCode>02</transSubType_ServiceCode>
<salesIndicator>SALE</salesIndicator>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>
<taxCodes>
<name>user_code</name>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<code>user_code</code>
<taxPackageType>VERTEX_COMMTAX_21</taxPackageType>
<glidName>National VAS</glidName>
<taxCodeValidityPeriods>
<taxCodeMaps>
<percent>10.0</percent>
</taxCodeMaps>
</taxCodeValidityPeriods>
</taxCodes>Table 3-2 describes the important XML elements specific to Vertex Tax Q Series tax codes.
Table 3-2 XML Elements in the Tax Code File for Vertex Tax Q Series
| Element | Explanation |
|---|---|
| code | The tax code. A unique alphanumeric value that defines categories with different tax treatments. |
| taxPackageType | The tax package you use:
|
| transType_CategoryCode_Rate | The field value is determined by the tax
package you use.
|
| transSubType_ServiceCode | The field value is determined by the tax
package you use.
|
| salesIndicator | For Vertex Communications Tax Q Series and Vertex Sales Tax Q Series, this is the resale flag field, which indicates if the charge offer is for sale (SALE) or resale (RESALE). The default is SALE. |
|
glidName |
The general ledger ID associated to the tax code. |
See your tax package documentation for information about product codes, service codes, and service indicators.
When configuring Vertex tax calculation, you also need to configure tax suppliers. See "Creating Tax Suppliers".
Creating Tax Codes for Vertex O Series
To create tax codes for Vertex O Series:
-
In the Vertex UI, configure your product codes and taxability, using values that match your BRM tax codes.
-
In BRM, map those tax codes to Vertex O Series in the BRM_home/sys/cm/config_taxcodes_map.xml file. BRM sends the tax code as the Vertex product identifier in the request, and Vertex O Series returns the applicable taxes and rates by jurisdiction.
After you edit the file, you need to load the config_taxcodes_map.xml file into the BRM database.
The following XML example shows the structure of the config_taxcodes_map.xml file:
<TAXES elem="18"> <TAX_CODE>internet</TAX_CODE> <TAXPKG_TAX_CODE>O</TAXPKG_TAX_CODE> </TAXES>
Table 3-3 describes the important XML elements in config_taxcodes_map.xml XML file.
Table 3-3 XML Elements in config_taxcodes_map.xml File
| Element | Description |
|---|---|
|
<TAX_CODE> |
The name of tax code, such as internet. For Vertex O Series, use the same value as the product code in the Vertex UI, and in the Taxation Gateway's application.yaml file. |
|
<TAXPKG_TAX_CODE> |
Specifies the tax package provider. Use O for Vertex O Series. |
See your tax package documentation for information about product codes, service codes, and service indicators.
When configuring Vertex tax calculation, you also need to configure tax suppliers. See "Creating Tax Suppliers".
Creating Tax Selectors Using ImportExportPricing
You can create tax selectors in an XML file and publish them to PDC, BRM, and ECE using the ImportExportPricing utility.
To implement tax selectors using ImportExportPricing:
-
Define your tax selectors in an XML file. You can base them on the sample tax selectors provided in the PDC_home/apps/Samples/Examples/SampleTaxSelector.xml file.
See "Creating an XML File for Tax Selectors" for more information about the XML elements in the file.
-
Import the XML file into PDC using the ImportExportPricing utility:
ImportExportPricing -import -pricing MyTaxSelectors.xml
where MyTaxSelectors is the name of the XML file where you defined the tax selectors.
The ImportExportPricing utility publishes the tax selectors to the PDC database, real-time rating engine (RRE), and ECE.
Note:
You cannot publish tax selectors to the Batch Rating Engine (BRE).Creating an XML File for Tax Selectors
You can implement tax selectors by defining them in an XML file that you import into PDC. In the file, you enter a tax selector and then define the rules for assigning tax codes to charges, discounts, and chargeshares.
The following sample XML shows how to create tax selectors:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><pdc:PricingObjectsJXB xmlns:pdc="http://xmlns.oracle.com/communications/platform/model/pricing">
<taxSelector xmlns:pdc="http://xmlns.oracle.com/communications/platform/model/pricing">
<name>Sample_TAX_SELECTOR</name>
<description>Sample TAX_SELECTOR</description>
<pricingProfileName>Convergent Usage</pricingProfileName>
<priceListName>Default</priceListName>
<obsolete>false</obsolete>
<stereoType>TAX_SELECTOR</stereoType>
<productSpecName>TelcoGsmSms</productSpecName>
<eventSpecName>EventDelayedSessionTelcoGsm</eventSpecName>
<validityPeriod>
<validFrom>0</validFrom>
<rule>
<name>Rule1</name>
<result>
<resultName>VAT</resultName>
</result>
<fieldToValueExpression>
<operation>REGEX</operation>
<seperator>;</seperator>
<fieldName>EventDelayedSessionTelcoGsm.CALLED_ID</fieldName>
<fieldValue>1800.*</fieldValue>
<fieldKind>EVENT_SPEC_FIELD</fieldKind>
</fieldToValueExpression>
</rule>
<rule>
<name>Rule2</name>
<result>
<resultName>toll</resultName>
</result>
<fieldToValueExpression>
<operation>REGEX</operation>
<seperator>;</seperator>
<fieldName>EventDelayedSessionTelcoGsm.CALLED_ID</fieldName>
<fieldValue>.*</fieldValue>
<fieldKind>EVENT_SPEC_FIELD</fieldKind>
</fieldToValueExpression>
</rule>
</validityPeriod>
</taxSelector></pdc:PricingObjectsJXB>Table 3-4 describes the important XML elements specific to tax selectors.
Table 3-4 XML Elements in the Tax Selector File
| Element | Description |
|---|---|
| name | The name of the tax selector. |
| description | A description of the tax selector. |
|
pricingProfileName |
The pricing profile to associate with the tax selector. |
| priceListName | The name of the price list to which the selector applies. |
| stereoType | The type of pricing object: TAX_SELECTOR. |
|
productSpecName |
The service type to which the tax selector applies. |
|
eventSpecName |
The event type to which the tax selector applies. |
|
validityPeriod |
Indicates when the rules in the tax selector are valid. The default effective period starts immediately and never ends. |
| name |
The name of a rule. |
| resultName | The name of the tax code to apply when all criteria in the rule are met. |
| operation | The operator to apply, which is dependent on the field. The valid values are: REGEX, EQUAL_TO, NOT_EQUAL_TO, GREATER_THAN, GREATER_THAN_EQUAL, LESS_THAN, LESS_THAN_EQUAL, IN_LIST, and MAPS_TO. |
|
seperator |
The character that is used to separate the field values, such as a semicolon (;). |
|
fieldName |
The name of the field to evaluate. |
|
fieldValue |
The required value of the field. |
|
fieldKind |
The type of attributes to be selected for assigning the tax code. The valid values are: EVENT_SPEC_FIELD, PRODUCT_SPEC_FIELD, CUSTOMER_SPEC_FIELD, and PROFILE_SPEC_FIELD. |