Batch Transaction Import

For both Filing Services® and Connect® clients, the Transaction Import endpoint enables agencies to programmatically import transactional policy data and documents into the InsCipher portal. This streamlines the process of managing and tracking Surplus Lines transactions.

Introduction

The Batch Transaction Import API allows the programmatic import of multiple transactional policy data and documents into InsCipher's online portal. In order to take full advantage of this functionality, your IT team will need to first be able to extract policy data and documents out of your existing policy management system, map these fields to those defined in this documentation, and submit the data on a recurring basis (most InsCipher clients do this on a daily cadence) via this endpoint.

All batches imported into InsCipher are logged and tracked via a batch_id, used to link all transactions together, which is returned in the response. There are a few strict field requirements, but generally, there is some flexibility with regard to what data is required upon initial import. If you have questions on this process or want to get set up, please contact [email protected].


👍

TIP:

There are different methods or approaches to importing transactions using this REST API. If you need a quick solution to test out an import and do not currently have one, consider utilizing Postman or make a test call on our Transaction Import schema page. If you are new to our schemas section, we recommend you start with an overview of how to interact with them here.

📘

Notes:

  • Field Requirements:
    We recommend that you add ALL fields marked as Required = ✓ in the field tables below. If there are values that do not exist in your agency system, you may need to hard code these as null and manually add the data after import.
  • Document Import:
    While this endpoint allows for the import of documents - they can also be imported separately from transactions via API using your internal invoice number or InsCipher Transaction ID. To learn more, go here.

🚧

Before Getting Started:

InsCipher utilizes data tables outside of the documentation for every request to provide the most up to date requirements for your integration. Depending on your configuration, you may need to reference the following tables, which will be mentioned further down in the documentation.

Feel free to open these in a new window or bookmark for future use:

Workflow Overview

The Policy Transaction import API is designed to be completed in two steps:

Step 1: POST JSON batch file to the Import Endpoint

Run the POST request to import specific transactional details formatted with specific header names to start the import process. This detail can also include a link to documents related to the transactions. See the section below for sample JSON request and field descriptions.

Step 2: Send a GET request to get a detailed Import Response

Run a request to GET the details on whether or not a specific transaction was imported successfully or if there were any import errors.

Read more about Batch Import Status request

Request & Response

POST https://surpluslines.inscipher.com/api/v4/transaction

Before structuring your request for policy import, it is important that you identify what type of InsCipher client you are importing data on behalf of. This will matter, as field requirements between Filing Services and Connect clients differ. Additionally, there are a few requirements around data migration that you should be aware of - and that are noted in the sections below. Click the Get Started tab for the respective client type to understand requirements around:

  • Field Types and Descriptions, including required and optional fields.
  • JSON request format
  • JSON response format
  • Error handling and warnings

Filing Services® clients

Get Started

Before you get started

🔃 Are you migrating data?

We recommend bringing in the current year's transactional data in order for the system to be able to account for what filings have been filed to date. These data fields are located at the bottom of this page in BLUE.. It is important that you add them to the request in order to ensure the policy data imported contains the correct filing and paid dates.

Required and optional fields

For the purpose of being able to make a successful request, fields shaded in RED below are strictly required. It is recommended that you include all fields that you are able for each policy to ensure an accurate, detailed understanding of each policy and to avoid any potential missing information that may be helpful when filing.

