Premium Reporting


See the See Premium Reporting Feature Guide for more details about this feature.

Basic Configuration

Premium Reporting must be configured for the product for which you wish to use premium reporting. Add the premiumReporting.json file to the product folder, alongside policy.json. An example premiumReporting.json file looks like this:

  "premiumReportingConfiguration": [
      "reportName": "standardReport",
      "fields": [
          "name": "mileage",
          "title": "Miles Traveled",
          "type": "number"
      "documents": [
          "displayName": "Report Acknowledgement",
          "fileName": "reportAcknowledgement.pdf",
          "templateName": "reportAcknowledgement.template.liquid"

This file says that the premium report type “standardReport” will be usable within this product, and each report will have a “mileage” field of type number which will be recorded. When reports are issued, each will include a document based on the report acknowledgement document template.

When this file is deployed with the product configuration, policies can be created to use premium reports by setting the premiumReportName in the policy create request object.

Financial Calculations

Premium, fees, taxes, and commissions are calculated using a liquid template in the /calculations/premiumReports folder within the product folder. For the report name standardReport, the file standardReport.liquid will be used to calculate financial values. The following liquid filters are used in premium reports:

  • add_premium (takes an optional string parameter to set the category of the premium)

  • add_fee (takes a fee name)

  • add_tax (takes a tax name)

  • add_commission (takes a commission recipient)

A very simple premium reporting rating Liquid file could look like this:

{% assign premReport = data.premiumReport %}
{% assign miles = premReport.field_values.mileage[0] %}
{% assign prem = miles | times: 0.015 %}
{{ prem | add_premium: "standard prem"}}
{% assign tax = prem | times: 0.1 %}
{{ tax | add_tax: "mileage tax"}}
{% assign processing_fee = miles | times: 0.008 %}
{{ processing_fee | add_fee: "processing fee", "Std Processing Fee" }}
{{ 2 | add_commission: "Zenith Insurance Brokers" }}
{% for surcharge_loc in premReport.field_values.surcharges %}
  {% assign surcharge = premReport.field_groups_by_locator[surcharge_loc] %}
  {% assign amt = surcharge.surcharge_amount[0] | plus: 0 %}
  {{ amt | add_fee: surcharge.surcharge_type[0]  }}
{% endfor %}


Premium reporting policies do not use the normal configuration for premium calculations, fees, commissions, and taxes. Those files will be ignored. Instead, the premium reporting calculation files will handle all of those calculations.

Data Objects

The data object provided to Liquid for document and invoice generation and premium calculations contains:

  • data.policy and data.policyholder. These have the same schema as for existing document rendering.

  • data.premiumReport. This is data describing the premium report, and it has the same schema as PremiumReportResponse, except that, for premium calculations, the following fields will not be included because they will not have been calculated yet: grossPremium; grossTaxes; taxGroups; grossFees; fees; grossCommissions; commissions; invoice; and documents.

  • data.previousPremiumReports. A list of older premium reports, including pricing information, for the policy.

For document generation, the full PremiumReportResponse data is included except for the documents field.


Each premium report will generate an invoice with the total premiums, taxes, fees, and commissions calculated by its associated calculations liquid file.

The invoice template for a premium report called myReport will be named myReport.invoice.template.liquid.


Functionality for grace, lapse and reinstatement is not available for premium reporting based policies.