Transaction Tax Rate (Percent) Override¶
There are certain tax exemptions/benefits programs and other regulations that would require changing tax rates on some or all items of a transaction. Jumpmind Commerce can be configured to enable a toggling all sale items for an active transaction to have a specific tax rate override instead of the usual tax rate rules.
One example of this kind of scenario is section 87 of the Indian Act in Canada, where indigenous peoples under certain incomes are eligible for different tax rates. This Transaction Tax Rate Override feature enables behavior to support those types of tax exemption/override requirements.
The system supports any number of configurations for this type of tax exemption, though only one of these exemptions may be enabled on any transaction.
Note: Tax rate overrides applied this way do not work on Return items or Loyalty item types.
Configuration¶
The sample configuration described here is for what will be referred to as the First Nations Tax Exemption (formally, FirstNations) in order
to fulfill the requirements of the Canada legality described above. The specific behavior configured below can be summarized as:
When a First Nations exemption is applied, all taxable items taxed against the selling store (e.g. cash-and-carry items) will have their HST tax reduced to 5%. All taxable items taxed against a shipping destination (e.g. when shipping to a customer's reservation address) will have their HST tax reduced to 0%.
Note the distinction between a standard "tax override to 0%" operation and what we're trying to accomplish here. We're adding sensitivity not only to the taxing jurisdictions in play by distinguishing between cash-and-carry and delivery items but also to which tax group rules are impacted. To the latter point, if the same exemption were applied in a "non-harmonized" jurisdiction -- i.e. where PST and GST taxes are separated rather than amalgamated -- it must also be possible to, for example, zero out an item's PST tax but preserve its GST taxes in full.
The configurations required to achieve this result are as follows:
CTX_BUTTON¶
A ctx_button row is required to make the First Nations exemption option available from the Sale menu.
| button_group_id | button_id | button_type | button_value | default_payload | enabled |
|---|---|---|---|---|---|
| sale.transaction_active | IndigenousPeoplesTaxExemption | action | TaxExemptionPercentOverrideSale | FirstNations | 1 |
Boilerplate/extraneous columns have been omitted for clarity. Note the following:
button_valuemust, for now, have a value ofTaxExemptionPercentOverrideSale. This is to maintain backwards compatibility with a prior implementation of the tax exemption feature.default_payloadmay have any value, but that value must match the corresponding value supplied in other tables configuring this exemption.
CTX_FORM and CTX_FORM_FIELD¶
Because the information appropriate for capture for First Nations exemptions differs from the generic "tax override to 0%" form, we'll create a custom form:
| form_id | form_group_id |
|---|---|
| taxExemptAdd.FirstNations | taxExemptAdd.FirstNations |
with the requisite proprietary fields:
| form_id | form_field_id | field_type | required | read_only |
|---|---|---|---|---|
| taxExemptAdd.FirstNations | taxExemptCertificate | NUMERIC | 1 | 1 |
| taxExemptAdd.FirstNations | bandRegistryNumber | NUMERIC | 1 | 0 |
| taxExemptAdd.FirstNations | firstName | ALPHANUMERIC | 1 | 0 |
| taxExemptAdd.FirstNations | lastName | ALPHANUMERIC | 1 | 0 |
Boilerplate/extraneous columns have been omitted for clarity. Note the following:
ctx_form.form_id,ctx_form_group_id, andctx_form_field.form_idmust all have values of the form "taxExemptAdd.<taxExemptCode>", where taxExemptCode matches thectx_button.default_payloadvalue for the button by which the First Nations exemption is activated. In this case:taxExemptAdd.FirstNations.
TAX_EXEMPTION_RULE¶
Tax exemption rules map tax exempt codes (FirstNations for this example), to tax exemption behaviors. Currently, these behaviors will be applied to
all taxable line items within a transaction, but future enhancements may permit more fine-grained control. Here is the exemption rule we need to
support our use case:
| rule_type | rule_action | rule_action_parameter |
|---|---|---|
| FirstNations | USE_TAX_GROUP | FirstNationsTax |
Boilerplate/extraneous columns have been omitted for clarity. Note the following:
rule_typemust have the same value as our tax exempt code; i.e. thectx_button.default_payloadvalue for the button by which the First Nations exemption is activated. In this case:FirstNations.rule_actionmust be one of the following:USE_TAX_GROUP- changes the tax group used to calculate taxes on exempted line items to the one named byrule_action_parameterUSE_TAX_TYPE- applies the taxes for the tax type named byrule_action_parameterand ignores all others associated with whatever tax group is assigned for each exempted line itemOVERRIDE_PERCENT- forgoes all tax calculations for each exempted line item and assigns them an authority-agnostic fixed tax rate named byrule_action_parameterNONE- perform no exemptions and calculate taxes normally for all exemption-eligible line itemsrule_action_parameteris sensitive to the semantics ofrule_action. Since we're changing the tax group assigned to First Nations-exempted line items to one which will satisfy our requirements, here it is the name of a new tax group whose rates we'll configure separately.
TAX_GROUP_RULE¶
Our tax_exemption_rule has identified a new tax group for line items qualifying for a First Nations exemption, so we'll need some tax_group_rule
rows to match:
| category | authority_id | group_id | tax_type | rule_name |
|---|---|---|---|---|
| businessunit | ON_HST | FirstNationsTax | FirstNationsHST | HST |
| destination | ON_HST | FirstNationsTax | FirstNationsHST | HST |
Boilerplate/extraneous columns have been omitted for clarity, and the more detailed mechanics of general tax configuration are outside the scope of this document. Note the following:
- We need a separate group for the
businesunitanddestinationcategories. The former will drive our 5% HST exemption logic for cash-and-carry line items, while the latter will do the same for our 0% HST requirement for delivery lines.group_idmust correspond to the retargeted tax group named bytax_exemption_rule.rule_action_parameter.authority_idandtax_typeare integration dependent and/or dependent on related retailer tax data.rule_nameis theoretically arbitrary, but since taxes are typically aggregated byrule_name, it should rule name of the tax being overridden by the exemption.- If more than one tax rule needs to be adjusted by an exemption, additional
tax_group_rulerecords may be created so long as each has a distinctrule_name.
TAX_RATE_RULE¶
Our tax_group_rules require corresponding tax_rate_rule records to dictate what tax rate should be applied to line items qualifying for a First
Nations exemption:
| category | tax_type | authority_id | group_id | tax_percent |
|---|---|---|---|---|
| businessunit | FirstNationsHST | ON_HST | FirstNationsTax | 5.00000 |
| destination | FirstNationsHST | ON_HST | FirstNationsTax | 0.00000 |
Boilerplate/extraneous columns have been omitted for clarity, and the more detailed mechanics of general tax configuration are outside the scope of this document. Note the following:
tax_percentis 5% for cash-and-carry line items and 0% for delivered line items, per our requirements.category,tax_type,authority_id, andtax_typemust correspond exactly to thetax_group_rulefor which a tax exemption rate applies.'
CTX_CONFIG¶
The openpos.sell.autoGenerateTaxExemptCustomer flag identifies whether nonexistent Tax Exempt certificates/accounts
should be created at the time that the Certificate is attempted to be added to a Tax Exempt sale. If this flag is set to
false, the prompt to create a Tax Exempt account of the "current" configured Tax Exemption type will not be prompted.