Field TitleField DescriptionField Type
idUnique tracking ID for imported transactions (duplicates excluded)varchar (255)
policy_numberNon-unique policy identifier with state-specific length limitsvarchar (50)
policy_effective_datePolicy start date using API date logicdate/datetime
policy_expiration_datePolicy end date following API date formatting rulesdate/datetime
transaction_effective_dateTransaction execution date (yyyy-mm-dd format)date
expiring_policy_numberPrevious policy ID for renewals onlyvarchar (50)
invoice_dateState-specific invoicing date (GA=Revenue Date, HI=Issued Date)date
invoice_numberInternal tracking ID from agent interfacevarchar
transaction_typeAPI-defined transaction categoryvarchar (50)
policy_typePolicy classification (standard/master/cert/reporting_form)string
account_written_asBrokerage account type with agency defaultsvarchar (50)
rpgRisk Purchasing Group indicator (1=Yes, 0=No)tinyint (1)
layered_riskLayered risk coverage flagtinyint (1)
broker_of_recordBroker change indicatortinyint (1)
risk_retention_groupRisk retention statustinyint (1)
purchasing_group_nameRequired when RPG=1varchar (255)
risk_descriptionState-specific risk codes (NY/OH/PA have special requirements)varchar (255)
ecpExempt Commercial Purchaser statustinyint (1)
exemptTax exemption status (Utah-required)tinyint (1)
multi_stateMulti-state liability indicator (primarily for Utah)tinyint (1)
policy_limitAggregate policy liability amount (required in 12+ states)integer (12)
property_limitProperty coverage limit (state-dependent requirement)integer (12)
transaction_line_of_business
transaction_line_of_business_list
Coverage code(s) using | separator for multiple valuesinteger (11) or string
transaction_line_of_business_coveragePremium breakdown percentages for multiple LOBsstring
non_admitted_insurer_code
non_admitted_insurer_code_list
Carrier NAIC codes (Lloyd's: AA-1122000) | separatedvarchar (255) or string
non_admitted_insurer_code_coveragePercentage allocations for multiple insurersstring
syndicate_listLloyd's syndicate codes (pipe-separated)string
syndicate_list_coverageSyndicate percentage allocations (e.g., "60|40")string
premiumBase policy premium (defaults to 0 if empty)decimal (12, 2)
agency_feeBrokerage/agency service feedecimal (12, 2)
inspection_feeUnderwriting audit/inspection chargedecimal (12, 2)
collection_feePayment processing feedecimal (12, 2)
sl_taxState-specific surplus lines taxdecimal (12, 2)
stamping_feeState filing fee (e.g., FL FSLO fee)decimal (12, 2)
sl_service_chargeOR/MS-specific service chargedecimal (12, 2)
municipal_feeKY-specific municipal feedecimal (12, 2)
fm_taxIL Fire Marshal Tax (LOB-based)decimal (12, 2)
empa_taxFL EMPA taxdecimal (12, 2)
totalAuto-calculated sum of premium + feesdecimal (12, 2)
commission_receivedNH commission status flagtinyint (1)
mailing_insured_namePolicy document namevarchar (100)
mailing_addressPrimary mailing addressvarchar (255)
mailing_address2Secondary mailing addressvarchar (255)
mailing_cityMailing cityvarchar (100)
mailing_zip_codeMailing ZIP codevarchar (20)
mailing_state_code2-letter state codevarchar (20)
insured_entityEntity type (individual/commercial/governmental/etc)varchar (100)
insured_emailContact emailvarchar (100)
insured_phoneContact phonevarchar (100)
insured_countyMailing countyvarchar (100)
physical_same_as_mailingAddress equivalence flagtinyint (1)
physical_addressPrimary physical addressvarchar (255)
physical_address2Secondary physical addressvarchar (255)
physical_cityPhysical cityvarchar (100)
physical_zip_codePhysical ZIP codevarchar (20)
physical_state_code2-letter state codevarchar (20)
agent_idAgency/agent identifierinteger
agent_notesInternal policy notesvarchar
transaction_documentsDocument upload section (API submission or manual upload)object
└ codeDocument type code from tax rules APIvarchar
└ urlSecure document URL with temporary access tokenvarchar (255)
└ idOptional tracking ID for imported documentsinteger (11)
Service of Process (Alabama-required)
sop_nameLegal entity name for service of suitvarchar (100)
sop_addressPrimary legal addressvarchar (255)
sop_address_2Secondary legal addressvarchar (255)
sop_cityLegal jurisdiction cityvarchar (100)
sop_state2-letter state code for legal jurisdictionvarchar (20)
sop_zipLegal address ZIP codevarchar (20)
Declining Carrier Information
dc_naicDeclined carriers' NAIC codes (pipe-separated)varchar (255)
dc_date_declinedDeclination dates matching NAIC codesdate (yyyy-mm-dd)
dc_declining_reasonState-specific rejection reasons (pipe-separated)varchar (255)
dc_underwriting_considerationNY-specific underwriting factors (pipe-separated)varchar (255)
dc_representative_nameDeclining carrier contact names (pipe-separated)varchar (255)
dc_representative_titleNY-specific roles (Company Employee/Agent/Other)varchar (255)
dc_representative_emailContact emails matching NAIC ordervarchar (255)
dc_representative_phone_numberPhone numbers for declined carriersvarchar (255)
dc_representative_websiteOfficial carrier websitesvarchar (255)
dc_who_received_the_declinationsRecipient from admin-defined optionsvarchar(255)/integer
dc_other_person_in_officeExplanation for custom recipientsvarchar (255)
dc_who_performed_diligent_search1=Surplus Broker, 2=Retail Producertinyint (1)
Document Subfields
└ codeTax rule API document identifiervarchar
└ urlTemporary authenticated document URLvarchar (255)
└ idOptional import tracking IDinteger (11)
retail_producer_nameRetail Producer Namevarchar (255)
retail_agency_nameRetail Agency Namevarchar (255)
retail_addressRetail Producer’s Address Line 1varchar (255)
retail_address2Retail Producer’s Address Line 2varchar (255)
retail_cityRetail Producer City Locationvarchar (255)
retail_stateRetail Producer State Locationvarchar (2)
retail_zipRetail Producer Zip Code Locationvarchar (255)
retail_producer_licenseDepends on state retail producer settingsvarchar (255)
retail_agency_licenseDepends on state retail producer settingsvarchar (255)
retail_phone_numberDepends on state retail producer settingsvarchar (255)
retail_email_addressDepends on state retail producer settingsvarchar (255)
wind_storm_exclusionWindstorm Exclusion Flagtinyint (1)
wind_storm_eligible_for_poolWindstorm Pool Exclusion Flagtinyint (1)
wind_storm_deductionWindstorm/Hurricane Deductibledecimal (12, 2)
wind_storm_primary_amountWindstorm Primary Amount (Coverage A)decimal (12, 2)
wind_storm_other_coverages_deductibleAll Other Perils Deductibledecimal (12, 2)
lloyds_cover_holder_numberAccording to LLoyd's Cover Holder definitionvarchar (255)
lloyds_cover_holder_nameAccording to LLoyd's Cover Holder definitionvarchar (255)
associated_producerLicense Number of Associated Producervarchar (255)
anniversary_billingAnniversary Billingtinyint (1)
Fields for Data Migration
stamping_fee_invoice_idState stamping fee invoice number referencevarchar
stamping_fee_date_paidDate stamping fee was paid to statedate (yyyy-mm-dd)
sl_tax_invoice_idSurplus lines tax invoice number referencevarchar
sl_tax_paid_dateDate surplus lines tax was paid to statedate (yyyy-mm-dd)
other_taxes_paid_datePayment date for other state taxes/feesdate (yyyy-mm-dd)
unique_idState-specific ID codes (MO Risk Number, NY Affidavit #, etc)varchar (50)
transaction_status1=Saved, 2=Submitted, 3=Flagged, 4=Filed, etcinteger (2)
date_filedState filing completion datedate (yyyy-mm-dd)
license_numberValid license number for physical statevarchar
filing_adminAssigned filing administratorvarchar
migratedData migration indicator flagtinyint(1)

Connect® clients

Get Started

Before you get started

Are you migrating data?

🔃 Are you migrating data?

We recommend bringing in the current year's transactional data in order for the system to be able to account for what filings have been filed to date. These data fields are located at the bottom of this page in BLUE.. It is important that you add them to the request in order to ensure the policy data imported contains the correct filing and paid dates.

Required and optional fields

For the purpose of being able to make a successful request, fields shaded in RED below are strictly required. It is recommended that you include all fields that you are able for each policy to ensure an accurate, detailed understanding of each policy and to avoid any potential missing information that may be helpful when filing.

Field TitleField DescriptionField Type
idUnique tracking ID for imported transactions (duplicates excluded)varchar (255)
policy_numberNon-unique policy identifier with state-specific length limitsvarchar (50)
policy_effective_datePolicy start date using API date logicdate/datetime
policy_expiration_datePolicy end date following API date formatting rulesdate/datetime
transaction_effective_dateTransaction execution date (yyyy-mm-dd format)date
expiring_policy_numberPrevious policy ID for renewals onlyvarchar (50)
invoice_dateState-specific invoicing date (GA=Revenue Date, HI=Issued Date)date
invoice_numberInternal tracking ID from agent interfacevarchar
transaction_typeAPI-defined transaction categoryvarchar (50)
policy_typePolicy classification (standard/master/cert/reporting_form)string
account_written_asBrokerage account type with agency defaultsvarchar (50)
rpgRisk Purchasing Group indicator (1=Yes, 0=No)tinyint (1)
layered_riskLayered risk coverage flagtinyint (1)
broker_of_recordBroker change indicatortinyint (1)
risk_retention_groupRisk retention statustinyint (1)
purchasing_group_nameRequired when RPG=1varchar (255)
risk_descriptionState-specific risk codes (NY/OH/PA have special requirements)varchar (255)
ecpExempt Commercial Purchaser statustinyint (1)
exemptTax exemption status (Utah-required)tinyint (1)
multi_stateMulti-state liability indicator (primarily for Utah)tinyint (1)
policy_limitAggregate policy liability amount (required in 12+ states)integer (12)
property_limitProperty coverage limit (state-dependent requirement)integer (12)
transaction_line_of_business
transaction_line_of_business_list
Coverage code(s) using | separator for multiple valuesinteger (11) or string
transaction_line_of_business_coveragePremium breakdown percentages for multiple LOBsstring
non_admitted_insurer_code
non_admitted_insurer_code_list
Carrier NAIC codes (Lloyd's: AA-1122000) | separatedvarchar (255) or string
non_admitted_insurer_code_coveragePercentage allocations for multiple insurersstring
syndicate_listLloyd's syndicate codes (pipe-separated)string
syndicate_list_coverageSyndicate percentage allocations (e.g., "60|40")string
premiumBase policy premium (defaults to 0 if empty)decimal (12, 2)
agency_feeBrokerage/agency service feedecimal (12, 2)
inspection_feeUnderwriting audit/inspection chargedecimal (12, 2)
collection_feePayment processing feedecimal (12, 2)
sl_taxState-specific surplus lines taxdecimal (12, 2)
stamping_feeState filing fee (e.g., FL FSLO fee)decimal (12, 2)
sl_service_chargeOR/MS-specific service chargedecimal (12, 2)
municipal_feeKY-specific municipal feedecimal (12, 2)
fm_taxIL Fire Marshal Tax (LOB-based)decimal (12, 2)
empa_taxFL EMPA taxdecimal (12, 2)
totalAuto-calculated sum of premium + feesdecimal (12, 2)
commission_receivedNH commission status flagtinyint (1)
mailing_insured_namePolicy document namevarchar (100)
mailing_addressPrimary mailing addressvarchar (255)
mailing_address2Secondary mailing addressvarchar (255)
mailing_cityMailing cityvarchar (100)
mailing_zip_codeMailing ZIP codevarchar (20)
mailing_state_code2-letter state codevarchar (20)
insured_entityEntity type (individual/commercial/governmental/etc)varchar (100)
insured_emailContact emailvarchar (100)
insured_phoneContact phonevarchar (100)
insured_countyMailing countyvarchar (100)
physical_same_as_mailingAddress equivalence flagtinyint (1)
physical_addressPrimary physical addressvarchar (255)
physical_address2Secondary physical addressvarchar (255)
physical_cityPhysical cityvarchar (100)
physical_zip_codePhysical ZIP codevarchar (20)
physical_state_code2-letter state codevarchar (20)
agent_idAgency/agent identifierinteger
agent_notesInternal policy notesvarchar
transaction_documentsDocument upload section (API submission or manual upload)object
└ codeDocument type code from tax rules APIvarchar
└ urlSecure document URL with temporary access tokenvarchar (255)
└ idOptional tracking ID for imported documentsinteger (11)
Service of Process (Alabama-required)
sop_nameLegal entity name for service of suitvarchar (100)
sop_addressPrimary legal addressvarchar (255)
sop_address_2Secondary legal addressvarchar (255)
sop_cityLegal jurisdiction cityvarchar (100)
sop_state2-letter state code for legal jurisdictionvarchar (20)
sop_zipLegal address ZIP codevarchar (20)
Declining Carrier Information
dc_naicDeclined carriers' NAIC codes (pipe-separated)varchar (255)
dc_date_declinedDeclination dates matching NAIC codesdate (yyyy-mm-dd)
dc_declining_reasonState-specific rejection reasons (pipe-separated)varchar (255)
dc_underwriting_considerationNY-specific underwriting factors (pipe-separated)varchar (255)
dc_representative_nameDeclining carrier contact names (pipe-separated)varchar (255)
dc_representative_titleNY-specific roles (Company Employee/Agent/Other)varchar (255)
dc_representative_emailContact emails matching NAIC ordervarchar (255)
dc_representative_phone_numberPhone numbers for declined carriersvarchar (255)
dc_representative_websiteOfficial carrier websitesvarchar (255)
dc_who_received_the_declinationsRecipient from admin-defined optionsvarchar(255)/integer
dc_other_person_in_officeExplanation for custom recipientsvarchar (255)
dc_who_performed_diligent_search1=Surplus Broker, 2=Retail Producertinyint (1)
Document Subfields
└ codeTax rule API document identifiervarchar
└ urlTemporary authenticated document URLvarchar (255)
└ idOptional import tracking IDinteger (11)
retail_producer_nameRetail Producer Namevarchar (255)
retail_agency_nameRetail Agency Namevarchar (255)
retail_addressRetail Producer’s Address Line 1varchar (255)
retail_address2Retail Producer’s Address Line 2varchar (255)
retail_cityRetail Producer City Locationvarchar (255)
retail_stateRetail Producer State Locationvarchar (2)
retail_zipRetail Producer Zip Code Locationvarchar (255)
retail_producer_licenseDepends on state retail producer settingsvarchar (255)
retail_agency_licenseDepends on state retail producer settingsvarchar (255)
retail_phone_numberDepends on state retail producer settingsvarchar (255)
retail_email_addressDepends on state retail producer settingsvarchar (255)
wind_storm_exclusionWindstorm Exclusion Flagtinyint (1)
wind_storm_eligible_for_poolWindstorm Pool Exclusion Flagtinyint (1)
wind_storm_deductionWindstorm/Hurricane Deductibledecimal (12, 2)
wind_storm_primary_amountWindstorm Primary Amount (Coverage A)decimal (12, 2)
wind_storm_other_coverages_deductibleAll Other Perils Deductibledecimal (12, 2)
lloyds_cover_holder_numberAccording to LLoyd's Cover Holder definitionvarchar (255)
lloyds_cover_holder_nameAccording to LLoyd's Cover Holder definitionvarchar (255)
migratedinternal use onlytinyint (1)
associated_producerLicense Number of Associated Producervarchar (255)
anniversary_billingAnniversary Billingtinyint (1)
stamping_fee_invoice_id"Stamping Fee Invoice Id" field on the Tracking tabvarchar
sl_tax_invoice_id"SL Tax Invoice ID" field on the Tracking tabvarchar
business_group_idDivisions/regions tracking IDvarchar
customer_codeCustomer classification codevarchar
transaction_statusStatus (ignored for UT/ID)integer
license_numberLicense with default fallbackvarchar
filing_adminAdmin name with default logicvarchar
date_filedAuto-files transaction when setdate (yyyy-mm-dd)
umr_numberUMR identifiervarchar
sla_transaction_numberFormat: XXXXX-XX-XXXXXvarchar
unique_idUnique identifiervarchar
stamping_fee_date_paidStamping fee payment datedate (yyyy-mm-dd)
sl_tax_paid_dateSL tax payment datedate (yyyy-mm-dd)
other_taxes_paid_dateOther taxes payment datedate (yyyy-mm-dd)
Fields for Data Migration
stamping_fee_invoice_idState stamping fee invoice number referencevarchar
stamping_fee_date_paidDate stamping fee was paid to statedate (yyyy-mm-dd)
sl_tax_invoice_idSurplus lines tax invoice number referencevarchar
sl_tax_paid_dateDate surplus lines tax was paid to statedate (yyyy-mm-dd)
other_taxes_paid_datePayment date for other state taxes/feesdate (yyyy-mm-dd)
unique_idState-specific ID codes (MO Risk Number, NY Affidavit #, etc)varchar (50)
transaction_status1=Saved, 2=Submitted, 3=Flagged, 4=Filed, etcinteger (2)
date_filedState filing completion datedate (yyyy-mm-dd)
license_numberValid license number for physical statevarchar
filing_adminAssigned filing administratorvarchar
migratedData migration indicator flagtinyint(1)

Broker Fees vs Carrier Fees

InsCipher separates fees into two buckets as these fees are taxed and reported differently depending on the state.

  1. Broker Fees - These are an agency, policy, broker, filing, or other revenue-generating or reimbursement fees charged by or retained by the broker that is not mandated by the carrier.

  2. Carrier Fees - These are inspection, audit, underwriting, or other fees charged or mandated by the carrier that is retained by the carrier.

❗️

Please note

It is important that when doing an import into InsCipher, your various fees get mapped to one of these two types so that our system can accurately determine the correct SL Tax calculations.

State Taxes and Fee Titles

InsCipher, by default, has certain state taxes and fees defaulted to these names:

a. sl_tax - Surplus Lines Tax
b. stamping_fee - Stamping Fee c. sl_service_charge - Surplus Lines Service Charge d. fm_tax - Fire Marshall Tax e. empa_tax - EMPA Tax f. municipal_fee - Municipal Tax

In some instances, we have chosen to rename tax titles for certain states instead of creating several custom fee fields. Here is a list of tax/fee titles that may vary from the default.

How Do Generic Lines of Business Import Codes Work?

InsCipher maintains a list of active coverage lists by state. To simplify the import process, we do not expect you to determine what these codes are on import. Instead, we have created Generic Import codes for you to use which can be found here. On the sheet, the generic codes (GEN-XXXX) are listed with the orange headers on the left side of the sheet. To the right, you will see state-specific codes listed with blue headers. If you import using the generic codes, then our system will automatically associate the transaction to the proper state-specific line of business upon import according to the mapping.

❗️

Generic codes

It is your responsibility to review the mapping and to determine if there are additional generic codes that need to be mapped or altered.

🚧

Note

InsCipher will accommodate adding generic codes for you as part of the implementation process. These need to be requested via email and in one single request for all adjustments needed. If changes to this mapping are requested after implementation, clients will be charged an hourly rate to add these codes as it can be a time-consuming process.

Can I Import Documents In A Separate Step?

Yes, after transactions have been imported successfully, documents can be added in a separate step. To do this, please follow the instructions outlined here.

API automatically returns a list of all policy numbers together with import status.

GET Import Status Response

After the policy data has been imported, you can then use the GET request below to get specific results.

GET Import Status (All Clients)