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.
DA Agreement Structure
Section titled “DA Agreement Structure”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;}Creating a DA Agreement via API
Section titled “Creating a DA Agreement via API”POST /v1/da-agreementsAuthorization: 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" } ]}Runtime Enforcement
Section titled “Runtime Enforcement”DA enforcement runs at two checkpoints:
1. Quote-Time Pre-Check
Section titled “1. Quote-Time Pre-Check”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}2. Bind-Time Hard Stop
Section titled “2. Bind-Time Hard Stop”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 + incrementUPDATE da_agreementsSET current_gwp = current_gwp + :new_premiumWHERE id = :da_id AND current_gwp + :new_premium <= annual_gwp_limit AND status = 'active'RETURNING id;-- If 0 rows updated → aggregate limit exceeded → 422Breach Handling
Section titled “Breach Handling”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:
- Detection — The compliance engine or carrier audit flags a breach.
- Notification — The carrier’s compliance contact is automatically notified via email + API webhook.
- Referral — The policy is moved to
carrier_reviewstatus and blocked from further endorsements. - Resolution — Carrier may approve (retroactive) or require cancellation.
- Root Cause — Breach record is documented with corrective action.
POST /v1/da-agreements/:id/breachesAuthorization: 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"}Aggregate Tracking
Section titled “Aggregate Tracking”The DA module provides real-time aggregate utilization reporting:
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 } ]}Monthly Reporting to Carriers
Section titled “Monthly Reporting to Carriers”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.