@openinsure/billing and the tax filing API.
Admitted vs Surplus Lines
| Dimension | Admitted Market | Surplus Lines (Non-Admitted) |
|---|---|---|
| Rate approval | State DOI files and approves rates | Rates are not filed with the DOI |
| Guaranty fund | Policyholders protected by state guaranty fund | No guaranty fund protection |
| Tax collection | Carrier remits premium tax directly | Surplus lines broker remits premium tax |
| Stamping office | Not applicable | Required in stamping-office states |
| Diligent search | Not required | Most states require 3 admitted declinations |
| Carrier eligibility | Must be admitted in the state | Must appear on the state’s eligible surplus lines insurer list |
Diligent Search Requirement
Most states require the producing broker to demonstrate that admitted markets have declined the risk before placing it with a non-admitted carrier. The system tracks this through theisSurplusLinesEligible() function in @openinsure/billing.
- Declination threshold — Typically 3 declinations. Configurable per state in
SL_TAX_RATES. - Exempt states — New York and Vermont do not require a diligent search for certain lines of business.
- Documentation — Each declination is recorded with carrier name, date, and reason. The system blocks binding until the threshold is met.
State Premium Tax Rates
Premium tax rates vary by state and are maintained in theSL_TAX_RATES lookup table in packages/billing/src/surplus-lines-tax.ts. Rates are sourced from the NAPSLO/WSIA surplus lines law compendium.
Selected state rates (representative sample):
| State | Premium Tax | Stamping Fee | Filing Fee | Declinations |
|---|---|---|---|---|
| FL | 5.0% | 0.10% | 0.15% | 3 |
| TX | 4.8% | 0.06% | — | 3 |
| CA | 3.0% | 0.18% | — | 3 |
| NY | 3.6% | 0.06% | — | Not required |
| IL | 3.5% | 0.10% | — | 3 |
| GA | 4.0% | — | — | 3 |
| AL | 6.0% | — | — | 3 |
| OR | 0.22% | 0.30% | — | 3 |
| PR | 9.0% | — | — | 3 |
Stamping Offices
Several states operate a Surplus Lines Stamping Office (SLSO) that reviews and stamps each surplus lines policy for compliance. States with stamping fees in the OpenInsure rate table include:- California (SLSF) — 0.18%
- Florida (FSLSO) — 0.10%
- Texas (SLTX) — 0.06%
- New York (ELANY) — 0.06%
- Illinois (ILSLS) — 0.10%
- Minnesota — 0.05%
- Oregon — 0.30%
Tax Calculation
All surplus lines tax arithmetic uses theMoney type from @openinsure/rating to guarantee cent-precise, deterministic results. The calculateSurplusLinesTax() function returns a breakdown per policy:
Municipal and Local Taxes
Some jurisdictions impose additional local taxes on surplus lines placements, typically on fire and property lines. The system maintains aMUNICIPAL_TAX_RATES table with rates for major metropolitan areas:
| Jurisdiction | State | Tax Rate | Applies To |
|---|---|---|---|
| New York City | NY | 3.4% | Fire |
| Los Angeles | CA | 5.0% | All |
| San Francisco | CA | 5.0% | Fire |
| Chicago | IL | 3.5% | Fire |
| Houston | TX | 2.5% | Fire |
| Miami-Dade | FL | 1.0% | Fire |
| Seattle | WA | 5.0% | Fire |
| Denver | CO | 3.0% | All |
| Boston | MA | 4.0% | Fire |
calculateMunicipalTax() function checks the LOB against the jurisdiction’s appliesTo filter before applying the rate.
Tax Return Generation
The tax filing API generates state-level tax returns that aggregate all surplus lines policies for a given period. The workflow is:- Generate —
POST /v1/tax/surplus-lines/generatewith a{ period: "2025" }body. The system loads all bound/active/expired policies, calculates per-policy taxes, and aggregates by state. - Review — Each generated return starts in
draftstatus. Returns include line-item detail (policy number, gross premium, premium tax, stamping fee, filing fee) and aggregate totals. - File — Update status to
filedviaPATCH /v1/tax/surplus-lines/:id/status. - Track — Returns progress through:
draft->ready->filed->acceptedorrejected.
Tax Return Summary
The generate endpoint returns aTaxReturnSummary with cross-state totals:
| Field | Description |
|---|---|
stateCount | Number of states with taxable premium |
totalGrossPremium | Sum of gross premium across all states |
totalPremiumTax | Sum of state premium taxes |
totalStampingFee | Sum of stamping office fees |
totalFilingFee | Sum of state filing fees |
totalMunicipalTax | Sum of municipal/local taxes |
totalTaxLiability | Grand total tax due |
Filing Due Dates
Filing deadlines are state-specific and stored in theSL_TAX_DUE_DATES table:
| State | Due Date |
|---|---|
| FL | March 1 |
| TX | March 1 |
| CA | March 1 |
| NY | January 31 |
| IL | March 15 |
| Default | March 1 |
Tax Filing API
List Returns
org_admin or billing_admin role.
Get Return Detail
Update Filing Status
Export CSV
Late Filing Penalties
If a tax return is filed after the due date, thecalculateLatePenalty() function computes the penalty and interest:
- Penalty — 10% of tax due (flat).
- Interest — 1% per month of tax due (simple interest), counted from the due date.
- Months late — Calculated using 30.44-day month approximation, rounded up.
Authorization
All tax filing endpoints require theorg_admin or billing_admin JWT role. The endpoints are org-scoped — each request operates only on policies and returns belonging to the authenticated organization.