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 Title | Field Description | Field Type |
---|---|---|
id | Unique tracking ID for imported transactions (duplicates excluded) | varchar (255) |
policy_number | Non-unique policy identifier with state-specific length limits | varchar (50) |
policy_effective_date | Policy start date using API date logic | date/datetime |
policy_expiration_date | Policy end date following API date formatting rules | date/datetime |
transaction_effective_date | Transaction execution date (yyyy-mm-dd format) | date |
expiring_policy_number | Previous policy ID for renewals only | varchar (50) |
invoice_date | State-specific invoicing date (GA=Revenue Date, HI=Issued Date) | date |
invoice_number | Internal tracking ID from agent interface | varchar |
transaction_type | API-defined transaction category | varchar (50) |
policy_type | Policy classification (standard/master/cert/reporting_form) | string |
account_written_as | Brokerage account type with agency defaults | varchar (50) |
rpg | Risk Purchasing Group indicator (1=Yes, 0=No) | tinyint (1) |
layered_risk | Layered risk coverage flag | tinyint (1) |
broker_of_record | Broker change indicator | tinyint (1) |
risk_retention_group | Risk retention status | tinyint (1) |
purchasing_group_name | Required when RPG=1 | varchar (255) |
risk_description | State-specific risk codes (NY/OH/PA have special requirements) | varchar (255) |
ecp | Exempt Commercial Purchaser status | tinyint (1) |
exempt | Tax exemption status (Utah-required) | tinyint (1) |
multi_state | Multi-state liability indicator (primarily for Utah) | tinyint (1) |
policy_limit | Aggregate policy liability amount (required in 12+ states) | integer (12) |
property_limit | Property coverage limit (state-dependent requirement) | integer (12) |
transaction_line_of_business transaction_line_of_business_list | Coverage code(s) using | separator for multiple values | integer (11) or string |
transaction_line_of_business_coverage | Premium breakdown percentages for multiple LOBs | string |
non_admitted_insurer_code non_admitted_insurer_code_list | Carrier NAIC codes (Lloyd's: AA-1122000) | separated | varchar (255) or string |
non_admitted_insurer_code_coverage | Percentage allocations for multiple insurers | string |
syndicate_list | Lloyd's syndicate codes (pipe-separated) | string |
syndicate_list_coverage | Syndicate percentage allocations (e.g., "60|40") | string |
premium | Base policy premium (defaults to 0 if empty) | decimal (12, 2) |
agency_fee | Brokerage/agency service fee | decimal (12, 2) |
inspection_fee | Underwriting audit/inspection charge | decimal (12, 2) |
collection_fee | Payment processing fee | decimal (12, 2) |
sl_tax | State-specific surplus lines tax | decimal (12, 2) |
stamping_fee | State filing fee (e.g., FL FSLO fee) | decimal (12, 2) |
sl_service_charge | OR/MS-specific service charge | decimal (12, 2) |
municipal_fee | KY-specific municipal fee | decimal (12, 2) |
fm_tax | IL Fire Marshal Tax (LOB-based) | decimal (12, 2) |
empa_tax | FL EMPA tax | decimal (12, 2) |
total | Auto-calculated sum of premium + fees | decimal (12, 2) |
commission_received | NH commission status flag | tinyint (1) |
mailing_insured_name | Policy document name | varchar (100) |
mailing_address | Primary mailing address | varchar (255) |
mailing_address2 | Secondary mailing address | varchar (255) |
mailing_city | Mailing city | varchar (100) |
mailing_zip_code | Mailing ZIP code | varchar (20) |
mailing_state_code | 2-letter state code | varchar (20) |
insured_entity | Entity type (individual/commercial/governmental/etc) | varchar (100) |
insured_email | Contact email | varchar (100) |
insured_phone | Contact phone | varchar (100) |
insured_county | Mailing county | varchar (100) |
physical_same_as_mailing | Address equivalence flag | tinyint (1) |
physical_address | Primary physical address | varchar (255) |
physical_address2 | Secondary physical address | varchar (255) |
physical_city | Physical city | varchar (100) |
physical_zip_code | Physical ZIP code | varchar (20) |
physical_state_code | 2-letter state code | varchar (20) |
agent_id | Agency/agent identifier | integer |
agent_notes | Internal policy notes | varchar |
transaction_documents | Document upload section (API submission or manual upload) | object |
└ code | Document type code from tax rules API | varchar |
└ url | Secure document URL with temporary access token | varchar (255) |
└ id | Optional tracking ID for imported documents | integer (11) |
Service of Process (Alabama-required) | ||
sop_name | Legal entity name for service of suit | varchar (100) |
sop_address | Primary legal address | varchar (255) |
sop_address_2 | Secondary legal address | varchar (255) |
sop_city | Legal jurisdiction city | varchar (100) |
sop_state | 2-letter state code for legal jurisdiction | varchar (20) |
sop_zip | Legal address ZIP code | varchar (20) |
Declining Carrier Information | ||
dc_naic | Declined carriers' NAIC codes (pipe-separated) | varchar (255) |
dc_date_declined | Declination dates matching NAIC codes | date (yyyy-mm-dd) |
dc_declining_reason | State-specific rejection reasons (pipe-separated) | varchar (255) |
dc_underwriting_consideration | NY-specific underwriting factors (pipe-separated) | varchar (255) |
dc_representative_name | Declining carrier contact names (pipe-separated) | varchar (255) |
dc_representative_title | NY-specific roles (Company Employee/Agent/Other) | varchar (255) |
dc_representative_email | Contact emails matching NAIC order | varchar (255) |
dc_representative_phone_number | Phone numbers for declined carriers | varchar (255) |
dc_representative_website | Official carrier websites | varchar (255) |
dc_who_received_the_declinations | Recipient from admin-defined options | varchar(255)/integer |
dc_other_person_in_office | Explanation for custom recipients | varchar (255) |
dc_who_performed_diligent_search | 1=Surplus Broker, 2=Retail Producer | tinyint (1) |
Document Subfields | ||
└ code | Tax rule API document identifier | varchar |
└ url | Temporary authenticated document URL | varchar (255) |
└ id | Optional import tracking ID | integer (11) |
retail_producer_name | Retail Producer Name | varchar (255) |
retail_agency_name | Retail Agency Name | varchar (255) |
retail_address | Retail Producer’s Address Line 1 | varchar (255) |
retail_address2 | Retail Producer’s Address Line 2 | varchar (255) |
retail_city | Retail Producer City Location | varchar (255) |
retail_state | Retail Producer State Location | varchar (2) |
retail_zip | Retail Producer Zip Code Location | varchar (255) |
retail_producer_license | Depends on state retail producer settings | varchar (255) |
retail_agency_license | Depends on state retail producer settings | varchar (255) |
retail_phone_number | Depends on state retail producer settings | varchar (255) |
retail_email_address | Depends on state retail producer settings | varchar (255) |
wind_storm_exclusion | Windstorm Exclusion Flag | tinyint (1) |
wind_storm_eligible_for_pool | Windstorm Pool Exclusion Flag | tinyint (1) |
wind_storm_deduction | Windstorm/Hurricane Deductible | decimal (12, 2) |
wind_storm_primary_amount | Windstorm Primary Amount (Coverage A) | decimal (12, 2) |
wind_storm_other_coverages_deductible | All Other Perils Deductible | decimal (12, 2) |
lloyds_cover_holder_number | According to LLoyd's Cover Holder definition | varchar (255) |
lloyds_cover_holder_name | According to LLoyd's Cover Holder definition | varchar (255) |
associated_producer | License Number of Associated Producer | varchar (255) |
anniversary_billing | Anniversary Billing | tinyint (1) |
Fields for Data Migration | ||
stamping_fee_invoice_id | State stamping fee invoice number reference | varchar |
stamping_fee_date_paid | Date stamping fee was paid to state | date (yyyy-mm-dd) |
sl_tax_invoice_id | Surplus lines tax invoice number reference | varchar |
sl_tax_paid_date | Date surplus lines tax was paid to state | date (yyyy-mm-dd) |
other_taxes_paid_date | Payment date for other state taxes/fees | date (yyyy-mm-dd) |
unique_id | State-specific ID codes (MO Risk Number, NY Affidavit #, etc) | varchar (50) |
transaction_status | 1=Saved, 2=Submitted, 3=Flagged, 4=Filed, etc | integer (2) |
date_filed | State filing completion date | date (yyyy-mm-dd) |
license_number | Valid license number for physical state | varchar |
filing_admin | Assigned filing administrator | varchar |
migrated | Data migration indicator flag | tinyint(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 Title | Field Description | Field Type |
---|---|---|
id | Unique tracking ID for imported transactions (duplicates excluded) | varchar (255) |
policy_number | Non-unique policy identifier with state-specific length limits | varchar (50) |
policy_effective_date | Policy start date using API date logic | date/datetime |
policy_expiration_date | Policy end date following API date formatting rules | date/datetime |
transaction_effective_date | Transaction execution date (yyyy-mm-dd format) | date |
expiring_policy_number | Previous policy ID for renewals only | varchar (50) |
invoice_date | State-specific invoicing date (GA=Revenue Date, HI=Issued Date) | date |
invoice_number | Internal tracking ID from agent interface | varchar |
transaction_type | API-defined transaction category | varchar (50) |
policy_type | Policy classification (standard/master/cert/reporting_form) | string |
account_written_as | Brokerage account type with agency defaults | varchar (50) |
rpg | Risk Purchasing Group indicator (1=Yes, 0=No) | tinyint (1) |
layered_risk | Layered risk coverage flag | tinyint (1) |
broker_of_record | Broker change indicator | tinyint (1) |
risk_retention_group | Risk retention status | tinyint (1) |
purchasing_group_name | Required when RPG=1 | varchar (255) |
risk_description | State-specific risk codes (NY/OH/PA have special requirements) | varchar (255) |
ecp | Exempt Commercial Purchaser status | tinyint (1) |
exempt | Tax exemption status (Utah-required) | tinyint (1) |
multi_state | Multi-state liability indicator (primarily for Utah) | tinyint (1) |
policy_limit | Aggregate policy liability amount (required in 12+ states) | integer (12) |
property_limit | Property coverage limit (state-dependent requirement) | integer (12) |
transaction_line_of_business transaction_line_of_business_list | Coverage code(s) using | separator for multiple values | integer (11) or string |
transaction_line_of_business_coverage | Premium breakdown percentages for multiple LOBs | string |
non_admitted_insurer_code non_admitted_insurer_code_list | Carrier NAIC codes (Lloyd's: AA-1122000) | separated | varchar (255) or string |
non_admitted_insurer_code_coverage | Percentage allocations for multiple insurers | string |
syndicate_list | Lloyd's syndicate codes (pipe-separated) | string |
syndicate_list_coverage | Syndicate percentage allocations (e.g., "60|40") | string |
premium | Base policy premium (defaults to 0 if empty) | decimal (12, 2) |
agency_fee | Brokerage/agency service fee | decimal (12, 2) |
inspection_fee | Underwriting audit/inspection charge | decimal (12, 2) |
collection_fee | Payment processing fee | decimal (12, 2) |
sl_tax | State-specific surplus lines tax | decimal (12, 2) |
stamping_fee | State filing fee (e.g., FL FSLO fee) | decimal (12, 2) |
sl_service_charge | OR/MS-specific service charge | decimal (12, 2) |
municipal_fee | KY-specific municipal fee | decimal (12, 2) |
fm_tax | IL Fire Marshal Tax (LOB-based) | decimal (12, 2) |
empa_tax | FL EMPA tax | decimal (12, 2) |
total | Auto-calculated sum of premium + fees | decimal (12, 2) |
commission_received | NH commission status flag | tinyint (1) |
mailing_insured_name | Policy document name | varchar (100) |
mailing_address | Primary mailing address | varchar (255) |
mailing_address2 | Secondary mailing address | varchar (255) |
mailing_city | Mailing city | varchar (100) |
mailing_zip_code | Mailing ZIP code | varchar (20) |
mailing_state_code | 2-letter state code | varchar (20) |
insured_entity | Entity type (individual/commercial/governmental/etc) | varchar (100) |
insured_email | Contact email | varchar (100) |
insured_phone | Contact phone | varchar (100) |
insured_county | Mailing county | varchar (100) |
physical_same_as_mailing | Address equivalence flag | tinyint (1) |
physical_address | Primary physical address | varchar (255) |
physical_address2 | Secondary physical address | varchar (255) |
physical_city | Physical city | varchar (100) |
physical_zip_code | Physical ZIP code | varchar (20) |
physical_state_code | 2-letter state code | varchar (20) |
agent_id | Agency/agent identifier | integer |
agent_notes | Internal policy notes | varchar |
transaction_documents | Document upload section (API submission or manual upload) | object |
└ code | Document type code from tax rules API | varchar |
└ url | Secure document URL with temporary access token | varchar (255) |
└ id | Optional tracking ID for imported documents | integer (11) |
Service of Process (Alabama-required) | ||
sop_name | Legal entity name for service of suit | varchar (100) |
sop_address | Primary legal address | varchar (255) |
sop_address_2 | Secondary legal address | varchar (255) |
sop_city | Legal jurisdiction city | varchar (100) |
sop_state | 2-letter state code for legal jurisdiction | varchar (20) |
sop_zip | Legal address ZIP code | varchar (20) |
Declining Carrier Information | ||
dc_naic | Declined carriers' NAIC codes (pipe-separated) | varchar (255) |
dc_date_declined | Declination dates matching NAIC codes | date (yyyy-mm-dd) |
dc_declining_reason | State-specific rejection reasons (pipe-separated) | varchar (255) |
dc_underwriting_consideration | NY-specific underwriting factors (pipe-separated) | varchar (255) |
dc_representative_name | Declining carrier contact names (pipe-separated) | varchar (255) |
dc_representative_title | NY-specific roles (Company Employee/Agent/Other) | varchar (255) |
dc_representative_email | Contact emails matching NAIC order | varchar (255) |
dc_representative_phone_number | Phone numbers for declined carriers | varchar (255) |
dc_representative_website | Official carrier websites | varchar (255) |
dc_who_received_the_declinations | Recipient from admin-defined options | varchar(255)/integer |
dc_other_person_in_office | Explanation for custom recipients | varchar (255) |
dc_who_performed_diligent_search | 1=Surplus Broker, 2=Retail Producer | tinyint (1) |
Document Subfields | ||
└ code | Tax rule API document identifier | varchar |
└ url | Temporary authenticated document URL | varchar (255) |
└ id | Optional import tracking ID | integer (11) |
retail_producer_name | Retail Producer Name | varchar (255) |
retail_agency_name | Retail Agency Name | varchar (255) |
retail_address | Retail Producer’s Address Line 1 | varchar (255) |
retail_address2 | Retail Producer’s Address Line 2 | varchar (255) |
retail_city | Retail Producer City Location | varchar (255) |
retail_state | Retail Producer State Location | varchar (2) |
retail_zip | Retail Producer Zip Code Location | varchar (255) |
retail_producer_license | Depends on state retail producer settings | varchar (255) |
retail_agency_license | Depends on state retail producer settings | varchar (255) |
retail_phone_number | Depends on state retail producer settings | varchar (255) |
retail_email_address | Depends on state retail producer settings | varchar (255) |
wind_storm_exclusion | Windstorm Exclusion Flag | tinyint (1) |
wind_storm_eligible_for_pool | Windstorm Pool Exclusion Flag | tinyint (1) |
wind_storm_deduction | Windstorm/Hurricane Deductible | decimal (12, 2) |
wind_storm_primary_amount | Windstorm Primary Amount (Coverage A) | decimal (12, 2) |
wind_storm_other_coverages_deductible | All Other Perils Deductible | decimal (12, 2) |
lloyds_cover_holder_number | According to LLoyd's Cover Holder definition | varchar (255) |
lloyds_cover_holder_name | According to LLoyd's Cover Holder definition | varchar (255) |
migrated | internal use only | tinyint (1) |
associated_producer | License Number of Associated Producer | varchar (255) |
anniversary_billing | Anniversary Billing | tinyint (1) |
stamping_fee_invoice_id | "Stamping Fee Invoice Id" field on the Tracking tab | varchar |
sl_tax_invoice_id | "SL Tax Invoice ID" field on the Tracking tab | varchar |
business_group_id | Divisions/regions tracking ID | varchar |
customer_code | Customer classification code | varchar |
transaction_status | Status (ignored for UT/ID) | integer |
license_number | License with default fallback | varchar |
filing_admin | Admin name with default logic | varchar |
date_filed | Auto-files transaction when set | date (yyyy-mm-dd) |
umr_number | UMR identifier | varchar |
sla_transaction_number | Format: XXXXX-XX-XXXXX | varchar |
unique_id | Unique identifier | varchar |
stamping_fee_date_paid | Stamping fee payment date | date (yyyy-mm-dd) |
sl_tax_paid_date | SL tax payment date | date (yyyy-mm-dd) |
other_taxes_paid_date | Other taxes payment date | date (yyyy-mm-dd) |
Fields for Data Migration | ||
stamping_fee_invoice_id | State stamping fee invoice number reference | varchar |
stamping_fee_date_paid | Date stamping fee was paid to state | date (yyyy-mm-dd) |
sl_tax_invoice_id | Surplus lines tax invoice number reference | varchar |
sl_tax_paid_date | Date surplus lines tax was paid to state | date (yyyy-mm-dd) |
other_taxes_paid_date | Payment date for other state taxes/fees | date (yyyy-mm-dd) |
unique_id | State-specific ID codes (MO Risk Number, NY Affidavit #, etc) | varchar (50) |
transaction_status | 1=Saved, 2=Submitted, 3=Flagged, 4=Filed, etc | integer (2) |
date_filed | State filing completion date | date (yyyy-mm-dd) |
license_number | Valid license number for physical state | varchar |
filing_admin | Assigned filing administrator | varchar |
migrated | Data migration indicator flag | tinyint(1) |
Broker Fees vs Carrier Fees
InsCipher separates fees into two buckets as these fees are taxed and reported differently depending on the state.
-
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.
-
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.
Updated about 2 months ago