State Requirements
OpenInsure maintains a registry of state-specific insurance requirements covering coverage minimums, required documents, filing rules, and domicile configuration. The system is built across two packages: @openinsure/rating (state requirements registry at packages/rating/src/state-requirements.ts) for coverage and filing rules, and @openinsure/domicile (at packages/domicile/src/index.ts) for captive insurance domicile configuration.
State Requirements Registry
The registry is an extensible system where each state has a StateRequirements object containing coverage minimums, document requirements, filing rules, and tax rates. The registry is exposed through the API at /v1/state-requirements.
Supported States
Currently, the registry includes detailed requirements for:
- FL (Florida) -- Fully implemented with coverage validation
Additional states (TX, CA, NY, etc.) follow the same module pattern. Each state is implemented as a state-requirements-{code}.ts file and registered in the STATE_REGISTRY.
# List supported states
GET /v1/state-requirements
# Response: { "states": ["FL"] }
State Profile
Each state profile contains the following top-level fields:
| Field | Type | Description |
|---|---|---|
stateCode | string | Two-letter state code |
stateName | string | Full state name |
lob | string | Line of business these requirements apply to |
effectiveDate | string | Date these requirements became effective |
coverageMinimums | array | Required minimum coverage amounts |
documentRequirements | array | Required documents by lifecycle phase |
filingRules | array | Regulatory filing and reporting rules |
surplusLinesTaxRate | number | Surplus lines tax rate (decimal) |
surplusLinesStampingFee | number | Surplus lines stamping fee (decimal) |
premiumTaxRate | number | State premium tax rate (decimal) |
notes | array | Regulatory notes and special considerations |
# Get full state profile
GET /v1/state-requirements/FL
Coverage Minimums
Coverage minimums define the minimum amounts required by state statute for specific coverage types. Each minimum includes the applicable statute reference and an applicability scope.
Applicability Scopes
| Scope | Description |
|---|---|
all_vehicles | Applies to all vehicles registered in the state |
gvw_26000_34999 | Gross vehicle weight 26,000 -- 34,999 lbs |
gvw_35000_43999 | Gross vehicle weight 35,000 -- 43,999 lbs |
gvw_44000_plus | Gross vehicle weight 44,000+ lbs |
fmcsa_interstate | FMCSA-regulated interstate carriers |
fmcsa_hazmat | FMCSA-regulated hazmat carriers |
API
# Get all coverage minimums for a state
GET /v1/state-requirements/FL/coverages
# Filter by applicability
GET /v1/state-requirements/FL/coverages?applicability=fmcsa_hazmat
Coverage Minimum Structure
{
"stateCode": "FL",
"coverages": [
{
"id": "fl-cov-001",
"coverage": "liability",
"label": "Bodily Injury / Property Damage Liability",
"minimumAmount": 300000,
"perOccurrence": true,
"statute": "F.S. 627.7415",
"description": "Minimum combined single limit for commercial vehicles",
"applicability": "all_vehicles"
}
]
}
Document Requirements
Each state specifies which documents are required at each phase of the policy lifecycle.
Lifecycle Phases
| Phase | Description |
|---|---|
application | Documents needed when the submission is received |
binding | Documents required before a policy can be bound |
issuance | Documents generated or collected at policy issuance |
cancellation | Documents required for policy cancellation |
renewal | Documents required for policy renewal |
Conditional Requirements
Some documents are only required when specific conditions are met:
| Condition | Description |
|---|---|
fmcsa_regulated | Vehicle is regulated by FMCSA |
surplus_lines | Policy is written on a surplus lines basis |
hazmat | Vehicle carries hazardous materials |
API
# Get all document requirements
GET /v1/state-requirements/FL/documents
# Filter by lifecycle phase
GET /v1/state-requirements/FL/documents?phase=binding
Each document requirement includes: id, documentType, label, required, reviewRequired, statute, description, phase, and an optional conditionalOn field specifying when the document is conditionally required.
Filing Rules
Filing rules define the regulatory requirements for rate filings, cancellation notices, reporting obligations, and coverage rules.
Rule Types
| Type | Description |
|---|---|
filing | Rate and form filing requirements with the state DOI |
cancellation | Notice periods and procedures for policy cancellation |
reporting | Periodic reporting obligations to the state |
coverage | State-mandated coverage rules and conditions |
application | Application-phase regulatory requirements |
API
# Get all filing rules
GET /v1/state-requirements/FL/filing-rules
# Filter by rule type
GET /v1/state-requirements/FL/filing-rules?ruleType=cancellation
Filing Rule Structure
{
"stateCode": "FL",
"rules": [
{
"id": "fl-rule-001",
"label": "Rate Filing Required",
"statute": "F.S. 627.062",
"description": "All rates must be filed with the OIR prior to use",
"ruleType": "filing"
},
{
"id": "fl-rule-003",
"label": "Cancellation Notice Period",
"statute": "F.S. 627.728",
"description": "45-day written notice for cancellation; 10-day for non-payment",
"ruleType": "cancellation"
}
]
}
Coverage Validation
The API provides a validation endpoint that checks a vehicle and coverage configuration against state-specific minimums. Currently implemented for Florida.
POST /v1/state-requirements/FL/validate
{
"vehicle": {
"gvw": 35000,
"isFmcsaRegulated": true,
"cargoType": "general_freight",
"isHazmat": false
},
"coverages": {
"liabilityPerOccurrence": 750000,
"pipAmount": 10000,
"pdlAmount": 50000,
"umAmount": 0,
"umRejected": true,
"biLimit": 300000,
"cargoAmount": 100000
}
}
The response includes valid (boolean), errorCount, warningCount, and a results array. Each result contains ruleId, severity (error or warning), message, statute, requiredAmount, and actualAmount. For states without validation logic, the endpoint returns valid: true with an empty results array.
Captive Domicile Configuration
The @openinsure/domicile package provides a separate registry of captive insurance domicile rules for 17 states. This is relevant for captive program administration and risk retention groups.
Supported Domiciles
The package includes configurations for 17 states: AL, AR, AZ, DE, GA, HI, KY, MO, MT, NC, NE, NV, SC, TN, TX, UT, and VT.
Key differentiators between domiciles:
- Vermont and Hawaii have a 3-year exam cycle (vs. the standard 5-year cycle).
- Vermont and Hawaii require a resident director on the board.
- Texas only supports single parent, group, and association captives (no cells, series, or RRGs).
- Vermont supports the widest range of captive types, including rent-a-captive.
- Delaware, Tennessee, Utah, and Missouri support series captives.
Domicile Configuration Fields
Each domicile config includes:
| Field | Description |
|---|---|
minimumCapital | Minimum capital requirements by captive type (default: $250K single parent, $500K group/RRG) |
annualFees | Annual licensing fees by captive type |
reportingDeadlines | Required filings with due dates and formats |
examCycle | Years between mandatory examinations |
actuarialRequired | Whether an actuarial opinion is required |
boardRequirements | Minimum directors and resident director requirements |
Standard Reporting Deadlines
Unless overridden by a specific state, all domiciles use these standard deadlines:
| Report | Due Date | Format |
|---|---|---|
| Annual Statement | March 1 | NAIC |
| Audited Financials | June 30 | GAAP |
Package API
import {
listSupportedDomiciles,
getDomicileConfig,
isCaptiveTypeSupported,
getReportingDeadlines,
} from '@openinsure/domicile';
// List all supported domicile states
const domiciles = listSupportedDomiciles(); // sorted by state code
// Get config for a specific state
const vtConfig = getDomicileConfig('VT');
// vtConfig.minimumCapital.single_parent => 250000
// vtConfig.boardRequirements.residentDirectorRequired => true
// Check if a captive type is supported
isCaptiveTypeSupported('TX', 'rrg'); // false -- Texas does not support RRGs
// Get reporting deadlines
const deadlines = getReportingDeadlines('VT');
Permissions
All state requirements endpoints require one of the following roles:
underwriterproducerorg_adminsuperadmin
The endpoints are read-only -- state requirements are maintained in code, not in the database. To add or modify state requirements, create or update the relevant state-requirements-{code}.ts module in packages/rating/src/.
Related
- Compliance -- Regulatory compliance and filing automation
- Rate Tables -- Rating engine and premium calculation
- Policy -- Policy lifecycle and bind checklist