Dynamic Tax Selection
In dynamic tax selection, MATRIXX Engine dynamically selects which taxes to apply to charges based on the presence of one or more criteria associated with the charges. A different tax (or different set of taxes) can be applied to the same charge based on the criteria present. Jurisdiction-based taxation is an example of using dynamic tax selection. For example, if two subscribers generate the same type of charge owned by the same product offer, during usage rating MATRIXX Engine applies one tax to subscriber A's charge based on the country location of subscriber A, and applies a different tax to subscriber B's charge based on the country location of subscriber B.
The tax configuration of a product offer is contained within the product offer application profile; this profile includes tax configuration information for each charge application type (usage, purchase, cancel, recurring, first-use) defined for the product offer.
The tax configuration for a given charge application type can be one of the following:
- A list of tax class object IDs of the taxes to apply for that application, when taxes to be applied are statically determined.
- A reference to a tax selector pricing
object, when taxes to be applied are selected dynamically.
A tax selector pricing object is a list of matrices, and the result of applying a tax selector is a tax selection profile. A tax selection profile is a collection of tax class IDs of the taxes to apply. You create tax selector and tax selection profile pricing objects with My MATRIXX.
For a given product offer, you can configure dynamic tax selection for some price-component application types and a static-tax selection for other price-component application types. For example, all usage charges in a product offer might have taxes applied dynamically while all purchase charges have a static tax applied. For a given product offer, you cannot configure a mix of static and dynamic tax processing for the same price-component application type. For example, you cannot apply a static tax to only some usage charges and apply taxes dynamically to other usage charges.
During rating, the normalizers associated with a tax selector are used to compare one or more parameters to a value and when MATRIXX Engine finds a match, it selects an index in the tax-selector matrix, which leads to the tax selection profile (result) to apply.
Normalization on the following fields can be used for tax selectors:
- Fields in the network message
- Fields in the product offer custom extension
- Fields in the bundle custom extension (if the product offer is part of a bundle)
- Fields in the purchased offer (or purchased bundle) custom extension
- Fields in the subscriber MDC
- Fields in the device MDC
- Fields in the group MDC
- Fields in the subscriber wallet or group wallet
database object; specifically:
TaxLocation
,TaxStatus
, andTaxCertificate
Normalizers in tax selectors cannot use fields in the MtxEventChargeNormalization MDC, which is available for generation of event General Ledger (GL) Info only.
The following tasks must be completed for each price-component application type (usage, purchase, cancel, recurring, first-use) for which dynamic tax selection is to be used:
- Create the tax classes for the taxes MATRIXX Engine is to apply dynamically (if they are not already created).
- Create the tax selection profile to specify
the tax classes (collection of tax class object IDs) of the taxes MATRIXX Engine is to apply dynamically.
For example, in jurisdiction-based taxation, add a tax class for each tax that can be selected based on subscriber location.
A tax selection profile can have an empty set of tax class IDs, in which case no taxes are applied. Do this if you want to use a tax selector to have taxes applied in some circumstances and not in others.
- Create the tax selector to specify the
criteria that determines which tax to apply and map the criteria to a tax selection
profile.
The criteria is specified as normalizers in a decision table. You add the decision table to a tax selector table where each row of normalized values determines a result: a tax selection profile or a SKIP value. When applying a tax selector, if every matrix results in a SKIP, then an error is generated at rating time. If no taxes are to be applied, a tax selection profile with no taxes must be explicitly selected with the tax selector.
- Specify the tax selector in the product
offer application profile for the given product offer.
The value of the Tax Selector property in the product offer revision Tax/GST tab must be set to the tax selector you created.
- The tax class selected on a tax selection profile must exist in the system for the tax selection profile to be valid.
When the taxes to be applied are to be statically determined—to have MATRIXX Engine apply the same tax (or apply the same set of taxes) to the charges of an application type—a tax selector is not specified in the product offer application profile. In that case, you list the relevant tax class (or tax classes) directly in the application profile tax-class list.
For information about creating tax classes, tax selectors, and tax selection profiles, see My MATRIXX Help.