Pricing Service

Calculation service providing premium and cover amount computations for funeral insurance products. Supports both static calculator types and dynamic partner-configurable calculations.

Service Supporting Service Stateless Query-Only

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 Config
Output: Monthly Premium Amount

Cover from Premium Calculation

Given a premium budget and risk factors, calculates the achievable cover:

Input: Premium Amount, Age, Gender, Relationship, Partner/Product Config
Output: Cover Amount

Dynamic Calculations

Executes partner-configured calculation expressions:

Input: Calculator Instance IDs, Values Map, Initial Cover/Premium
Output: Calculated Results with intermediate values

Calculator Types

CalculatorUse Case
MainLifeCalculatorPrimary insured life premium calculation
CoveredLifeCalculatorExtended family member calculations
AccidentalCalculatorAccidental death benefit add-on
AccidentalOnlyCalculatorShort-term accidental pricing
RepatriationCalculatorRepatriation benefit pricing
StillBirthAndNewBornCalculatorStillbirth/newborn benefit pricing
DynamicCalculatorPartner-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 * lifeQx
lifeMonthlyPremium = lifeAnnualPremium / 12
lifeExpenses = underwritingExpense/durationFactor + initialExpense + recurringExpense
lifeDistributionRate = (1 + intermediaryDiscount) * (1 + asAndWhenCommission) * (1 + difLoading) - 1
lifeProfit = max(0, (initialTarget/100) * factor1Impact)
lifePremPreProfit = (lifeMonthlyPremium + lifeExpenses) / (1 - (expenseLoading/100 + rewardExpense + distributionRate + profit))
finalPremium = (lifePremPreProfit * ageTopUpFactor * relationshipTopUpFactor) + topUpExpenseFactor

Configuration

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:

ConsumerUsage
Quote ServiceCalculates premiums during quote generation
Policy ServiceRecalculates premiums during policy changes and escalations
BFFASCP ServiceProvides pricing for agent-assisted sales flows
BFF Web ServiceSupports 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