Skip to content

Delegated Authority

A Delegated Authority (DA) agreement is the contractual foundation of an MGA’s relationship with its carrier. It specifies exactly what the MGA is permitted to do without prior carrier approval: which risks, in which states, up to which limits, and up to what aggregate volume.

OpenInsure models DA agreements as versioned, structured configurations that are enforced automatically at both quote time and bind time.

A DA agreement in OpenInsure contains:

interface DAAgreement {
id: string;
carrierId: string;
programId: string;
effectiveDate: string;
expirationDate: string;
status: 'active' | 'suspended' | 'expired';
// Per-policy limits
maxOccurrenceLimit: number;
maxAggregateLimit: number;
maxPremiumPerPolicy: number;
// Geographic authority
authorizedStates: string[]; // 2-letter codes, or ['ALL_50'] for nationwide
excludedStates: string[]; // States specifically prohibited
// Class authority
authorizedNaicsCodes: string[]; // Empty array = all classes permitted
excludedNaicsCodes: string[]; // NAICS codes explicitly excluded
// Aggregate limits
annualGwpLimit: number; // Total bound GWP permitted per agreement year
quarterlyGwpLimit?: number; // Optional quarterly sub-limit
maxPoliciesPerInsured: number; // Prevent concentration on a single insured
// Risk characteristics
maxInsuredRevenue?: number;
maxTiv?: number; // Property only
allowedPolicyTerms: number[]; // e.g., [6, 12] months
minYearsInBusiness?: number;
// Referral triggers (auto-refer even within limits)
referralTriggers: ReferralTrigger[];
}
interface ReferralTrigger {
type: 'REVENUE_THRESHOLD' | 'LOSS_HISTORY' | 'CLASS_CODE' | 'STATE';
threshold?: number;
values?: string[];
description: string;
}
Terminal window
POST /v1/da-agreements
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"carrierId": "car_01J8...",
"programId": "prog_gl_contractors",
"effectiveDate": "2025-01-01",
"expirationDate": "2025-12-31",
"maxOccurrenceLimit": 1000000,
"maxAggregateLimit": 2000000,
"maxPremiumPerPolicy": 50000,
"authorizedStates": ["VT", "NH", "ME", "MA", "CT", "RI", "NY"],
"excludedNaicsCodes": ["238210", "237310"],
"annualGwpLimit": 5000000,
"maxInsuredRevenue": 50000000,
"allowedPolicyTerms": [12],
"referralTriggers": [
{
"type": "REVENUE_THRESHOLD",
"threshold": 25000000,
"description": "Refer accounts over $25M revenue to carrier TU"
},
{
"type": "LOSS_HISTORY",
"threshold": 1.5,
"description": "Refer any account with experience mod > 1.5"
}
]
}

DA enforcement runs at two checkpoints:

When POST /v1/submissions/:id/quote is called, the rating engine reads the DA agreement from CF D1 (cached at the edge) and validates:

  • Requested limits ≤ DA maximums
  • Risk state is in authorizedStates
  • NAICS code is not in excludedNaicsCodes
  • Insured revenue ≤ maxInsuredRevenue (if set)
  • No referral trigger conditions are met

If any check fails, the quote response includes a daFlags array explaining the issue. The quote is still generated (so the producer knows the premium), but binding is blocked.

{
"grossPremium": 18750,
"daFlags": [
{
"code": "STATE_NOT_AUTHORIZED",
"severity": "BLOCK",
"message": "New York is not in the authorized states for this DA agreement",
"field": "state",
"value": "NY"
}
],
"bindable": false
}

When POST /v1/submissions/:id/bind is called, the system re-runs all DA checks atomically (using a database transaction with row-level locking on the DA aggregate counter). This prevents race conditions where two simultaneous binds could collectively exceed an aggregate limit.

-- Atomic aggregate check + increment
UPDATE da_agreements
SET current_gwp = current_gwp + :new_premium
WHERE id = :da_id
AND current_gwp + :new_premium <= annual_gwp_limit
AND status = 'active'
RETURNING id;
-- If 0 rows updated → aggregate limit exceeded → 422

A DA breach occurs when a bound policy is discovered to violate the DA terms post-bind (e.g., a NAICS code was misclassified, or a state eligibility error was made). The breach workflow:

  1. Detection — The compliance engine or carrier audit flags a breach.
  2. Notification — The carrier’s compliance contact is automatically notified via email + API webhook.
  3. Referral — The policy is moved to carrier_review status and blocked from further endorsements.
  4. Resolution — Carrier may approve (retroactive) or require cancellation.
  5. Root Cause — Breach record is documented with corrective action.
Terminal window
POST /v1/da-agreements/:id/breaches
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"policyId": "pol_01J8...",
"breachType": "STATE_NOT_AUTHORIZED",
"discoveredAt": "2025-07-10T09:00:00Z",
"description": "Policy bound in NY. NY was inadvertently excluded from the DA config.",
"proposedResolution": "Carrier to retroactively approve or MGA to arrange non-renewal"
}

The DA module provides real-time aggregate utilization reporting:

Terminal window
GET /v1/da-agreements/:id/utilization
# Response:
{
"daId": "da_01J8...",
"agreementYear": "2025",
"annualGwpLimit": 5000000,
"currentGwp": 2847500,
"utilizationPct": 56.95,
"remainingCapacity": 2152500,
"projectedYearEnd": 4920000,
"onPace": true,
"quarterlyBreakdown": [
{ "quarter": "Q1", "gwp": 780000, "pct": 15.6 },
{ "quarter": "Q2", "gwp": 1240000, "pct": 24.8 },
{ "quarter": "Q3", "gwp": 827500, "pct": 16.55 },
{ "quarter": "Q4", "gwp": 0, "pct": 0, "projected": true }
]
}

At the end of each month, the DA module generates a utilization report for the carrier showing:

  • All policies bound during the period (with premium, state, class, limit)
  • Running aggregate vs. limit
  • Any referrals made and their disposition
  • Any DA exceptions granted

This report is included in the monthly bordereaux package. See Bordereaux Automation for delivery configuration.