Tax Calculations
Get instant surplus lines tax calculations and state-specific documents using JSON request.
Pull real-time surplus lines tax rates
Instant, current and accurate Surplus Lines tax rate retrieval.
Reporting Form generation
Streamline form generation and data transformation.
Compliance and Error Reduction
Mitigate compliance risks and ensure precise tax reporting.
Seamless Data Integration
Straightforward quote-to-bind data integration for efficient policy workflow.
Introduction
The Tax Calculator API enables real-time calculation of surplus lines tax rates and fees across all 50 states (plus DC, Puerto Rico, Guam, and the Virgin Islands) as well as admitted rates in the state of Kentucky through a single POST endpoint.
Submit policy details via JSON to
/api/tax-calculator/calculate-general-taxes
and receive comprehensive tax calculations, including state-specific requirements, stamping fees, and municipal taxes. The API supports both single and multiple lines of business calculations, making it ideal for integrating accurate surplus lines tax compliance into your insurance management system.
Necessary datasheets to reference
InsCipher utilizes certain 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:
Generic Lines of Business List
Document Requirements: Tax Calc API
Identify Line of Business model
Single Line of Business Tax Calculation
When your policy covers just one type of risk, use the single line of business method. This requires:
- One line of business code (e.g., "GEN-1001")
- Total premium amount for that line
- All required location and policy information
Multiple Lines of Business Tax Calculation
For policies covering multiple types of risks, use the multiple lines method. Key differences:
- Uses pipe-separated (|) values for multiple lines
- Requires matching premium amounts for each line
- Total premium must equal sum of all coverage amounts
Formulating your API calls
Before integrating with InsCipher's Tax Calculator API, click into the section specific to your Lines of Business method below and review the required fields carefully as they vary based on this calculation type and state-specific requirements, with some fields being mandatory (✓) while others depend on factors like location or transaction type.
For both non-admitted and admitted rates for the state of Kentucky, utilize the following URL (HTTP POST): https://surpluslines.inscipher.com/api/v2/tax-calculator/calculate-general-taxes
In the sections below, you'll find specific information related to required and supplemental data necessary to retrieve accurate tax rate information from InsCipher, along with JSON request and response examples.
Request / Response Examples
The following are example requests and responses to give the most complete view of how the API works and what fields are generally apart of the payload bodies. Please note that dependent upon the state, certain fields may be required for accurate tax rates where others may be omitted. Please read the Request Field Detail - Table below as well as utilizing the datasheet links at the top of this page to understand which fields apply explicitly for each state.
All US States / covered territories (not including Kentucky): Non-Admitted Rates
{
"physical_state": "CA",
"line_of_business": "GEN-1001",
"rpg": 0,
"transaction_type": "PN",
"premium": 7000.32,
"agency_fee": 600,
"inspection_fee": 400,
"tax_exempt": 0,
"policy_effective_date": "2019-04-01",
"transaction_effective_date": "2019-05-01",
"ecp": 1,
"account_written_as": "DC",
"commission_received": 0,
"mailing_entity_type": "",
"mailing_insured_email": "",
"mailing_insured_phone": null,
"layered_risk": 0,
"risk_retention_group": 0,
"broker_of_record_change": 0
}
{
"line_of_business_id": 43436,
"fm_tax_percentage": null,
"line_of_business_list": [
{
"generic_code": "GEN-1001",
"code": "7000",
"fm_tax_title": null,
"empa_tax_title": null
}
],
"state_properties": {
"state_stamp_wording_text": null,
"state_stamp_wording_instructions": null,
"state_stamp_wording_font_size": null,
"state_stamp_wording_font_bold": null,
"state_stamp_wording_font_italics": null,
"state_stamp_wording_font_color": null,
"state_stamp_wording_type": null,
"state_stamp_wording_updated_at": null
},
"mailing_state_properties": null,
"account_written_as": "DC",
"line_of_business": "GEN-1001",
"transaction_type": "PN",
"premium": 7000.32,
"agency_fee": 600,
"inspection_fee": 400,
"sl_tax": 222.01,
"stamping_fee": 14.8,
"sl_service_charge": 0,
"municipal_fee": null,
"county_fee": null,
"fm_tax": 0,
"empa_tax": 0,
"rpg": 0,
"tax_rule": {
"is_sl_tax_active": true,
"sl_tax_amount_type": 1,
"sl_tax_amount": 3,
"is_sl_tax_input_manual": false,
"is_stamping_fee_active": true,
"stamping_fee_amount_type": 1,
"stamping_fee_amount": 0.2,
"is_stamping_fee_input_manual": false,
"exclude_stamping_fee_when_negative_premium": false,
"is_sl_service_charge_active": false,
"sl_service_charge_amount_type": 1,
"sl_service_charge_amount": 0,
"is_sl_service_charge_input_manual": false,
"is_municipal_fee_active": false,
"municipal_fee_amount_type": 1,
"municipal_fee_amount": 0,
"is_municipal_fee_input_manual": false,
"fee_restrictions": false,
"fee_restriction_amount_fixed_active": false,
"fee_restriction_amount_fixed": null,
"fee_restriction_amount_percentage_active": false,
"fee_restriction_amount_percentage": null,
"max_fee": false,
"max_fee_amount_type": 1,
"max_fee_amount": null,
"fee_restriction_apply_to": [
0
],
"fee_restriction_apply_from": [
0
],
"both_fees_allowed": true,
"ask_if_commission_received": false,
"zero_agency_fee_if_commission_received": false,
"round_up_taxes_to_the_nearest_dollar": false,
"round_up_premium_to_the_nearest_dollar": false,
"sl_tax_title": "Surplus Lines Tax",
"sl_service_charge_title": null,
"stamping_fee_title": "Stamping Fee",
"municipal_fee_title": null,
"state_notes": [
{
"note_type_data": {
"id": 10,
"label": "Document Notes"
},
"notification_type_data": {
"id": 1,
"label": "Info"
},
"note_type": 10,
"note": "<p>Signed/Completed D-1 disclosure must be signed before bind of new & policy.</p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": null,
"italic": null
},
{
"note_type_data": {
"id": 10,
"label": "Document Notes"
},
"notification_type_data": {
"id": 1,
"label": "Info"
},
"note_type": 10,
"note": "<p>All premium bearing policy documents (declarations page, endorsements, etc.) must have the transaction's premium, all fees, and taxes individually broken out.</p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": false,
"italic": false
},
{
"note_type_data": {
"id": 8,
"label": "Premium and Fees"
},
"notification_type_data": {
"id": 3,
"label": "Warning"
},
"note_type": 8,
"note": "<p>Carrier fees are taxable in CA. Broker fees negotiated between the broker and insured are generally not considered taxable. There may be instances in which a broker fee is considered taxable. Please refer to Bulletins #628, #806 and #997 for further information, or contact the state of CA directly for specific direction. If you determine through your research that a broker fee is taxable, you will need to enter this fee in the Carrier Fee field in order for the Tax Calculator to apply the tax.<br/><a target=\"_blank\" href=\"https://www.slacal.com/docs/default-source/bulletins/997.pdf?sfvrsn=2\">Click here to learn more.</a></p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": null,
"italic": null
},
{
"note_type_data": {
"id": 7,
"label": "Other Policy Information"
},
"notification_type_data": {
"id": 1,
"label": "Info"
},
"note_type": 7,
"note": "<p>Filings are not required if the policy is considered tax-exempt.</p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": null,
"italic": null
},
{
"note_type_data": {
"id": 7,
"label": "Other Policy Information"
},
"notification_type_data": {
"id": 1,
"label": "Info"
},
"note_type": 7,
"note": "<p>Tax Exempt status varies by state. To help determine whether or not a policy qualifies as Tax Exempt, please review the article found here: <br/><a target=\"_blank\" href=\"https://support.inscipher.com/knowledge/tax-exempt-status-by-state\">Click here to learn more.</a></p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": null,
"italic": null
},
{
"note_type_data": {
"id": 5,
"label": "Policy Detail"
},
"notification_type_data": {
"id": 3,
"label": "Warning"
},
"note_type": 5,
"note": "<p>If your Extension Endorsement extends the policy period more than 90 days in the aggregate (=91 days and on), please enter into the portal as a Renewal transaction type as an SL-1 and SL-2 (if applicable) is required. Please submit the Extension Endorsement document in place of the Policy document. A new SL-1 and SL-2 (if applicable) is required anytime an extension extends the policy past 90 days from the expiration date when the last SL-1 and SL-2 were provided.<br />\n<br />\nIf your Extension Endorsement extends the policy period less than 90 days in the aggregate (= 90 days and less), please enter into the portal as an Extension Endorsement transaction type.</p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": false,
"italic": false
},
{
"note_type_data": {
"id": 5,
"label": "Policy Detail"
},
"notification_type_data": {
"id": 3,
"label": "Warning"
},
"note_type": 5,
"note": "<p>If you have an endorsement on an open ended policy, please enter the filing into the portal as an extension endorsement filing type to calculate the stamping fee correctly. Please add a note \"This is not an extension endorsement, rather an endorsement on an open ended policy and will need to be manually filed in CA\".</p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": false,
"italic": false
}
],
"state_documents": [
{
"upload_required": false,
"name": "D-1 Disclosure",
"code": "D1DISC",
"document_note": "To be signed by the insured prior to binding the policy. To be kept on file for new policies only.",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": "https://surpluslines.inscipher.com/doc/link/43e7f1988fab83a8d110a8b4596f360f/260552",
"last_edited_at": "2024-11-15",
"date_active_from": null,
"date_active_to": null,
"document_group": "Affidavit or Acknowledgement",
"rpg": 2,
"ecp": 2,
"exempt": 2,
"export_list": 2,
"required_for_filing": true,
"required_for_binding": true,
"include_with_policy": true,
"include_in_diligent_effort": false,
"keep_on_hand": false,
"signature_requirements": "Insured"
},
{
"upload_required": false,
"name": "Diligent Search Report (SL-2 Form, Pre-2024)",
"code": "SL2",
"document_note": "For policies before 2024, you can upload your original SL-2 document using the old form, as this is preferred by SLACAL. If not uploaded, you should have this document on hand, and InsCipher will complete the filing using the new SL-2 programmatically. SLACAL may ask for the original SL-2 in this scenario.\r\n*California will no longer accept this document past 01/01/26.",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": null,
"last_edited_at": "2025-01-24",
"date_active_from": null,
"date_active_to": "2023-12-31",
"document_group": "Diligent Effort Documents",
"rpg": 2,
"ecp": 0,
"exempt": 2,
"export_list": 0,
"required_for_filing": true,
"required_for_binding": true,
"include_with_policy": false,
"include_in_diligent_effort": false,
"keep_on_hand": false,
"signature_requirements": "Producing Agent"
},
{
"upload_required": false,
"name": "Coverage Codes",
"code": "COVEC",
"document_note": "CA Coverage Code info to be used on SL-2 form.",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": "https://surpluslines.inscipher.com/doc/link/66adf736b9036b1f95c5a6762e90a406/2679765",
"last_edited_at": "2024-11-15",
"date_active_from": null,
"date_active_to": null,
"document_group": "Miscellaneous",
"rpg": 2,
"ecp": 2,
"exempt": 2,
"export_list": 2,
"required_for_filing": false,
"required_for_binding": false,
"include_with_policy": false,
"include_in_diligent_effort": false,
"keep_on_hand": false,
"signature_requirements": "None"
},
{
"upload_required": true,
"name": "Policy",
"code": "POLIC",
"document_note": "Attach full policy including D-2 Notice in PDF Format.",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": null,
"last_edited_at": "2025-02-10",
"date_active_from": null,
"date_active_to": null,
"document_group": "Policy Documents",
"rpg": 2,
"ecp": 2,
"exempt": 2,
"export_list": 2,
"required_for_filing": true,
"required_for_binding": false,
"include_with_policy": false,
"include_in_diligent_effort": false,
"keep_on_hand": false,
"signature_requirements": "None"
},
{
"upload_required": false,
"name": "D-2 Notice",
"code": "D2NOT",
"document_note": "To be attached to all policies, prior to policy being issued to insured.",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": "https://surpluslines.inscipher.com/doc/link/d5f724e60889e77a20e6b210ff50cb08/260551",
"last_edited_at": "2024-11-15",
"date_active_from": null,
"date_active_to": null,
"document_group": "State Stamp Templates",
"rpg": 2,
"ecp": 2,
"exempt": 2,
"export_list": 2,
"required_for_filing": true,
"required_for_binding": false,
"include_with_policy": true,
"include_in_diligent_effort": false,
"keep_on_hand": false,
"signature_requirements": "None"
},
{
"upload_required": false,
"name": "Confidential Report of Surplus Line Placement (SL-1 Form)",
"code": "SL1",
"document_note": "To be completed by Surplus Lines Broker filing policy.",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": "https://surpluslines.inscipher.com/doc/link/023ab511a98e56745c2424897d8d417d/9305",
"last_edited_at": "2025-05-30",
"date_active_from": null,
"date_active_to": null,
"document_group": "Affidavit or Acknowledgement",
"rpg": 2,
"ecp": 2,
"exempt": 2,
"export_list": 2,
"required_for_filing": true,
"required_for_binding": true,
"include_with_policy": false,
"include_in_diligent_effort": false,
"keep_on_hand": false,
"signature_requirements": "Broker"
},
{
"upload_required": false,
"name": "Diligent Search Report (SL-2 Form, 2024 Version)",
"code": "SL2",
"document_note": "For policies before 2024, you can upload your original SL-2 document using the old form, as this is preferred by SLACAL. If not uploaded, you should have this document on hand, and InsCipher will complete the filing using the new SL-2 programmatically. SLACAL may ask for the original SL-2 in this scenario.\r\n*California will no longer accept older versions of this document effective 01/01/26.",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": null,
"last_edited_at": "2025-07-24",
"date_active_from": "2024-01-01",
"date_active_to": null,
"document_group": "Diligent Effort Documents",
"rpg": 2,
"ecp": 0,
"exempt": 2,
"export_list": 0,
"required_for_filing": true,
"required_for_binding": true,
"include_with_policy": false,
"include_in_diligent_effort": false,
"keep_on_hand": false,
"signature_requirements": "Producing Agent"
},
{
"upload_required": false,
"name": "SL-2 (2024) Instructions",
"code": "SL-2INST",
"document_note": "Instructions on how to complete the new SL-2 Form, available 1/1/2024",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": null,
"last_edited_at": "2024-11-15",
"date_active_from": "2024-01-01",
"date_active_to": null,
"document_group": "Miscellaneous",
"rpg": 2,
"ecp": 0,
"exempt": 2,
"export_list": 0,
"required_for_filing": false,
"required_for_binding": false,
"include_with_policy": false,
"include_in_diligent_effort": false,
"keep_on_hand": false,
"signature_requirements": "None"
},
{
"upload_required": false,
"name": "Diligent Search Report (SL-2 Form) Addendum",
"code": "SL2-ADD",
"document_note": "**As of 01/01/24 if the new SL-2 is completed, this addendum is now required for policies of Private Auto Liability or Health Insurance Coverages. This is to be completed by the producing Broker.",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": null,
"last_edited_at": "2024-11-15",
"date_active_from": "2024-01-01",
"date_active_to": null,
"document_group": "Diligent Effort Documents",
"rpg": 2,
"ecp": 0,
"exempt": 2,
"export_list": 0,
"required_for_filing": true,
"required_for_binding": true,
"include_with_policy": false,
"include_in_diligent_effort": true,
"keep_on_hand": false,
"signature_requirements": "None"
},
{
"upload_required": false,
"name": "CA Commercial Insured/Exempt Commercial Purchaser checklist",
"code": "MISC",
"document_note": null,
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
},
{
"name": "Binder",
"short_code": "BD"
}
],
"document_download_link": "https://surpluslines.inscipher.com/doc/link/df398e5a376a9d84b4b02d55851e2b83/5743389",
"last_edited_at": null,
"date_active_from": "2025-01-01",
"date_active_to": null,
"document_group": "Miscellaneous",
"rpg": 2,
"ecp": 1,
"exempt": 1,
"export_list": 2,
"required_for_filing": false,
"required_for_binding": false,
"include_with_policy": false,
"include_in_diligent_effort": false,
"keep_on_hand": true,
"signature_requirements": "None"
}
],
"round_up_fees_to_the_nearest_dollar": false,
"round_taxes_to_the_nearest_dollar": false,
"round_premium_to_the_nearest_dollar": false,
"round_fees_to_the_nearest_dollar": false
},
"commission_received": false,
"tax_exempt": 0,
"export_list": 0,
"municipal_tax_settings": null,
"county_tax_settings": null,
"collection_fee": 0,
"continuous_coverage": 0,
"physical_address": null,
"physical_city": null,
"physical_zip_code": null,
"physical_state": "CA"
}
State of Kentucky: Non-Admitted Rates
{
"physical_state": "KY",
"line_of_business": "GEN-1001",
"rpg": 0,
"transaction_type": "PN",
"premium": 1000.55,
"agency_fee": 100,
"inspection_fee": 200,
"tax_exempt": 0,
"policy_effective_date": "2019-04-01",
"transaction_effective_date": "2019-05-01",
"ecp": 1,
"account_written_as": "DC",
"physical_address": "450 E New Circle Rd",
"physical_zip_code": "40509",
"physical_city": "Lexington",
"commission_received": 0,
"mailing_entity_type": "",
"mailing_insured_email": "",
"mailing_insured_phone": null,
"layered_risk": 0,
"risk_retention_group": 0,
"broker_of_record_change": 0
}
{
"line_of_business_id": null,
"fm_tax_percentage": null,
"line_of_business_list": [
{
"generic_code": "GEN-1092",
"code": "1022",
"fm_tax_title": null,
"empa_tax_title": null
},
{
"generic_code": "GEN-1093",
"code": "1020",
"fm_tax_title": null,
"empa_tax_title": null
}
],
"state_properties": {
"state_stamp_wording_text": "<p>"This insurance has been placed with an insurer not licensed to transact business in the Commonwealth of Kentucky but eligible as a surplus lines insurer. The insurer is not a member of the Kentucky Insurance Guaranty Association. Should the insurer become insolvent, the protection and benefits of the Kentucky Insurance Guaranty Association are not available."</p>",
"state_stamp_wording_instructions": "Every insurance contract procured and delivered as a surplus lines coverage shall have conspicuously stamped on the face page of the policy, initialed by or bearing the name of the surplus lines broker who procured it.",
"state_stamp_wording_font_size": 12,
"state_stamp_wording_font_bold": 0,
"state_stamp_wording_font_italics": 0,
"state_stamp_wording_font_color": "black",
"state_stamp_wording_type": "wording",
"state_stamp_wording_updated_at": "2024-04-01 00:04:00"
},
"mailing_state_properties": null,
"account_written_as": "B",
"line_of_business": "GEN-1001",
"transaction_type": "PN",
"premium": 401.98,
"agency_fee": 0,
"inspection_fee": 200,
"sl_tax": 18.06,
"stamping_fee": 10.84,
"sl_service_charge": 0,
"municipal_fee": 30.1,
"county_fee": null,
"fm_tax": 0,
"empa_tax": 0,
"rpg": 0,
"tax_rule": {
"is_sl_tax_active": true,
"sl_tax_amount_type": 1,
"sl_tax_amount": 3,
"is_sl_tax_input_manual": false,
"is_stamping_fee_active": true,
"stamping_fee_amount_type": 1,
"stamping_fee_amount": 1.8,
"is_stamping_fee_input_manual": false,
"exclude_stamping_fee_when_negative_premium": false,
"is_sl_service_charge_active": false,
"sl_service_charge_amount_type": 1,
"sl_service_charge_amount": 0,
"is_sl_service_charge_input_manual": false,
"is_municipal_fee_active": true,
"municipal_fee_amount_type": 2,
"municipal_fee_amount": 0,
"is_municipal_fee_input_manual": false,
"fee_restrictions": true,
"fee_restriction_amount_fixed_active": false,
"fee_restriction_amount_fixed": null,
"fee_restriction_amount_percentage_active": false,
"fee_restriction_amount_percentage": null,
"max_fee": false,
"max_fee_amount_type": 1,
"max_fee_amount": null,
"fee_restriction_apply_to": [
4
],
"fee_restriction_apply_from": [
1,
2,
3
],
"both_fees_allowed": true,
"ask_if_commission_received": false,
"zero_agency_fee_if_commission_received": false,
"round_up_taxes_to_the_nearest_dollar": false,
"round_up_premium_to_the_nearest_dollar": false,
"sl_tax_title": "Surplus Lines Tax",
"sl_service_charge_title": null,
"stamping_fee_title": "Surcharge",
"municipal_fee_title": "Municipal Tax",
"state_notes": [
{
"note_type_data": {
"id": 10,
"label": "Document Notes"
},
"notification_type_data": {
"id": 1,
"label": "Info"
},
"note_type": 10,
"note": "<p>All premium bearing policy documents (declarations page, endorsements, etc.) must have the transaction's premium, all fees, and taxes individually broken out.</p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": null,
"italic": null
},
{
"note_type_data": {
"id": 10,
"label": "Document Notes"
},
"notification_type_data": {
"id": 1,
"label": "Info"
},
"note_type": 10,
"note": "<p>Signed/Completed disclosure must be attached to policy before issuance.</p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": null,
"italic": null
},
{
"note_type_data": {
"id": 7,
"label": "Other Policy Information"
},
"notification_type_data": {
"id": 1,
"label": "Info"
},
"note_type": 7,
"note": "<p>Tax Exempt status varies by state. To help determine whether or not a policy qualifies as Tax Exempt:<br />\n<a href=\"https://support.inscipher.com/knowledge/tax-exempt-status-by-state\" target=\"_blank\">Click here to learn more.</a></p>\n\n<p>For non-profit organizations where the KY surcharge is waived, mark "Yes" for Tax Exempt, otherwise, leave as "No".</p>\n\n<p>The Municipal Tax, also known as the Local Government Premium Tax (LGPT), will be calculated after the insured address is added on Step 2 of the tax calculator. Then select the "Check Municipality" button, doing so will return the municipality name and also the associated Municipal Tax. The InsCipher Calculator helps you determine the municipality name by using ArcGIS & KY Geonet Maps. It is still the user's responsibility to ensure that the municipality is correct which can be manually adjusted.</p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": false,
"italic": false
},
{
"note_type_data": {
"id": 8,
"label": "Premium and Fees"
},
"notification_type_data": {
"id": 3,
"label": "Warning"
},
"note_type": 8,
"note": "<p>Pursuant to KRS 91A.080(4) and 806 KAR 2:150, a reasonable collection fee may be charged and retained by the insurance company or its agent. The collection fee shall not be more than fifteen percent (15%) of the LGPT collected and remitted to the local government, or two percent (2%) of the taxable premium, whichever is less. This fee is in addition to the LGPT payable.<br/><br/>Note: InsCipher does not have Fee Restrictions in place at this time for the collection fee. Please make sure your collection fee abides by the above statute.<br/><a target=\"_blank\" href=\"https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=43399\">K.R.S 91A.08(4)\">Click here to learn more.</a></p>",
"instructions": null,
"font_size": null,
"color": null,
"bold": null,
"italic": null
},
{
"note_type_data": {
"id": 3,
"label": "State Stamp Wording"
},
"notification_type_data": {
"id": 1,
"label": "Info"
},
"note_type": 3,
"note": "<p>"This insurance has been placed with an insurer not licensed to transact business in the Commonwealth of Kentucky but eligible as a surplus lines insurer. The insurer is not a member of the Kentucky Insurance Guaranty Association. Should the insurer become insolvent, the protection and benefits of the Kentucky Insurance Guaranty Association are not available."</p>",
"instructions": "Every insurance contract procured and delivered as a surplus lines coverage shall have conspicuously stamped on the face page of the policy, initialed by or bearing the name of the surplus lines broker who procured it.",
"font_size": 12,
"color": "black",
"bold": false,
"italic": false
}
],
"state_documents": [
{
"upload_required": true,
"name": "Policy or Binder/Dec page",
"code": "POLIC",
"document_note": null,
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
}
],
"document_download_link": null,
"last_edited_at": "2025-05-30",
"date_active_from": null,
"date_active_to": null,
"document_group": "Policy Documents",
"rpg": 2,
"ecp": 2,
"exempt": 2,
"export_list": 2,
"required_for_filing": false,
"required_for_binding": false,
"include_with_policy": false,
"include_in_diligent_effort": false,
"keep_on_hand": true,
"signature_requirements": "None"
},
{
"upload_required": false,
"name": "Diligent Search Form",
"code": "DSF",
"document_note": "To be filled out by producing agent confirming diligent effort - To be kept on File",
"transaction_types": [
{
"name": "New Policy",
"short_code": "PN"
},
{
"name": "Renewal Policy",
"short_code": "PR"
},
{
"name": "Extension Endorsement",
"short_code": "XE"
}
],
"document_download_link": null,
"last_edited_at": "2025-03-04",
"date_active_from": null,
"date_active_to": null,
"document_group": "Diligent Effort Documents",
"rpg": 2,
"ecp": 0,
"exempt": 2,
"export_list": 2,
"required_for_filing": false,
"required_for_binding": true,
"include_with_policy": false,
"include_in_diligent_effort": false,
"keep_on_hand": true,
"signature_requirements": "Producing Agent"
}
],
"round_up_fees_to_the_nearest_dollar": false,
"round_taxes_to_the_nearest_dollar": false,
"round_premium_to_the_nearest_dollar": false,
"round_fees_to_the_nearest_dollar": false
},
"commission_received": false,
"tax_exempt": 0,
"export_list": 0,
"municipal_tax_settings": [
{
"municipal_tax_setting": {
"municipality_name": "Lexington-Fayette",
"line_category": "casualty_liability_only"
}
}
],
"county_tax_settings": null,
"collection_fee": 0,
"continuous_coverage": 0,
"physical_address": "450 E New Circle Rd",
"physical_city": "Lexington",
"physical_zip_code": "40509",
"physical_state": "KY"
}
State of Kentucky: Admitted rates
{
"admitted": 1,
"physical_state" : "KY",
"physical_address": "1110 Sparks Rd",
"physical_city" : "Lexington",
"physical_zip_code": "40505",
"line_of_business" : "1014",
"policy_effective_date" : "2025-01-01",
"transaction_type" : "PN",
"premium" : 1000.55,
"agency_fee" : 100,
"inspection_fee" : 200,
"rpg": 0,
"tax_exempt": 0,
"policy_effective_date": "2025-08-19",
"transaction_effective_date": "2025-08-19",
"ecp": 1,
"account_written_as": "DC",
"commission_received": 0,
"mailing_entity_type": "",
"mailing_insured_phone": null,
"layered_risk": 0,
"risk_retention_group": 0,
"broker_of_record_change": 0
}
{
"state": "KY",
"admitted": 1,
"policy_effective_date": "2025-08-19",
"premium": 1000.55,
"inspection_fee": 200,
"agency_fee": 100,
"premium_tax": 26.01,
"premium_tax_life": 19.51,
"municipal_fee": 65.03,
"municipal_tax_settings": {
"municipality_name": "Lexington-Fayette",
"line_category": "fire_and_allied_perils"
},
"county_fee": 0,
"county_tax_settings": {
"county_name": "*No County Found",
"line_category": null
},
"stamping_fee": 23.41
}
Request Field Data - Table
The following data consists of fields that comprise all 3 scenarios above. Please check the field details to understand for which use case it applies. Unless otherwise noted, fields with no special callout are for non-admitted rates for all US states.
NOTE: The fields that show Required Y/N
= YES
. These are mandatory for a successful request.
Field Name | Description | Field Type, Required Y/N |
---|---|---|
| Admitted taxes? 0 (or omitted) - No, 1 - (non-admitted or E&S) - Yes If | String, YES if requesting admitted rates (KY) |
| Physical state 2-letter code where the risk is located (e.g., KY). | String, YES |
OR
| For Single Line of Business requests: Use single generic line of business code (e.g., For Multiple Line of Business requests / package policies: Generic line of business codes or state specific codes in string form, as a pipe-separated list - ie, NOTE: For multiple LOB, this list is in 1:1 relation with the | String, YES |
| Risk Purchasing Group indicator: | Integer |
| Transaction type code (e.g., | String, YES |
OR
| Policy premium amount. For Single Line of Business requests: Utilize the For Multiple Line of Business requests / package policies: Input as the generic line of business premium breakdown in string form, pipe-separated list -ie NOTE: For multiple LOB, this list is in 1:1 relation with the | String, YES |
| Total of all non-carrier underwriting fees (e.g., broker or agency fees). | Number, YES |
| Fees from the carrier or underwriting process (e.g., inspections, protection lookup). | Number, YES |
| Tax Exempt indicator: | Integer |
| Policy effective date ( | String (Date), YES |
| Transaction effective date ( | String (Date) |
| Exempt Commercial Purchaser indicator: | Integer |
| Indicates whether the policy is written: | String |
| Only required for Kentucky. Street address of insured/risk location. No PO Boxes unless specifically allowed by the configuration. | String, YES in State of KY - both non-admitted & admitted rates |
| Only required for Kentucky. ZIP code of insured/risk location. | String, YES in State of KY - both non-admitted & admitted rates |
| Only required for Kentucky. City of insured/risk location. | String, Yes in State of KY - both non-admitted & admitted rates |
| Indicator if commission was received: | Integer |
| Entity type of insured: individual, commercial (default), governmental, federal, tribal, hospital_alliance, state_approved_tax_exempt. Only applies to SC, NC, TN & FL (future expansion possible). | String |
| Email address of the insured. | Integer |
| Phone number of the insured. | Integer |
| County of mailing address. | String |
| Indicator for layered risk: 0 = No, 1 = Yes. Defaults to 0. | Integer |
| Indicator for risk retention group. 0 = No, 1 = Yes. Defaults to 0. | Integer |
| Broker of record change: 0 = No, 1 = Yes. Defaults to 0. | Integer |
Response Field Data - Table
Field Name | Description | Field Type |
---|---|---|
| Unique identifier for the line of business. (Inferred) | Integer / Null |
| Fire Marshal tax percentage (if applicable). | Number / Null |
| Array of LOB objects: | Array of Objects |
├─ | Generic LOB code (InsCipher standard). | String |
├─ | State/filing-specific LOB code. | String |
├─ | Label for state specific or generic FM tax title (if any). | String / Null |
├─ | Label for EMPA tax title (if any). | String / Null |
| Object containing state-specific surplus lines requirements, including stamp wording, font rules, and rounding options. | Object |
├─ | Surplus lines disclosure wording required by the state. | String / Null |
├─ | Instructions for how wording must be applied to the policy. | String / Null |
├─ | Font size requirement for the state stamp wording. | Number / Null |
├─ | Bold formatting flag. | Boolean / Integer (0/1) / Null |
├─ | Italics formatting flag. | Boolean / Integer (0/1) / Null |
├─ | Font color for state stamp wording. | String / Null |
├─ | Type of wording (e.g., “wording”, “template”). | String / Null |
├─ | Timestamp of last update for wording rules. | String (Datetime) / Null |
| State-specific rules for mailing address (if different from risk state). (Inferred) | Object / Null |
| Brokerage = | String |
| General line of business import codes. State-specific codes available upon request. | String |
| Transaction type code (e.g., PN = New Policy, PR = Renewal). | String |
| Policy premium amount. | Number |
| Agency Fee: all non-carrier underwriting fees (Broker, Agency, etc.). | Number |
| Carrier/underwriting related fees (e.g., inspection). | Number |
| Surplus Lines tax amount. (Inferred) | Number |
| Stamping fee amount. (Inferred) | Number |
| Surplus Lines service charge fee amount. (Inferred) | Number |
| Local government premium tax (LGPT). Applicable to KY only. | Number / Null |
| County tax fee (if applicable). KY only. | Number / Null |
| Foreign Market tax. (Inferred) | Number |
| EMPA tax (Emergency Management Preparedness Act tax, state-specific). (Inferred) | Number |
| Risk Purchasing Group indicator: 0 = No, 1 = Yes. | Integer |
| Object describing all tax/fee rules and restrictions. | Object |
├─ | Whether Surplus Lines Tax is active. | Boolean |
├─ | Surplus Lines Tax type: 1 = Percentage, 2 = Fixed. | Integer |
├─ | Surplus Lines Tax rate or fixed amount. | Number |
├─ | Can SL tax be manually entered? | Boolean |
├─ | Whether stamping fee is active. | Boolean |
├─ | Stamping Fee type: 1 = Percentage, 2 = Fixed. | Integer |
├─ | Stamping Fee rate or fixed amount. | Number |
├─ | Can stamping fee be manually entered? | Boolean |
├─ | Exclude stamping fee if premium is negative. (Inferred) | Boolean |
├─ | Whether Service Charge is active. | Boolean |
├─ | Service Charge type: 1 = Percentage, 2 = Fixed. | Integer |
├─ | Service Charge rate or fixed amount. | Number |
├─ | Can Service Charge be manually entered? | Boolean |
├─ | Whether municipal fee is active. | Boolean |
├─ | Municipal Fee type: 1 = Percentage, 2 = Fixed. | Integer |
├─ | Municipal fee rate or fixed amount. | Number |
├─ | Can municipal fee be manually entered? | Boolean |
├─ | Are there fee restrictions? | Boolean |
├─ | Is a fixed fee restriction active? | Boolean |
├─ | Fixed fee restriction value (if active). | Number / Null |
├─ | Is a percentage fee restriction active? | Boolean |
├─ | Percentage restriction value (if active). | Number / Null |
├─ | Is there a max fee rule? | Boolean |
├─ | Max Fee Type: 1 = Percentage, 2 = Fixed. | Integer |
├─ | Max fee value (depending on type). | Number / Null |
├─ | Fee restriction applies to (array of fee codes). | Array of Integers |
├─ | Fee restriction applies from (array of fee codes). | Array of Integers |
├─ | Whether multiple fees are allowed. | Boolean |
├─ | Whether to ask if commission is received. | Boolean |
├─ | Force agency fee = 0 if commission is received. (Inferred) | Boolean |
├─ | Round up taxes to nearest dollar. | Boolean |
├─ | Round up premium to nearest dollar. | Boolean |
├─ | Surplus Lines Tax label (UI title). | String / Null |
├─ | Service Charge Fee label (UI title). | String / Null |
├─ | Stamping Fee label (UI title). | String / Null |
├─ | Municipal Fee label (UI title). | String / Null |
├─ | State-specific notes to assist in quoting/binding. | Array of Objects |
├─ | Object describing the note’s type. | Object |
├─ | ID of the note type. | Integer |
├─ | Label of the note type. | String |
├─ | Object describing notification severity. | Object |
├─ | ID of the notification type. | Integer |
├─ | Label of the notification type (e.g., Info, Warning). | String |
├─ | Numeric code of the note type. | Integer |
├─ | The note body (often HTML). | String |
├─ | Extra instructions (optional). | String / Null |
├─ | Suggested font size (optional). | Number / Null |
├─ | Suggested font color (optional). | String / Null |
├─ | Bold flag. | Boolean / Integer(0/1) / Null |
├─ | Italic flag. | Boolean / Integer(0/1) / Null |
├─ | State-required documents. Each entry defines name, code, notes, etc. | Array of Objects |
├─ | Document name. | String |
├─ | Document code. | String |
├─ | Document-specific notes. | String / Null |
├─ | One-time URL to download document. | String / Null |
├─ | Whether upload is required. | Boolean |
├─ | Array of applicable transaction types. | Array of Objects |
├─ | Transaction type name. | String |
├─ | Transaction type code. | String |
├─ | Last edited date. | String (Datetime) / Null |
├─ | Start date active. | String (Date) / Null |
├─ | End date active. | String (Date) / Null |
├─ | Document group/category. | String |
├─ | RPG applicability: 0 = No, 1 = Yes, 2 = Both. | Integer |
├─ | ECP applicability: 0 = No, 1 = Yes, 2 = Both. | Integer |
├─ | Tax Exempt applicability: 0 = No, 1 = Yes, 2 = Both. | Integer |
├─ | Export List applicability: 0 = No, 1 = Yes, 2 = Both. | Integer |
├─ | Whether required for filing. | Boolean |
├─ | Whether required for binding. | Boolean |
├─ | Should be included with policy. | Boolean |
├─ | Should be included in diligent effort docs. | Boolean |
├─ | Should be kept on file. | Boolean |
├─ | Who must sign (e.g., Insured, Broker, Agent). | String |
| Whether commission is received. (Inferred) | Boolean |
| Tax Exempt status: 0 = No, 1 = Yes. | Integer |
| Export list: 0 = No, 1 = Yes. | Integer |
| Collection of municipal tax settings (KY only). | Array of Objects / Null |
├─ | Wrapper for municipal tax setting. | Object |
├─ | Municipality name. | String |
├─ | Municipal level Line category (Fire, Casualty, Vehicle, etc.). (KY only). | String |
| County tax settings (KY only). | Array / Null |
├─ | Name of the county (KY only). | String |
├─ | County level Line category (Fire, Casualty, Vehicle, etc.). (KY only). | String. |
| Collection fee amount. | Number |
| Continuous coverage indicator. | Boolean / Integer (0/1) |
| Risk location address. | String / Null |
| Risk location city. | String / Null |
| Risk location zip code. | String / Null |
Non-admitted rates: Admitted rates (KY only) : | Physical state / state (2-letter code). | String |
| Insurance premiums tax levied on insurance companies for privilege of doing business in the state. (KY only) | Number |
| Insurance premiums tax levied on insurance companies for privilege of doing business in the state. Specific to life insurance companies doing business in the state. (KY only) | Number |
Errors
InsCipher uses conventional HTTP response codes to indicate the success or failure of an API request. In general, 2xx codes indicate success, 4xx codes indicate a failure due to invalid information provided or issues with authorization, and 5xx codes indicate server errors.
For example - unauthorized usage of the Tax Calculator API will result in the following error:
{
"error": {
"code": "Unauthorized access",
"status": 401,
"message": "Insufficient permissions to access this API endpoint"
}
}
FAQ's ❓
Transactions
Can I future date policy transactions?
The Compliance Team at InsCipher adds state by state tax rates at the cadence of one year in advance - because there isn't a consistent way of knowing what new rates are going to be if they change for the subsequent year. These rates are generally known and implemented by this team as they are updated by the state - and finalized in InsCipher towards the end of September or beginning of October timeframe, but no sooner. Thus, best practice is
How do I submit endorsements?
In the case of endorsements, send over the difference between the original premium amount and the premium endorsement amount in the premium
field, and set the transaction type to APE
for an Additional Premium Endorsement or RPE
for Return Premium Endorsement. For example, if the original policy had a premium of $500 and required an APE 6 months into the policy term, bringing the premium to $650, the premium amount sent in the request to retrieve tax rates for this transaction type would be the difference in original and new premium, or the change, - so $150. The same is true of an RPE when an amount is required to be credited back to the insured. Simply return the difference. You do not need to submit a negative value in this case - InsCipher will recognize the transaction type is RPE and apply that amount as a negative value.
Documents
How are Documents returned via this endpoint?
Documents returned using this method will be returned in one of two ways:
- Blank document templates: These will be returned as links where blank state forms can be downloaded
- Required documents for submission: This will not be a downloadable file, but rather this is informational in nature letting the user know if this document is required or not for submission with the rest of the policy detail. For a quick summary of document requirements, you can refer to the Document Requirements datasheet.
Generic Lines of Business
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 on the Generic Lines of Business List datasheet.
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. It is your responsibility to review the mapping and to determine if there are additional generic codes that need to be mapped or altered.
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.
Tax Titles
How should I be understanding tax titles?
There are some states where field names are repurposed for state-specific definitions of taxes and/or state fees. For a summary of these tax titles, refer to the Unique State Tax Titles datasheet.
Taxable Fees
How do I determine taxable fees by state?
InsCipher's Tax Calculator API is designed to identify and calculate taxable agency, broker and carrier fees as apart of surplus lines tax filings. Our helpful Taxable Fees Guide is helpful in reviewing taxable fees by state - specific to transaction type.
To export this data table to CSV, CSV(Excel), or to Google Sheets - first simply choose the view specific to state or another filter, then hover over the orange bar to the very far right of the column header, where you'll notice three ellipsis appear. Click 'Export' to review your options and download the data:

Updated 29 days ago