Taxation Configuration Guide
Tax configurations define how insurance premium tax (IPT) is calculated for different scenarios. This guide explains how to set up and manage tax configurations in the Tax Management System.
Overview
A tax configuration specifies:
- Tax Name and Code - Human-readable name and unique identifier
- Applicable Countries - Countries where this tax applies
- Coverage Groups - Which coverages this tax applies to
- Tax Rules - How to calculate the tax
- Rate Tables - Tax rates with effective dates
- Calculation Method - Percentage or fixed amount
Accessing Tax Configuration
Navigate to Tax Configurations from the sidebar menu to manage tax configurations.
Creating a Tax Configuration
Basic Information
- Click "Create Tax Configuration"
- Fill in the basic information:
- Name - Human-readable name (e.g., "UK Motor Insurance IPT")
- Tax Code - Unique identifier (e.g., "UK_MOTOR_IPT")
- Country Codes - Countries where this tax applies (e.g., GB, IE)
- Currency - Currency for tax amounts (e.g., GBP, EUR)
Calculation Settings
Configure how the tax is calculated:
-
Calculation Based On - What the tax is calculated from:
Premium- Tax based on premium amountLimit- Tax based on policy limit
-
Calculation Type - How the tax amount is determined:
Percentage- Tax as a percentage of the base amountFixed- Tax as a fixed amount
-
Payable By - Who pays the tax:
Insurer- Insurance company paysPolicyholder- Policyholder pays
-
Administered By - Who administers the tax:
Insurer- Insurance company administersPolicyholder- Policyholder administers
-
Status - Configuration status:
Active- Currently in useInactive- Not in useDraft- Still being developed
Coverage Groups
Define which coverages this tax applies to by creating coverage groups:
- Click "Add Coverage Group"
- Specify:
- Group Name - Descriptive name for the group
- Coverages - Select the coverages that belong to this group
- Notes - Any additional information about this group
Example Coverage Groups
- Motor Coverages - Includes Motor, Motor Fleet, Motorcycle
- Property Coverages - Includes Property, Home, Commercial Property
- Liability Coverages - Includes Public Liability, Professional Indemnity
Tax Rules and Rate Tables
For each coverage group, define tax rules in a rate table:
Rate Table Structure
A rate table contains entries with:
- Effective From Date - When this rate becomes effective
- Tax Rules - Rules for calculating tax under this rate
Adding a Rate Entry
- Click "Add Rate Entry" in a coverage group
- Set the effective date
- Add tax rules for that date
Tax Rule Types
1. Simple Rule (Flat Amount)
Use when the tax is always the same amount:
- Amount - The tax amount
- Amount Type - How to interpret the amount:
Percentage- Percentage of base amountFixed- Fixed currency amountPer Mille- Per thousand (0.1%)Factor- Multiplier
- Default Rule - Whether this is the fallback rule
- Applies to Standard Premium - Whether it applies to base premium
2. Complex Rule (With Conditions)
Use when tax varies based on conditions:
- All simple rule settings plus:
- Conditions - Criteria that must be met for this rule to apply
3. Function Rule (Custom Formula)
Use for complex calculations:
- Function Script - Custom calculation formula
- Return Type - Expected return type
- Additional Premium Types - Which additional premiums to include
Rule Conditions
Conditions specify when a rule applies:
For each condition:
- Coverage Input Name - The input field to check (from coverage configuration)
- Coverage Input Type - Data type of the input
- Operator - Comparison:
Equal To- Value must equalNot Equal To- Value must not equalGreater Than- Value must be greater thanGreater Than or Equal To- Value must be greater than or equalLess Than- Value must be less thanLess Than or Equal To- Value must be less than or equal
- Value - The value to compare against (based on input type)
Example Tax Rules
Simple Rule:
Effective From: 2024-01-01
Rule:
Type: Simple
Amount: 12
Amount Type: Percentage
Default: Yes
Applies to Standard Premium: Yes
This applies a 12% tax to all premiums.
Complex Rule:
Effective From: 2024-01-01
Rule:
Type: Complex
Amount: 20
Amount Type: Percentage
Conditions:
- Input: vehicleValue
Type: Number
Operator: Greater Than
Value: 50000
This applies 20% tax only when vehicle value exceeds £50,000.
Function Rule:
// Custom calculation formula
baseRate = 0.12 (12% base rate)
valueFactor = min(vehicleValue / 100000, 1.5)
return baseRate * valueFactor
Custom Properties
Add custom key-value pairs for additional metadata:
- Regulatory references
- Internal codes
- Integration identifiers
- Audit information
Notes
Use notes to document:
- Regulatory requirements
- Calculation logic explanations
- Historical changes
- Integration notes
Managing Rate Changes
Tax rates often change over time. Use the rate table to manage changes:
- Add a new rate entry with the new effective date
- Define the new tax rules
- The system automatically uses the correct rate based on the date
Example Rate History
2020-01-01: 10% standard rate
2022-01-01: 11% standard rate
2024-01-01: 12% standard rate
Rule Evaluation Order
The system evaluates rules in order:
- Check each rule's conditions
- First rule with matching conditions is applied
- If no conditions match, the default rule is used
- If no default rule exists, no tax is applied
Best Practices
Rule Design
- Start Simple - Begin with simple rules, add complexity as needed
- Use Defaults - Always have a default rule for fallback
- Test Thoroughly - Use the tax calculator to test scenarios
- Document Logic - Use notes to explain complex rules
Condition Design
- Specific to General - Order conditions from most specific to most general
- Avoid Overlap - Ensure conditions don't create ambiguity
- Use Available Inputs - Only use inputs defined in coverage configurations
- Test Edge Cases - Consider boundary values in conditions
Rate Management
- Plan Ahead - Add future rate entries before they take effect
- Document Changes - Use notes to explain why rates changed
- Review Regularly - Periodically review and update rates
- Version Control - Track changes for audit purposes
Function Rules
- Keep Simple - Avoid overly complex scripts
- Test Extensively - Test with various input combinations
- Document Well - Add comments in the script
- Error Handling - Include error handling in scripts
Common Use Cases
Standard IPT
Name: UK Motor IPT
Code: UK_MOTOR_IPT
Countries: GB
Currency: GBP
Calculation Based On: Premium
Calculation Type: Percentage
Payable By: Insurer
Coverage Groups:
- Motor Coverages
Rate Table:
2024-01-01:
- Rule: Simple, 12%, Default
Tiered Tax
Name: High Value Vehicle Tax
Code: HIGH_VALUE_TAX
Rate Table:
2024-01-01:
- Rule: Complex, 12%, Default
- Rule: Complex, 20%, Conditions: [vehicleValue > 50000]
- Rule: Complex, 25%, Conditions: [vehicleValue > 100000]
Complex Calculation
Name: Custom Calculation Tax
Code: CUSTOM_TAX
Rate Table:
2024-01-01:
- Rule: Function
Script: |
def base = premium * 0.12;
if (vehicleValue > 75000) {
base *= 1.5;
}
return base;
Integration with Coverage Configurations
Tax configurations reference coverage configurations:
- Coverage groups use coverage IDs from coverage configurations
- Rule conditions use input names from coverage configurations
- Data types must match between coverage and tax configurations
Ensure:
- Coverage IDs are correct
- Input names match exactly
- Data types are consistent
- Country codes align
Testing
Use the Tax Calculator to test your configurations:
- Navigate to Admin > Tax Calculator
- Select a tax configuration
- Enter test scenarios
- Review calculated tax amounts
- Verify rule application
Troubleshooting
Rules Not Applying
- Problem: Expected rule not being applied
- Solution: Check condition order and default rule settings
Incorrect Tax Amounts
- Problem: Tax calculation seems wrong
- Solution: Verify amount type (percentage vs fixed) and base amount
Conditions Not Matching
- Problem: Conditions not triggering as expected
- Solution: Check input names, data types, and comparison values
Rate Not Changing
- Problem: Old rate still being used
- Solution: Verify effective date and system date
Function Errors
- Problem: Function rule failing
- Solution: Check script syntax and variable names