Pricing Service
Calculation service providing premium and cover amount computations for funeral insurance products. Supports both static calculator types and dynamic partner-configurable calculations.
Overview
The Pricing Service is a stateless calculation service within the Capstone PAS that computes insurance premiums and cover amounts. It implements actuarial formulas and supports configurable calculation engines for partner-specific pricing.
Architecture
- Stateless: No persistent state; all calculations are pure functions
- Query-based: Exposes calculation endpoints via API Gateway
- Configurable: Pricing factors loaded from configuration per partner/product
- Extensible: Dynamic calculator support for custom calculation logic
Capabilities
Premium from Cover Calculation
Given a cover amount and risk factors, calculates the monthly premium:
Input: Cover Amount, Age, Gender, Relationship, Partner/Product ConfigOutput: Monthly Premium AmountCover from Premium Calculation
Given a premium budget and risk factors, calculates the achievable cover:
Input: Premium Amount, Age, Gender, Relationship, Partner/Product ConfigOutput: Cover AmountDynamic Calculations
Executes partner-configured calculation expressions:
Input: Calculator Instance IDs, Values Map, Initial Cover/PremiumOutput: Calculated Results with intermediate valuesCalculator Types
| Calculator | Use Case |
|---|---|
| MainLifeCalculator | Primary insured life premium calculation |
| CoveredLifeCalculator | Extended family member calculations |
| AccidentalCalculator | Accidental death benefit add-on |
| AccidentalOnlyCalculator | Short-term accidental pricing |
| RepatriationCalculator | Repatriation benefit pricing |
| StillBirthAndNewBornCalculator | Stillbirth/newborn benefit pricing |
| DynamicCalculator | Partner-configurable expressions |
API Endpoints
POST /pricing/premium-from-cover
Calculate premium from cover amount.
POST /pricing/cover-from-premium
Calculate cover amount from premium budget.
POST /pricing/calculate
Perform dynamic calculations using configured calculators.
Pricing Formula Overview
The core pricing formula for main life calculations:
lifeQx = accidentalFactor * (constant + (base/100) * baseQxFactor + aids * aidsQxFactor)lifeAnnualPremium = coverAmount * lifeQxlifeMonthlyPremium = lifeAnnualPremium / 12lifeExpenses = underwritingExpense/durationFactor + initialExpense + recurringExpenselifeDistributionRate = (1 + intermediaryDiscount) * (1 + asAndWhenCommission) * (1 + difLoading) - 1lifeProfit = max(0, (initialTarget/100) * factor1Impact)lifePremPreProfit = (lifeMonthlyPremium + lifeExpenses) / (1 - (expenseLoading/100 + rewardExpense + distributionRate + profit))finalPremium = (lifePremPreProfit * ageTopUpFactor * relationshipTopUpFactor) + topUpExpenseFactorConfiguration
Pricing configurations are stored per partner and product category:
- Partner ID
- Product Category ID
- Product Version
- Configuration Version
Each configuration contains all necessary factors, rates, and loadings for calculations.
Cross-Domain Integration
The Pricing Service is a stateless, query-only service. It:
- Does NOT publish events - No domain events are emitted
- Does NOT consume events - Does not listen to any event streams
- Provides synchronous APIs - All interactions are request/response via API Gateway
Consumers
The Pricing Service is consumed synchronously by:
| Consumer | Usage |
|---|---|
| Quote Service | Calculates premiums during quote generation |
| Policy Service | Recalculates premiums during policy changes and escalations |
| BFFASCP Service | Provides pricing for agent-assisted sales flows |
| BFF Web Service | Supports self-service pricing in web applications |
Data Dependencies
The Pricing Service reads configuration data from:
- DynamoDB - Calculator configurations and pricing factors
- RDS (MySQL) - Dynamic query configurations and rate tables