Cheat Sheets

Written By Jessica Moore (Super Administrator)

Updated at April 1st, 2026

Use some of our formula, templates, code snippets from below to speed up your scheme build:

Rating formula

Action Description
SetAgentId
IF([Agent.AccountId].ToString()='ACCOUNT_ID_35471',35463,[Agent.AccountId])
Change agent. If you cannot find the Agent ID, in Formula testing enter [Agent.AccountId] to find it
[ContentsDescription_ContentsItemValue_Row#0_Cover] - 1st row
[ContentsDescription_ContentsItemValue_Row#1_Cover] - 2nd row
[ContentsDescription_ContentsItemValue_Row#2_Cover] - 3rd row
Return value from specific table row
HeaderBusinessEquipment HeaderBEAtPremisesRate HeaderBEAwayFromPremisesRate OrderBy
Business Equipment 0.005 0.006 1
Computers, Laptops 0.0075 0.015 2
Diesel Tank 0.0075 0.015 3
Other 0.005 0.006 4
Customise the order of a file lookup. By default, file lookup will arrange alphabetically but this will enable you to change the order. Adding OrderBy as the last column will ensure it does not clash with rates
IF([Claims_Table_DateofLoss_DateValue] > NOW.AddYears(-5) AND [Claims_Table_TypeofLoss_Value]="Employer\'s",1,0) For values that contain apostrophe, add \
Answer:MP_SystemID
Null
To check if question is blank
Answer:MP_HiddenInterestedPartiesLock
Null

Answer:MP_HiddenInterestedPartiesLock
checked

SetCover:MP_HiddenInterestedPartiesLock
Null

SetCover:MP_HiddenInterestedPartiesLock
checked
To check if Tickbox is ticked or unticked
SetCover:PostcodeNoSpace
[PHHomeAddress_Postcode_Value].Replace(' ','')

SetCover:PostcodeMinusTwo
[PostcodeNoSpace_Value].ToUpper().Substring(0,[PostcodeNoSpace_Value].Length-2)

SetCover:PostcodeRated
[PostcodeMinusTwo_Value].Insert([PostcodeMinusTwo_Value].Length-1, " ")
Insert space into postcode to get AB1 2 or AB12 2

Create first question (text box) with formula to grab postcode and remove space (works with or without space)

SetCover:PostcodeNoSpace
[PHHomeAddress_Postcode_Value].Replace(' ','')

Create second question (text box) with formula to remove last 2 digits

SetCover:PostcodeMinusTwo
[PostcodeNoSpace_Value].ToUpper().Substring(0,[PostcodeNoSpace_Value].Length-2)

Create third question (text box) with formula to insert space

SetCover:PostcodeRated
[PostcodeMinusTwo_Value].Insert([PostcodeMinusTwo_Value].Length-1, " ")
SetCover:MostRecentDate|OVERWRITE
IF([XXX_Date_DateValue] > [MostRecentDate_DateValue], [CCJ_Date_DateValue], [MostRecentDate_DateValue])
Finding the most recent date in a table. ( works on all fields in table.) 
([Q12_Postcode_Value].Replace(' ','') Remove space in postcode
IF([QC6F_Value]= "Yes" AND [QC6C_Geo_Value]= "Worldwide", "<div>" + [QC6C_Desc_Value] + " / " + [QC6C_Geo_Value] + " / " + [QC6C_Sum_Value] + "</div>", "") Useful when trying to pull data out of a table for a document. The destination needs to be a large text box. 
[Policy.InceptionDate].AddDays(90).ToString("dd MMMM yyyy HH:mm:ss") When use SetExpiryDate: this formula will add the required days or months depending on how you adapt it. 

.ToString("ddMMMMyyyy") will display 01 January 2018

.ToString("ddMMMyyyy") will display 01 Jan 2018

.ToString("ddMMMyy") will display 01 Jan 18 

.ToString("dd.MM.yy") will display 01.01.18

.ToString("yyyy-MM-dd") will display 2018-01-01

.ToString("dd/MM/yyyy") will display 01/01/2018
CEILING To round up decimals - wrap the entire formula in round brackets, then add CEILING to the start of the formula

For example, 1.2 will be rounded up to 2 
FLOOR To round down decimals - wrap the entire formula in round brackets, then add FLOOR to the start of the formula

For example, 1.2 will be rounded down to 1
"IF (CEILING((NOW-IF([ConvictionsTable_Identifier_Cover]=1, [ConvictionsTable_Date_DateValue], [ConvictionsTable_OffenceDate_DateValue])).Days / 365.242199) = 1, [ConvictionsTable_Year1_Cover], [ConvictionsTable_Score_Cover])" Use one of two dates. 
NOW or TODAY Gives you today's date
365.242199  
[PostCodeRisk_Value].Substring(0,2) Substring can take certain letters from a text string. 
[Pri_Postcode_Value].Replace(' ','').ToUpper().Substring(0,3) First three letters of postcode. 
SetCover:HiddenAge
FLOOR((([StartDate_DateValue]-[ProposerDOB_DateValue]).Days/365.242199))
How to set the age of a policyholder based on the start date of the policy and the policyholders date of birth
SetCover:NumberOfDays
([PIInceptionDate_DateValue]-[CurrentPIRetroactive_DateValue]).Days
To calculate the difference in days between two dates
SetCover:RetroDate
[Policy.InceptionDate].AddYears(-3)
When doing a retroactive date where it needs to set a date 3 years prior the inception date. 
#yyyy-MM-dd# How dates should be written when used in an IF statement. 
[RiskAddress_Postcode_Value].ToUpper().Substring(0,[RiskAddress_Postcode_Value].Length-3).Replace(' ','') Use this formula to always pull through the first part of the postcode
RemoveEndorsement:1
AA11223344
Use this formula if you want to remove specific endorsements (in this example the endorsement being deleted is AA11223344)
Other endorsements can be listed below if deleting more than one
SetCover:AnyField 
"first line text" + "\r\n" + "second line text"
Enables you to put text into a large text box in multiple lines
SetCover:RoundedExcess
([HighestExcess_Cover] - ([HighestExcess_Cover] % 250))
 
If you are trying to round down a cover amount use this formula where the 250 is what you are rounding it down to. 
SetCover:ExcessDifference 
([Excess_Cover] % 50) 

################################################################################ 

Answer:ExcessDifference SetCover:RoundedExcess 
0-24.9 ([Excess_Cover] - ([Excess_Cover] % 25)) 
25-50 ([Excess_Cover] + ([Excess_Cover] % 25))
This is a different version where you want to round to the nearest 50 (or 100 ect)

Create a hidden field to to find out the difference in the %. 
then you take away the difference if it is below 25 or add if it is above. 
 
SetExpiryDate
[StartDate_DateValue].AddMonths(1)
[StartDate_DateValue].AddMonths(6)
[StartDate_DateValue].AddDays(40)
To set a specific Expiry Date 
SetExpiryDate
[StartDate_DateValue].AddMonths(1).AddSeconds(-1).AddSeconds(-1)
[StartDate_DateValue].AddMonths(6).AddSeconds(-1)
[StartDate_DateValue].AddDays(40)
The format in the above row adds on the number of months but uses the same day i.e. if the inception date is 02/02/2023 and a three month term is selected the expiry is set to 02/05/2023

The option on this row sets the expiry date to one second before the inception date plus the selected term i.e. if the inception date is 02/02/2023 and a three month term is selected the expiry is set to 01/05/2023
SetCover:Named_Driver_Age
[Now].Year - [Named_Driver_Date_Of_Birth_DateValue].Year
 
Formula to find out a persons age from a DoB question
[Now].Month - [Purchase_Date_DateValue].Month + (([Now].Year - [Purchase_Date_DateValue].Year )*12)
 
Formula to use to find out number of months between two dates
SetCover:Years_Trading 
[Years_Trading]+1 
 
Adds one year onto the previous years answer at renewal (use in renewal matrix)

For _Cover to work it needs to be a calculation question; if it is a textbox then use [PreviousAnswer_Years_Trading_Cover]
SetRate:CommissionFromInsurer_793
if([Policy.InceptionDate]>= #2017-12-01#,23.5,26)
Set a new 'Commission from Insurer' rate from a specified inception date for a Risk Group
SetRate:Commission_XXXX_IndexLevel0
If([Policy.InceptionDate]>= #2019-06-01#,25,20)
 
To set the commission rate on a risk group for a broker from a particular date
SetCover:Claims_2yr_Count
IF([ClaimsTable_DateOfClaimLoss_DateValue] > NOW.AddYears(-2) AND [ClaimsTable_DateOfClaimLoss_DateValue] < NOW.AddYears(-1), 1, 0)
 
Pulls through the total number of claims from a table, only if date of claim is over 1 year ago but under 2 years ago
SetCover:Claims_2yr_Amount
IF([ClaimsTable_DateOfClaimLoss_DateValue] > NOW.AddYears(-2) AND [ClaimsTable_DateOfClaimLoss_DateValue] < NOW.AddYears(-1), [ClaimsTable_CostOfClaim], 0)
 
Pulls through the total cost of any claims from a table, only if date of claim is over 1 year but under 2 years ago
IF([ConvictionCode_Value].CONTAINS("DR"), TRUE, FALSE)

or

IF([ConvictionCode_Value].StartsWith("DR"), TRUE, FALSE)
Use if you want to find out if a field contains or starts with a value. 
SetCover:QuestionID
IF([Policy.InceptionDate]<#2017-12-01#,'Reference A','Reference B')
 
To set an answer to a question that is dependant on a particular date - used in particular for DOA schemes that have a documents page with all insurer references on them
 
SetFee:QuestionID
IF([Policy.InceptionDate]<#2017-08-01#,66.98,70.329)
To set a rate that needs to be used after a particular date - for example when an insurer increases there rates on renewal of the binder
RemoveAllEndorsements 
All
To remove all endorsements in the renewal rating file
RemoveEndorsement 
IF([Record.InceptionDate] >= #2018-01-01#, "REMOVE ALL", "") 
 
To remove all endorsements on renewal subject to a particular date
Answer:RequestedBI | SetCover:ActualBI
0-250000 | 250000
To set a minimum value in a field that a customer can populate i.e. the package in question has a fixed minimum value of £250k for BI but a higher limit can be requested and will rate accordingly. However, if the customer enters £100k the premium must still rate on the minimum value of £250k
[Policy_Renewal_Count_Cover] = 0 | Set Action
[Policy_Renewal_Count_Cover] > 0 | Set Action 
 
Create a hidden Question [Policy_Renewal_Count] and set the initial value to 0.

In your renewal rating file, set this value to increase by 1 year using 

SetCover:Policy_Renewal_Count
[Policy_Renewal_Count]+1

You can then use this hidden question to set any adjustment rules conditioned to whether the policy is in it's first year, 2nd year etc. The first condition to the left will set the rule if policy in it's first year, the second condition says set the rule if policy has completed 1 or more years
SetCover:HiddenCalcQuestion
IF([TableName_ColumnName_Value]='Column Value' AND [TableName_PercentageColumnName_Cover]>0, ([SumInsured]*[TableName_PercentageVariableAmount]/100), 0)
 
Use this in a calculation question to set as the percentage of the sum insured, depending on the value selected from a table dropdown by the percentage amount entered in that row.

Example: If trade is equal to builder and this is 50% of trade activity, set the hidden question to be 50% of the sum insured. You can then set a rate against this hidden calc question.
SetCover:HiddenField_Id
MIN([Q1_Id_Cover],MIN([Q2_Id_Cover],MIN([Q3_Id_Cover],MIN([Q4_Id_Cover],[Q4_Id_Cover]))))
Use this to set cover to the lowest amount, where the are more than 2 variables. 
For only 2 variables just use MIN([Q1_Id_Cover], [Q2_Id_Cover])
SetAgentId
1234
or 
SetAgentId
[AgentTest_Value]
 
To set the Agent in the rating file where you can use either the actual AccountId (as in the first example) or an (hidden) question name that holds the AccountId (as in the second example) NB it has to be the numeric one (not the alpha code)
AccountRef SetFee:PolicyFee
DIR3 20
DIR1 50
SIG1 35
Using the agent's account reference to set the answer to a fee (NB you do not need to use "Answer:" when using AccountRef in this format)
SetFee:PolicyFee
IF([Agent.AccountRef]='DIR3',(([Net_3730_Cover] + [Net_3731_Cover])*0.025),20)
 
Using the agent's account reference within an IF formula
SetFee:PolicyFee
CEILING([PolicyFee_Result]/5.0)*5
Rounding up a value to the next £5
SetCover:RoundedExcess
CEILING([Excess_Cover]/50.0)*50
Rounding up a value to the next £50
SetCover:HiddenMTADays|OVERWRITE
([Policy.RenewalDate]-[Record.InceptionDate]).Days
Add a hidden standard number question and use this formula in rating to check how many days are remaining in the MTA policy term
SetCover:HiddenAnnualDays|OVERWRITE
([Policy.RenewalDate]-[Policy.InceptionDate]).Days
Add a hidden standard number question and use this formula in rating to check how many days are in the annual policy term. This is useful if you need to use a formula to pro rata a cover field on the matrix for an MTA but need to establish whether it's a leap year.
SetCover:Example
[MtaDiff_Net_XXXX_Result]
If you want to set cover on an adjustment to the risk group net total premium, this is what you need to use to look at the current record
SetMinNet To set a minimum premium for the record as a whole i.e. all cover groups

The Main cover group must have a fixed value load field named Autoload_Total_Main
SetRiskGroupMinNet:xxxx To set a minimum premium for a particular cover group

The cover group in question must have a fixed value load field named Autoload
Formula:[RiskGroup_XXXX].Insurer.Name
Insurer Name Value
You can use this as a condition (usually for an add-on) in rating to set different rates depending on who the insurer is for a specific risk group
SetCover:VOIPHackingInsurance
If([Record.CreatedDate]>=#2020-05-20#,"No",[VOIPHackingInsurance_Value])
Using the record created date in a formula - do not use _DateValue as it will error out
Previously:
IF([ProfWorkSplitsDC_WorkType_Value]="Civil Engineering" OR [ProfWorkSplitsDC_WorkType_Value]="Flooring" 
OR [ProfWorkSplitsDC_WorkType_Value]="Cladding","True, "False")

Can now use:
IF([ProfWorkSplitsDC_WorkType] IN ("Civil Engineering","Flooring", "Cladding") ,"True","False")
If you have an expression that uses multiple answers to populate a value you can instead use the IN expression which will do the same amount of work without needing to type so much 
 
ApiRequest:MP_FoodRatingAPI
{"request": {"body": "","method": "GET","headers": [{"Key": "x-api-version","Value": "2"}],"url": "[GroupBy Field=\"MP\"]https://api.ratings.food.gov.uk/establishments?name=##[CompanyName_Value]##&address=##[MP_RiskAddress_Postcode_Value]##[/GroupBy]"},"responseDataLocation": ["establishments","RatingValue"]}
FOOD RATING API REQUEST in rating file - on MP Scheme
Where the field 'MP_FoodRatingAPI' is hidden field created as 'GetApiResponse' question type on the MP and the fields 'CompanyName' and 'MP_RiskAddress_Postcode' are respectively the trading/restaurant name on the General Details tab and the postcode of the risk address we want to check. 
Please note: the API will return a value only if there is the perfect match of 'Restaurant name + Postcode'.
Formula:[Agent.Name]
Test
How to use the agent name as a condition in your rating file
SetPolicyTermMonths
12
 
Force policy length to annual _
Answer:TableName_RowCount
1-1000
If a formula is reliant on an answer in a table question, but if that table question has no data entered and is therefore blank, the case may error out when running the rating file

Avoid this issue by adding a condition to check if there are rows in the table before running the formula

_RowCount can also be used with MP questions
Answer:Insured_Addresses_Table_RowCount
1-1000
Use this in the first column before any formula that use table system IDs - it will qualify that there is at least one row in the table and run the formula. If there are no rows present it should just skip it, but it can sometimes cause an error if it tries to run the formula but there are no rows

In this example the table name is [Insured_Addresses_Table]
Answer:PreviousClaimsDetails_ActualClaimDate SetCover:PreviousClaimsDetails_ActualClaimDate 
null [Now].AddYears(-1)
A date field has been added to a table question - if a record is renewed using the auto renewal function this date will remain blank - broker wanted the rating file to be able to identify records such as this and overwrite a blank date field with a date set as this time one year ago
SetCover:TotBuildingsRateFactorMinusUnoccupiedCover  
SetRate:Commission_5279_IndexLevel0
IF([Agent.AccountId].ToString()='ACCOUNT_ID_20000',0,20)
Using the agent account ID (i.e. 20000) ather than their account ref (i.e. DIR3)
[Policy.OriginalInceptionDate] To use the very first date that a policy started i.e. the third renewal has been processed but the original inception date was three years ago 
Answer:QuestionID
1-Year
3-Month
6-Month
9-Month
When you have a 'Policy Length Period' question type on your question set you must use '3-Month', '6-Month' etc for the Months options, even if they are displayed as '3 months' '6 months' on the dropdown during the Get Quote. Same for the '1 year' option -> needs to be '1-Year'.
This is to be done in both rules and rating files.
[PreviousAnswer_TotalPremiumNet_Result] Used on Adjustment - Cancelled rules as when you cancel a policy using the Cancel Policy button the status 'Cancelled' doesn't 'read' any XXXXX_ResultBefore or XXXX_CoverBefore. You then have to use [PreviousAnswer_XXXX_Result] or [PreviousAnswer_XXXX_Cover] or [PreviousAnswer_XXXX_Rate] if you need to use/check a result or a cover or rate from the previous record.
It can be used in rules, rating and docs - the only place where it can't be used is reports. 

PreviousAnswer must be spelled with upper and lower case characters - if not the system ID wont work
Answer:MP_HiddenInterestedPartiesLock
Null
To look for the answer of an unchecked tick box
|OVERRIDE

for example:

SetFee:PolicyFee|OVERRIDE
75
Use when lock rates are enabled on a scheme but there are some rates / fees that must not be locked.

For example, last year's policy fee was 50; all other rates / fees should be locked, except the policy fee which now needs to be set at 75. Creating a rule to set this fee wont work, even though rules run after the rating files; if SS sees the rates are locked, the rule will fail.

|OVERRIDE is only used with SetRate and SetFee - it is not necessary for SetCover.
[CaseRecord.QuotationTemplateId.Value] Pulls the Question Set reference number
[Basic_xxxx_Cover] If the 'This is Coverage' box is checked within a calculation question the sum insured on that question will be populated to the bottom of that cover group on the matrix page of the record to show the total sum insured of that question and all others that are checked. This is the system ID for that field that can then be used in rating file or report formula
IncludeEndorsement Use this to include endorsements from the rating file - list them by ID in rows below. Note that this applies endorsements at policy level, even for MP
This formula errors out because a record didnt have a contents sum insured value entered:
(RoundUp(([SI_Landlords_Contents_ResultBefore]/([SI_Landlords_Contents_CoverBefore]/100))*(1+([RenewalRateLoad]/100)),3))


Changed it to include an action of setting a value of zero if either of the two system IDs used in the division formula had values values of zero:
IF([SI_Landlords_Contents_ResultBefore]=0 OR [SI_Landlords_Contents_CoverBefore]=0,0,(RoundUp(([SI_Landlords_Contents_ResultBefore]/([SI_Landlords_Contents_CoverBefore]/100))*(1+([RenewalRateLoad]/100)),3)))
If a formula is structured to divide one value by another you must take into account that one of those values may sometimes be zero - if this is not factored into the formula an error will occur when one or both values are zero so you need to add an IF condition to the formula to account for this possible occurrence and carry out another action. You would use the same format in both reports and rating files if you have any column formula that use the divide function.
To work out what an amount should be to take off a percentage to end up with the figure we are given for rating (ie before commission is removed): Pre-calculation figure - 0.350% - we are told that example 10% commission is on top of this figure and we need to work out the gross (so that taking 10% off the gross will end up with the figure we are given). In this instance, to calculate a 10% commission off gross, multiply the net figure by 11.1112%: ((0.35*11.1112)/100)+0.35=0.3888892 - Now subtract this amount by 10% to ensure it results in 0.35: 0.3888892-(0.3888892*10/100)=0.35  
Formula:IF([Policy.DoNotAutoRenew]=True,1,0) SetCover:MP_RatingCycles
0 0
To be used in a renewal rating file to identify if a record is being renewed via batch, and then trigger an action in a subsequent field

We now know that the 'reset if hidden' option within a question doesnt work when a case is batch renewed - in the example seen to the left I wanted to reset the question [RatingCycles] back to the default value of 0 when the case is batch renewed

WIth this particular system ID the value of True or False does not need to be wrapped in apostrophes - this is not normally the case, but it is with this system ID
SetFee:PolicyFee
IF([TotalPremiumNet_Result]>=400 AND [TotalPremiumNet_Result]<500,40,IF([TotalPremiumNet_Result]>=500 AND [TotalPremiumNet_Result]<600,50,0))
How to set a policy fee based on the Total Net Premium within premium bandings

What this formula is checking/doing:
If net total is equal to or great than 400 but less than 500, the fee sets to £40
If net total is equal to or great than 500 but less than 600, the fee sets to £50
If none of the above formula are true, i.e. for any other net total, the fee sets to £0
SetExcess:Excess Name
50
 
How to set a standard excess which has been created under Claim Types
Excess Name being the name of the excess given when you created it in Claim Types
In this example, the excess will be set to £50 in the rating file
This will override any amount which has been set for this excess in Claim Types
[Policy.CreatedDate] The date the policy was original created at First Premium, regardless of how many renewals it has gone through since
 
 

Reporting formula

Column Name = "HIDDENRecordLastCancelled". Column Type/Question ID = "Record Last Cancelled". Tick Exclude on Report

Column Name = "HIDDENRecordLastCancelledDate". Column Type = "Formula (No Format)". Formula = "[VAR_Row].GetDate("HIDDENRecordLastCancelled").ToString("dd/MM/yyyy")" Tick Exclude on Report

Column Name = "HIDDENRecordLastOnCover". Column Type/Question ID = "Record Last On Cover". Tick Exclude on Report

Column Name = "HIDDENRecordLastOnCoverDate". Column Type = "Formula (No Format)". Formula = "[VAR_Row].GetDate("HIDDENRecordLastOnCover").ToString("dd/MM/yyyy")" Tick Exclude on Report

Column Name = "Transaction Date". Column Type = "Formula (No Format)". Formula = "IF(VAR_Row.GetValue("HIDDENRecordStatus")="Cancelled",(VAR_Row.GetValue("HIDDENRecordLastCancelledDate")), (VAR_Row.GetValue("HIDDENRecordLastOnCoverDate")))"
Display Cancel Date or Last On Cover Date without the time (dd/MM/yyyy)

Need to create 5 columns (see Column A)

Will also need a column called "HIDDENRecordStatus" to pull in Record Status
[Record Expiry Date].AddDays(1).ToString("dd/MM/yyyy") Use this to show renewal dates in reports.
[RiskAddressP1_AddressLine1_Value] + IF([RiskAddressP1_AddressLine2_Value].Replace(' ','').Length > 0,', ' + [RiskAddressP1_AddressLine2_Value], '') + IF([RiskAddressP1_TownCity_Value].Replace(' ','').Length > 0,', ' + [RiskAddressP1_TownCity_Value], '') + IF([RiskAddressP1_County_Value].Replace(' ','').Length > 0,', ' + [RiskAddressP1_County_Value], '') How to put address on report without spaces and postcode
[RiskAddress_AddressLine1_Value] + IF([RiskAddress_AddressLine2_Value].Replace(' ','').Length > 0,', ' + [RiskAddress_AddressLine2_Value], '') + IF([RiskAddress_TownCity_Value].Replace(' ','').Length > 0,', ' + [RiskAddress_TownCity_Value], '') + IF([RiskAddress_County_Value].Replace(' ','').Length > 0,', ' + [RiskAddress_County_Value], '')+ ', ' + [RiskAddress_Postcode_Value] How to put address on report without spaces and including postcode
IF([CollectionDate_Value].Length=3,[CollectionDate_Value].SubString(0,1),[CollectionDate_Value].SubString(0,2)) The first result will show the 1st left hand character of a string, the second result will show the first 2 left hand characters of a string
IF(VAR_Row.GetValue("Employer Reference Number")="/Exempt","No","Yes") VAR_Row.GetValue("Column Name*")="Value" *Column must be before this question to work
[IPT_Rate].ToString("0.00") Display the IPT Rate to 2 decimal places in reports (e.g. 12.00%)
([IPT_Rate].ToString("0.00"))+"%" To display the IPT rate to 2 decimal places, and include the % symbol after the value
IF([TableNameID_RowCount] >0, [TableNameID_DateQuestionID_Row#0_DateValue].ToString("dd/MM/yyyy"), '') Pulls through the answer to a Date Question from the 1st row of a Table where the number of table rows is at least 1. Date in format dd/MM/yyyy

IF([TableNameID_RowCount] >1, [TableNameID_DateQuestionID_Row#1_DateValue].ToString("dd/MM/yyyy"), '')
Pulls through the answer to a Date Question from the 2nd row of a Table where the number of table rows is at least 2. Date in format dd/MM/yyyy
IF([Record Type] = 'First Premium', 'New Business', [Record Type]) Displays as "New Business" in Reports (instead of showing First Premium) if record type is First Premium, otherwise it will pull through as "Adjustment" or "Renewal"
IF([Record Status] = 'Cancelled', 'Cancellation', 'MTA') Displays as "Cancellation" in Reports (instead of Cancelled) if record status is Cancelled, otherwise it will pull through as MTA
[CalcQuestionID_Cover] + [CalcQuestionID_CoverBefore] Pull through the correct answer to a calculation question for Adjustments in Reports 
e.g. Contents Sum Insured at New Business is £100000, MTA to increase to £200,000. Formula will show Contents Sum Insured as £200,000 in Adjustment Report

NOTE If there are no additional IF conditions in the formula, and the record being reported on is a renewal, the previous record's value will be added to the current record's value - see the next two rows to see how to address this
IF([Record Status]="Cancelled",0,(IF([Record Type] = "Adjustment", ([CalcQuestionID_CoverBefore]), 0) + ([CalcQuestionID_Cover]))) This format will set a value of 0 if the record is cancelled, if the record is not cancelled but is an MTA it will add the _CoverBefore value to the _Cover value, and if it is not cancelled and not an MTA (i.e. it is an FP or renewal record) it will just reflect the _Cover value 
IF([Record Type] = "Adjustment", ([CalcQuestionID_CoverBefore] + [CalcQuestionID_Cover]),[CalcQuestionID_Cover]) This formula can be used without the condition that looks at the record status of cancelled - if an admin user has correctly cancelled a policy and the sums insured are zero'd out, using this formula should reflect the correct sum insured of zero when a record has been cancelled, but sometimes user zeroes out the rate applied to a sum insured rather than the sum insured itself, so this value may not always be accurate. Using the formula above will ensure cancelled policies reflect a sum insured of zero
[DateQuestion_DateValue].ToString("dd/MM/yyyy") Pulls through the answer of date question in the format dd/MM/yyyy
Use with Formula(no format)
[TableNameID_RowCount] Pulls through the number of rows in a table question in Reports
[Record Expiry Date].Month - [Record Inception Date].Month + (([Record Expiry Date].Year - [Record Inception Date].Year )*12) Pulls through the remaining duration (in months) of the policy from most recent inception date until expiry date
if([Record Type]='First Premium','New Business',if([Record Type]='Adjustment',IF([Record Status]='Cancelled','Cancellation','Mid Term Adjustment'),'Renewal')) Use this as a Formula in reports to customise the wordings displayed for [Record Type]
[Client First Name].Substring(0,1) + [Client Surname].Substring(0,1) Use this in reports to add the 1st character of one string to the 1st character of another string.

In this example the clients initials will pull though e.g. John Smith would show as JS..
[EmployeeReferenceNumber_ctlTaxOfficeNumber_Value] + "/" + [EmployeeReferenceNumber_ctlERN_Value] Use this in a report if the usual system ID for the ERN value isnt working as it should
IF([StartDate_DateValue] < #2016-08-31#, '038338/01/2015', '038338/01/2016')

OR

IF([Policy Inception]<#2019-04-01#,'038338/01/2015', '038338/01/2016')
FOR REPORTS ONLY - use this in a column if a particular reference (in this case an insurer binder ref) needs pulling through which is dependent on the inception date of the risk. Date format must be #YYYY-MM-DD#
[CommissionFromInsurer_3665_Rate].ToString("N0") + '%' To pull through the commission rate (to no decimal places) with the % symbol
IF([ContractWorksCoverRequired_Value]='checked','Covered','Not covered') For use with checkbox style question - note, 'checked' must be in lower case, it's case sensitive
(VAR_Row.GetDecimal("Column Name A")) + (VAR_Row.GetDecimal("Column Name B")) To calculate two column totals using VAR you must use .GetDecimal as opposed to .GetValue
Using _xxxBefore values i.e. _CoverBefore These values can only be used on calculation questions - these are the only style question where the previous values are saved.

NOTE: if you backdate a test case and then change the previous values to see the impact on a later record, the _xxxBefore value will remain the same as the original entered - any changes you make will not pull through, only the original value
[XXX_CoverBefore] As above, this suffix on a system ID will only populate a value to a report if the system ID is a calculation question.

When needing to use this suffix to find a value on an MP scheme the _CoverBefore suffix must be applied to the charge row system ID found in the matrix - using it with a sum insured field on the MP page itslef wil only ever result in a value of 0 being populated to the report
[Basic_XXXX_Object].InsurerFullName
[Basic_XXXX_Object].InsurerID
To pull through the insurer name for a particular risk group OR
to pull through the insurer ID for a particular risk group

Replace the XXXX with the risk group ID

THIS DOES NOT WORK WHEN THERE ARE MULTIPLE SCHEMES (OR NO SCHEMES AT ALL IF TRYING TO REPORT ON ALL SCHEMES ON A SITE) SET IN THE REPORT CONDITIONS - ONLY ONE SCHEME CAN BE SELECTED

There is no token that can be used to populate a column with the previous year's insurer
IF([Basic_XXXX_Object].InsurerFullName = 'Insurer Full Name','True','False') Similar to above, but using a risk group insurer FULL name in a formula

Again, replace the XXXX with the risk group ID and make sure to use the insurer full name and not the short name
IF([VAR_Row].GetDate("Record Last On Cover").Year > 1, [VAR_Row].GetDate("Record Last On Cover").ToString("dd/MM/yyyy"), " ")

with the hidden column named "Record Last On Cover"  
To set the format of the date Record Last On Cover to e.g. 01/01/2018

Please note using the normal "formula" or "formula no format" column without the hidden column will error everytime there is a record never gone on Cover in the period the report is run for

 
MAX(VAR_Row.GetDecimal('MD Excess'), [FloodExcess_Cover]) To set the higher of two values - 'MD Excess' is pulled through from a question, if it is higher than the value in the 'FloodExcess' field then it should be set
(IF([Insured_Addresses_Table_RowCount]=1,[Insured_Addresses_Table_Postcode_Row#0_Value],''))+(IF([Insured_Addresses_Table_RowCount]=2,([Insured_Addresses_Table_Postcode_Row#0_Value] + ' / ' + [Insured_Addresses_Table_Postcode_Row#1_Value] ),''))+(IF([Insured_Addresses_Table_RowCount]=3,([Insured_Addresses_Table_Postcode_Row#0_Value] + ' / ' + [Insured_Addresses_Table_Postcode_Row#1_Value] + ' / ' +[Insured_Addresses_Table_Postcode_Row#2_Value]),'')) To pull through multiple fields from a column in a table to one column in a report separated by / but without looking untidy 
IF([Record Type]="First Premium",[Policy Inception].ToString("yyyy"),"")+(IF([Record Type]="Adjustment",[Policy Inception (Relative to MTA)].ToString("yyyy"),""))+(IF([Record Type]="Renewal",[Record Inception Date].ToString("yyyy"),"")) Use with 'Formula (No Format)' to pull through the 'Year of Account' value to insurer bordereau
Use in Formula (no format)

Can be used with a date where using the normal system ID pulls through the time as well as the date - for example [DocumentsSentDate]

You will need to add _DateValue to the formula

[DocumentsSentDate_DateValue].ToString("dd.MM.yy")
Allows you to show date or not covered depending on an answer.

.ToString("dd MMMM yyyy") will display 01 January 2018

.ToString("dd MMM yyyy") will display 01 Jan 2018

.ToString("dd MMM yy") will display 01 Jan 18 

.ToString("dd.MM.yy") will display 01.01.18

.ToString("yyyy-MM-dd") will display 2018-01-01

.ToString("dd/MM/yyyy") will display 01/01/2018

.ToString("yyyyMMdd") will display 20180101

.ToString('dd-MMM-yyyy') will display 01-Jan-2018

.ToString("MMM dd yy") will display Jan 01 18

If you need to add the time the format is:

.ToString("dd/MM/yyyy HH:mm:ss")
IF([PurchaseDate_DateValue].ToString('dd-MMM-yyyy')='01-Jan-0001','',[PurchaseDate_DateValue].ToString('dd-MMM-yyyy')) If a date field value is blank and that system ID is used as a column header the entry will be blank. If you need to format any date results using the above .ToString formatting, the column will reflect a value of 01-Jan-0001 when a date value is blank.

This formula will populate the column with a blank if there is no date value in the field in question, and if there is a date it will populate it in the format you require. The .ToString format that you require the date to be displayed must be mirrored in the conditional element of the formula
([Record Last Cancelled]-[Record Inception Date]).Days
 
Use this in Formula (No Format) to show the number of days difference when a policy was cancelled after it incepted
([Record Last NTU Date]-[Record Inception Date]).Days Use this in Formula (No Format) to show the number of days difference when a policy was NTUd (whether manually or by the scheme settings kicking in) after it incepted
IF([VesselUse]<>"Skipper Charter",[VesselUse],"") Not equals a value i.e if VesselUse does not equal Skipper Charter, print all the uses except Skipper Charter
[VAR_Row].GetDate("Client DOB").ToString("dd/MM/yyyy") You'll need an excluded column above this column in the report to store the Client DOB, then use this formula in the next column to display the DOB into format dd/MM/yyyy (or whatever other format you need)
Previously:
IF([ProfWorkSplitsDC_WorkType]="Civil Engineering" OR [ProfWorkSplitsDC_WorkType]="Flooring" 
OR [ProfWorkSplitsDC_WorkType]="Cladding","True, "False")

Can now use:
IF([ProfWorkSplitsDC_WorkType] IN ("Civil Engineering","Flooring", "Cladding") ,"True","False")
If you have an expression that uses multiple answers to populate a value you can instead use the IN expression which will do the same amount of work without needing to type so much
 
[Referral Cleared Date And Time] Can be used in a referral report in conjuction with a column using [Record Created Date And Time] to track how quickly referrals are cleared on a case
[Referral Date] When used purely as a standard column header will return the date only in the format 19-05-2022

When used within a Formula or Formula (non format) it will return the date in the format 19/05/2022 08:12:18
Existing fields:

[Agent Commission (All Years)]
[Policy Total Premium Net (All Years)]
[Premium Total £ (100 Year)]

New fields added 04/2020:

Insurer Commission (All Years)
IPT (All Years)
Policy Fee (All Years)

New field added 02/2022

Premium Total £ (1 Year)

When used in a column header the value will be reflected without being rounded to 2dp - this can be addressed by changing the column type to 'Formula' and using the following:

[Premium Total £ (1 Year)].ToString('N2')
Existing:
[Agent Commission (All Years)] - total of broker commission paid on a case across the life span of the policy from the original FP record to date
[Policy Total Premium Net (All Years)] - total net premium (pre-IPT with no commission deducted) across the life span of the policy from the original FP record to date
[Premium Total £ (100 Year)] - total premium incl IPT and any policy fees across the life span of the policy from the original FP record to date

New fields added 04/2020:
[Total Insurer Commission (All Years)] - total of insurer commission paid on a case across the life span of the policy from the original FP record to date
[IPT (All Years)] - total IPT on a case across the life span of the policy from the original FP record to date
[Policy Fee (All Years)] - total policy fees added to a case across the life span of the policy from the original FP record to date


New field added 02/2022:

[Premium Total £ (1 Year)] - total premium incl IPT and any policy fees within the period of cover selected (accounting for any MTA premium). This is helpful in a report where the broker doesnt need to see rows for any MTAs but needs to know the total premium across the record as a whole i.e. a renewals due report, or a snapshot of cases on cover in any given period.
NOTE this field cannot be used in a 'Cases Within Period' type report - it will cause the report to error out.
(NOW - [ClientDOB_DateValue]).Days/365

A further column can then be added to round the age up to the next birthday:

(CEILING((VAR_Row.GetDecimal("Client age")/1.0)*1)).ToString("N0")
Use with Formula (no format) to calculate the client's age using their date of birth, where [ClientDOB] is the date of birth question

Where this column is headed "Client age", a Formula (no format) column can then round the client's age up to their next birthday
IF(VAR_Row.GetValue('RecordStatus')='Cancelled',VAR_Row.GetDate('RecordLastCancelled').ToString('dd/MM/yyyy'),'')
 
[Record Last Cancelled] will populate with the date and time that the MTA status itself was changed to 'Cancelled' - if the report should reflect the effective date of the cancellation then use [Record Inception Date]

This format is needed as a report will error out if the selected date range does not report on any records with a cancelled status but a column header of Record Last Cancelled is used - the only report where this system ID can be used on a standalone basis is a 'By Cancellation Date' type report.

Add two hidden columns - one named 'RecordStatus' where the column header selected is Record Status, and 'RecordLastCancelled' where the column header selected is Record Last Cancelled.

Add a Formula (no format) column using this formula - in this example the date will be formatted as 01/11/2021
[Report Start Date].ToString("MMMM") Use with Formula (No format) to detail the bdx month in question
[Claim Settled Date].ToString("yyyy") Use with Formula (No format) to detail the month in which a claim is settled
[MP_RowCount] If using this column header you must elect the 'copy row' option to copy it down per row of the MP question if the value is to be used in a calculation. All other MP_ columns headers copy down automatically; this one doesnt
[Excess_1_All risks away from premises] This format must be used in a formula type column – it wont be found as a standard column header. The spelling of the claim type must match that listed in the ‘Claim types and default excesses’ area of the admin menu.

The insurer name must be specified in the report conditions for the report to be able to pull through the excesses noted specific to the scheme. This does mean separate insurer reports are required. 
 
[Proposal_NoBlanks] Some brokers have asked for a report that is effectively a data dump of all questions - we dont have a report that does this, but this system ID can be used in a doc template to pull through all the visible questions and answers that a client / broker has answered in a record
If([Record Status]="On Cover",[Record Last On Cover].ToString("dd/MM/yyyy"),"")
 
If using [Record Last On Cover] in a report where one of the conditions is set to 'Status is On Cover, Cancelled' this format must be used - if not, and if there is an MTA record with a status of 'Cancelled' in the reporting date range, the report will error out because an MTA record that is set to cancelled will never have had an on cover date (cancellation MTAs are either set to pending or cancelled immediately when using the cancel policy function)
IF(VAR_Row.GetValue('RecordEndorsements').Contains('734'),'Flood cover excluded','')

IF(VAR_Row.GetValue('RecordEndorsements').Contains('734') OR VAR_Row.GetValue('RecordEndorsements').Contains('334') OR VAR_Row.GetValue('RecordEndorsements').Contains('337') OR VAR_Row.GetValue('RecordConditions').Contains('Excluding Flood'),'Flood cover excluded','')
Where a flood exclusion endorsement identifier is 734 and the report needs to indicate if flood is not covered because of this exclusion

Create a hidden column using the [Record Endorsements] column header and name it [RecordEndorsements] and a hidden column using the [Record Conditions] column header and name it [RecordConditions], then create a visible column to drop in a formula to look at the endorsement identifiers and populate with a narrative if floood is excluded

Example one is where only one flood exclusion endorsement is found in the library, the second example is where there are multiple flood exclusion endorsements and flood conditions
[Record Created Date] To use the creation date of a record in a formula in a report
This formula errors out because a record didnt have a contents sum insured value entered:
(RoundUp(([SI_Landlords_Contents_ResultBefore]/([SI_Landlords_Contents_CoverBefore]/100))*(1+([RenewalRateLoad]/100)),3))


Changed it to include an action of setting a value of zero if either of the two system IDs used in the division formula had values values of zero:
IF([SI_Landlords_Contents_ResultBefore]=0 OR [SI_Landlords_Contents_CoverBefore]=0,0,(RoundUp(([SI_Landlords_Contents_ResultBefore]/([SI_Landlords_Contents_CoverBefore]/100))*(1+([RenewalRateLoad]/100)),3)))
If a formula is structured to divide one value by another you must take into account that one of those values may sometimes be zero - if this is not factored into the formula an error will occur when one or both values are zero so you need to add an IF condition to the formula to account for this possible occurrence and carry out another action. You would use the same format in both reports and rating files if you have any column formula that use the divide function.
[InsuredName_Value].ToUpper()​ To convert a field value to all upper case (in this case where the client name field system ID is [InsuredName]
Report type 'Cases Within Period' To report on all records that are currently on cover i.e. within their period of cover

 
VAR_Row.GetDate('Invoice Date').AddDays(60).ToString('dd/MM/yyyy') To add a particular number of days to a date value found in a previous column (use with 'Formula (no format)' columns

For example, if a column is needed to reflect that the premium is due 60 days after the record incepted
[Basic_3563_Cover]​

[Basic_3563_CoverBefore]​
It is possible to reflect the cover total of a cover group using the value seen to the bottom left of a cover group in the matrix, providing the 'This is coverage' option is checked on all sum insured calculation questions that are allocated within that cover group. It is not immediately obvious by using the 'inspect' option on the field you want to pull through - in this example the system ID looks as if it is [Cover_3563]
 
[PreviousAnswer_xxx_Result]
[PreviousAnswer_xxx_Rate]
[PreviousAnswer_xxx_Cover]
It can be used in rules, rating and docs - the only place where it can't be used is reports.  
IF(VAR_Row.GetDecimal("PostcodeLength")=7,[TradingAddress_Postcode_Value].Substring(3,4),[TradingAddress_Postcode_Value].Substring(4,4)) To pull through the last 3 digit of the postcode - see screenshot attached
(NOW - [Record Created Date]).Days Use with Formula (no format) to calculate the number of days before today that, in this case, a record was created

Can be used with other 'date' system IDs
[Record Inception Date].ToString("dd/MM/yyyy")

[Record Expiry Date].ToString("dd/MM/yyyy")
How to format the Record Inception Date and Expiry Date in the format dd/MM/yyyy eg. 01/11/2022
IF([Has Active Schedule]='True','True','False') Use within a formula column to identify if a policy has an active payment schedule attached
NOTE: If a record has more than one payment schedule attached to a record there will be a row of data displayed for the number of payment schedules. The solution is to either cancel the duplicate payment schedule so only one active schedule is present within each case, or remove the 'Has Active Schedule' field from the report to prevent multiple copies of records being included
[Insured_Address_Postcode].Substring(0,2) If a single page scheme doesnt have a hidden field that populates with only the first two characters of the postcode but the report requires it create a formula column using this formula, it's not as complex as for an MP scheme
Policy Import Ref or Inception Date Add one of these columns to an Aged Debts report, they will prevent the report sometimes erroring out when running - it doesnt happen all the time but this should stop it happening. The exclude form export box can be checked if the client doesnt need to see it 
[Record Last On Cover] This column header cannot be used in a Transaction type report, it will cause it to error out. If used within a formula column the report won't error out but the column value will be blank
##([TotalCommissionFromInsurer_Result]-[TotalCommission_IndexLevel0_Result]).ToString("C2")## Formula to work out the commission retained by the Broker after deduction of the Agent commission
BadBroker Reference to BadBroker can be found in the Agent Export report - not in any reports in the report area of a site. The column headed 'BadBroker' indicates if an agent is enabled / disabled - false means it's active, true means it's inactive
 
 

Suffixes for you system IDs

_Cover Numeric/Money - e.g. the amount entered in a Calculation question
_Value Text - e.g. the answer Yes/No
_Fee Numeric/Money - e.g. the Fee you've set some rows above in your rating file
_Result Numeric/Money - e.g. the result of your total Premium 'TotalPremium_Result'
i.e the obtained result of a % applied to £XX Sum Insured
_DateValue Date
_CoverBefore Pull through the previous record´s answer on a calculation question
_Rate Numeric/Money - e.g. the Rate you've set some rows above in your rating file
 
 

Email template - Property Scheme  (where do I build this?)

<table border="0" cellpadding="0" cellspacing="0" width="100%">
	<tbody>
		<tr>
			<td align="center" bgcolor="#f5f5f5">
			<table bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="600">
				<tbody>

					<!-- Header -->
					<tr>
						<td bgcolor="#1f3b73" style="padding:15px;">
						<table width="100%">
							<tr>
								<td>
									<img alt="[ClientName]" src="[ClientLogo]" style="display:block; margin:0 auto 15px auto; max-width:200px; height:auto;" />
								</td>
								<td align="center" style="font-family:Arial, sans-serif; font-size:16px; color:#ffffff;">
									<strong>Insurance Quotation</strong>
								</td>
							</tr>
						</table>
						</td>
					</tr>

					<!-- Intro -->
					<tr>
						<td style="padding:20px; font-family:Arial, sans-serif; font-size:14px;">
							Dear [ProposerName],<br><br>

							<strong style="font-size:18px;">Your Insurance Quotation</strong><br><br>

							Thank you for your enquiry. We are pleased to provide your quotation.
						</td>
					</tr>

					<!-- Quotation Summary -->
					<tr>
						<td style="padding:0 20px 20px 20px; font-family:Arial, sans-serif;">
							<strong>Quotation Summary</strong>

							<table border="1" bordercolor="#dddddd" cellpadding="8" cellspacing="0" width="100%" style="margin-top:10px;">
								<tr>
									<td width="50%">Premium (inc IPT)</td>
									<td align="right"><strong>##[TotalPremium_result].ToString("C2")##</strong></td>
								</tr>
								<tr>
									<td>Insurer</td>
									<td align="right">[InsurerName]</td>
								</tr>
								<tr>
									<td>Quote Reference</td>
									<td align="right">[PolicyId]</td>
								</tr>
							</table>
						</td>
					</tr>

					<!-- Demands & Needs -->
					<tr>
						<td style="padding:0 20px 20px 20px; font-family:Arial, sans-serif; font-size:14px;">
							<strong>Statement of Demands & Needs</strong><br><br>

							This quotation is based on your stated requirements:

							<table border="1" bordercolor="#dddddd" cellpadding="8" cellspacing="0" width="100%" style="margin-top:10px;">
								<tr>
									<td width="50%">Buildings</td>
									<td>##[BuildingsSICalc_Cover].ToString("C2")##</td>
								</tr>
								<tr>
									<td>Contents</td>
									<td>##[GeneralContentsSICalc_Cover].ToString("C2")##</td>
								</tr>
								<tr>
									<td>Perils</td>
									<td>[PerilsDescription]</td>
								</tr>
								<tr>
									<td>Business Interruption</td>
									<td>##[BIGrossProfitSICalc_Cover].ToString("C2")##</td>
								</tr>
								<tr>
									<td>Public Liability</td>
									<td>##[PLLimit_Cover].ToString("C2")##</td>
								</tr>
								<tr>
									<td>Employers’ Liability</td>
									<td>##[ELLimit_Cover].ToString("C2")##</td>
								</tr>
							</table>

							<br>
							<strong>Optional Covers (available on request):</strong><br>
							• Terrorism Cover<br>
							• Legal Expenses Cover
						</td>
					</tr>

					<!-- Documents -->
					<tr>
						<td style="padding:0 20px 20px 20px; font-family:Arial, sans-serif; font-size:14px;">
							<h3><strong>Documents Included</strong></h3>

							1. <strong>Quotation & Schedule</strong><br>
							2. <strong>Statement of Facts</strong><br>
							3. <strong>Policy Summary</strong><br>
							4. <strong>Terms of Business</strong><br>
							5. <strong>Policy Wording</strong>
						</td>
					</tr>

					<!-- Insurer -->
					<tr>
						<td style="padding:0 20px 20px 20px; font-family:Arial, sans-serif; font-size:14px;">
							<h3><strong>About the Insurer</strong></h3>

							This quotation is provided by <strong>[InsurerName]</strong>.<br><br>
						</td>
					</tr>

					<!-- Next Steps -->
					<tr>
						<td style="padding:0 20px 20px 20px; font-family:Arial, sans-serif; font-size:14px;">
							<strong>What To Do Next</strong><br><br>

							1. Review the documents carefully<br>
							2. Contact us to proceed with cover<br><br>

							<strong>Payment Options</strong><br><br>

							<strong>Card Payment:</strong><br>
							Call <strong>[ContactPhone]</strong> quoting reference <strong>[PolicyId]</strong><br><br>

							<strong>Bank Transfer:</strong><br>
							Use the details provided on your invoice and quote your reference<br><br>

							<strong>Direct Debit:</strong><br>
							Finance options may be available (subject to approval and additional cost)<br><br>

							For assistance, contact us:<br>
							<strong>[ContactEmail]</strong><br>
							<strong>[ContactPhone]</strong>
						</td>
					</tr>

					<!-- Sums Insured -->
					<tr>
						<td style="padding:0 20px 20px 20px; font-family:Arial, sans-serif; font-size:14px;">
							<h3><strong>About Your Sums Insured</strong></h3>

							You are responsible for ensuring sums insured are adequate. Underinsurance may reduce claim settlements.<br><br>

							Guidance:<br>
							• Buildings – Rebuild cost calculators<br>
							• Contents – Professional valuations recommended<br>
							• Specialist items – Regular revaluation advised
						</td>
					</tr>

					<!-- Disclosure -->
					<tr>
						<td style="padding:0 20px 20px 20px; font-family:Arial, sans-serif; font-size:14px;">
							<h3><strong>Disclosure – Important</strong></h3>

							This quotation is based on the information provided. You must disclose all material facts in line with the Insurance Act 2015.
						</td>
					</tr>

					<!-- Sign off -->
					<tr>
						<td style="padding:0 20px 30px 20px; font-family:Arial, sans-serif; font-size:14px;">
							Kind regards,<br><br>

							<strong>[ClientName]</strong><br><br>

							[ContactPhone]<br>
							[ContactEmail]
						</td>
					</tr>

				</tbody>
			</table>
			</td>
		</tr>
	</tbody>
</table>
 
 

Email template - Basic quotation (where do I build this?)

<table width="100%">
	<tbody>
		<tr>
			<td>[SiteLogo]</td>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td>Dear [FullClientName]</td>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td style="font-size:14pt; font-weight: bold; color:rgb(106, 53, 208)">Your Property Owners Insurance Quotation<br />
			Quote Reference: [PolicyReference]</td>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td>Thank you for your request for a quotation.</td>
		</tr>
		<tr>
			<td>Based on the information you have provided we have calculated a cost for your cover as follows:</td>
		</tr>
	</tbody>
</table>

<hr />
<table width="100%">
	<tbody>
		<tr>
			<td style="font-weight: bold; color:rgb(106, 53, 208)">Net Premium:</td>
			<td>£[TotalPremiumNet]</td>
		</tr>
		<tr>
			<td style="font-weight: bold; color:rgb(106, 53, 208)">IPT (at ##[IPT_Rate]##%):</td>
			<td>£[IPT]</td>
		</tr>
		<tr>
			<td style="font-weight: bold; color:rgb(106, 53, 208)">Policy Fee:</td>
			<td>£[PolicyFee]</td>
		</tr>
		<tr>
			<td style="font-weight: bold; color:rgb(106, 53, 208)">Total Gross Premium:</td>
			<td>£[TotalPremium]</td>
		</tr>
		<tr>
			<td colspan="2"></td>
		</tr>
	</tbody>
</table>

<hr />
<table width="100%">
	<tbody>
		<tr>
			<td>A full breakdown of calculated premiums and all details provided will be contained within the <i>Schedule</i> and <i>Statement of Fact</i> documents.</td>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td style="color:rgb(106, 53, 208)">Best regards,<br />
			SchemeServe</td>
		</tr>
	</tbody>
</table>
 
 

Agent statement (how do these work?)

<style type="text/css">body {
        margin: 0;
        padding: 0;
        font-family: Arial, Helvetica, sans-serif;
        color: #1f2937;
        background-color: #f4f6fb;
        font-size: 10pt;
        line-height: 1.4;
    }

    .wrapper {
        max-width: 1100px;
        margin: 0 auto;
        background-color: #ffffff;
        border: 1px solid #e5e7eb;
    }

    .header {
        padding: 24px 30px;
        border-bottom: 3px solid #6a35d0;
        background: linear-gradient(135deg, #ffffff 0%, #f5f3ff 100%);
    }

    .header table {
        width: 100%;
        border-collapse: collapse;
    }

    .header td {
        border: none;
        padding: 0;
        vertical-align: top;
    }

    .logo {
        max-width: 200px;
    }

    .company-name {
        font-size: 18pt;
        font-weight: bold;
        color: #6a35d0;
        margin-top: 8px;
    }

    .subtitle {
        font-size: 9pt;
        color: #6b7280;
    }

    .content {
        padding: 28px 30px;
    }

    .grid {
        width: 100%;
        border-collapse: separate;
        border-spacing: 0;
        margin-bottom: 24px;
    }

    .grid td {
        border: none;
        vertical-align: top;
    }

    .card {
        width: 48%;
        padding: 16px 18px;
        background-color: #f9fafb;
        border: 1px solid #e5e7eb;
        border-radius: 8px;
    }

    .card.right {
        margin-left: 4%;
        background-color: #f5f3ff;
        border-color: #ddd6fe;
    }

    .label {
        font-size: 8pt;
        font-weight: bold;
        text-transform: uppercase;
        color: #6b7280;
        margin-bottom: 6px;
    }

    .title {
        font-size: 22pt;
        font-weight: bold;
        color: #111827;
        margin-bottom: 6px;
    }

    .meta {
        font-size: 9pt;
        color: #6b7280;
    }

    .panel {
        margin-bottom: 24px;
        padding: 16px 18px;
        background-color: #fafafa;
        border: 1px solid #e5e7eb;
        border-left: 5px solid #6a35d0;
        border-radius: 8px;
    }

    .panel-title {
        font-weight: bold;
        font-size: 11pt;
        margin-bottom: 10px;
    }

    .note {
        font-size: 8.5pt;
        color: #92400e;
        margin-bottom: 10px;
    }

    .panel table {
        width: 100%;
        border-collapse: collapse;
    }

    .panel td {
        border: none;
        padding: 4px 8px 4px 0;
        font-size: 9pt;
    }

    .panel .key {
        font-weight: bold;
        width: 160px;
    }

    .data-table {
        width: 100%;
        border-collapse: collapse;
    }

    .data-table th {
        background-color: #6a35d0;
        color: #ffffff;
        padding: 10px 8px;
        font-size: 8pt;
        text-align: left;
        border: 1px solid #5b2bb5;
        white-space: nowrap;
    }

    .data-table td {
        padding: 8px;
        font-size: 8pt;
        border: 1px solid #e5e7eb;
    }

    .data-table tbody tr:nth-child(even) {
        background-color: #fafafa;
    }

    .data-table tbody tr:hover {
        background-color: #f3f0ff;
    }

    .amount {
        text-align: right;
        white-space: nowrap;
    }

    .footer {
        padding: 18px 30px;
        border-top: 1px solid #e5e7eb;
        background-color: #f9fafb;
        font-size: 8pt;
        color: #6b7280;
    }
</style>
<div class="wrapper"><!-- HEADER -->
<div class="header">
<table>
	<tbody>
		<tr>
			<td style="width: 60%;"><img class="logo" src="[Site.LogoImage]" />
			<div class="company-name">Your Company Name</div>

			<div class="subtitle">Statement & Remittance Advice</div>
			</td>
			<td style="width: 40%; text-align: right;">
			<div class="label">Issued By</div>

			<div style="font-weight: bold;">[Site.Name]</div>
			</td>
		</tr>
	</tbody>
</table>
</div>
<!-- CONTENT -->

<div class="content"><!-- TOP CARDS -->
<table class="grid">
	<tbody>
		<tr>
			<td class="card">
			<div class="label">Statement To</div>

			<div style="font-weight: bold;">[Agent.Name]</div>

			<div style="margin-top: 6px; white-space: pre-line;">[AgentStatement.AgentAddress]</div>
			</td>
			<td class="card right">
			<div class="title">Statement</div>

			<div class="meta"><strong>Account:</strong> [Agent.Name]<br />
			<strong>Type:</strong> Agent Statement<br />
			<strong>Reference:</strong> [Statement.Reference]</div>
			</td>
		</tr>
	</tbody>
</table>
<!-- BANK DETAILS -->

<div class="panel">
<div class="panel-title">Remittance Details</div>

<div class="note">Sample bank details shown for template/demo purposes only.</div>

<table>
	<tbody>
		<tr>
			<td class="key">Bank Name:</td>
			<td>Example Bank Ltd</td>
		</tr>
		<tr>
			<td class="key">Account Name:</td>
			<td>Client Account</td>
		</tr>
		<tr>
			<td class="key">Sort Code:</td>
			<td>12-34-56</td>
		</tr>
		<tr>
			<td class="key">Account Number:</td>
			<td>12345678</td>
		</tr>
		<tr>
			<td class="key">IBAN:</td>
			<td>GB00 EXAM 1234 5612 3456 78</td>
		</tr>
		<tr>
			<td class="key">SWIFT:</td>
			<td>EXAMGB2L</td>
		</tr>
		<tr>
			<td class="key">Reference:</td>
			<td>Use statement / case reference</td>
		</tr>
	</tbody>
</table>
</div>
<!-- DATA TABLE -->

<table class="data-table">
	<thead>
		<tr>
			<th>Inception</th>
			<th>Age (d)</th>
			<th>Case</th>
			<th>Type</th>
			<th>Status</th>
			<th>Client</th>
			<th>Currency</th>
			<th>Premium</th>
			<th>IPT</th>
			<th>Total Premium</th>
			<th>Commission</th>
			<th>Policy Fee</th>
			<th>Due</th>
			<th>Paid</th>
		</tr>
	</thead>
	<tbody><!--[AgentStatement]-->
		<tr>
			<td>##[TransactionDate]##</td>
			<td>##[Statement.AgeInDays]##</td>
			<td>##[Statement.CaseId]##</td>
			<td>##[Statement.Type]##</td>
			<td>##[Statement.Status]##</td>
			<td>##[Statement.Client]##</td>
			<td>##[Statement.Currency]##</td>
			<td class="amount">##[Statement.Premium]##</td>
			<td class="amount">##[Statement.IPT]##</td>
			<td class="amount">##[Statement.TotalPremium]##</td>
			<td class="amount">##[Statement.Commission]##</td>
			<td class="amount">##[Statement.PolicyFee]##</td>
			<td class="amount">##[Statement.Due]##</td>
			<td class="amount">##[Statement.AmountPaid]##</td>
		</tr>
		<!--[/AgentStatement]-->
	</tbody>
</table>
</div>
<!-- FOOTER -->

<div class="footer">This statement is provided for reconciliation purposes. Please ensure all payments quote the correct reference.<br />
<br />
For queries, contact your accounts team.</div>
</div>
 
 

Quotation Summary (when is this used?)

<div><style type="text/css"> 
div {font-size:10pt; color: rgb(36, 32, 33); font-family: "Calibri" !important;} 
table tr td {padding-top: 4px; font-size:10pt !important; font-family: "Calibri" !important;} 
p {font-size:10pt; color: rgb(36, 32, 33); font-family: "Calibri" !important;} 
span {font-size:10pt; font-family: "Calibri" !important;}
.header {font-size:16pt; color: rgb(50, 31, 97); font-family: "Calibri" !important;}
.sheadertable {font-size:10pt; color: rgb(50, 31, 97); font-family: "Calibri" !important;} 
.sheader {font-size:12pt; color: rgb(50, 31, 97); font-family: "Calibri" !important;} .smalltext {font-size:9pt; font-family: "Calibri" !important;} 
.underwriting .endorsementtitle {font-size:10pt !important; rgb(36, 32, 33); font-family: "Calibri" !important;}
.underwriting .endorsementbody p {font-size:10pt !important; rgb(36, 32, 33); font-family: "Calibri" !important;}
.underwriting-none {font-size:10pt !important; rgb(36, 32, 33); font-family: "Calibri" !important;}
.Capital {text-transform: capitalize;}
.headerblack {font-size:16pt; font-family: "Calibri" !important; font-weight: bold !important;}
.Bold {font-family: "Calibri" !important;font-weight: bold !important;}
div.dborder{border:0.7px solid black;padding-top:4px;padding-bottom:4px;padding-left:4px;  margin-top: 10px; margin-right:25px; margin-left:25px}
.smalltext {font-size:8pt; font-family: "Calibri" !important;}
div.dborderBott {border-bottom:0.7px solid black; border-right:0.7px solid black;border-left:0.7px solid black; padding-top:4px; padding-bottom:4px; padding-left:4px; margin-right:25px; margin-left:25px}
.tTable tr td {padding-top: 0px; padding-bottom: 0px;font-size:10pt !important; font-family: "Calibri" !important;} 
</style></div>
<div>&nbsp;</div>
<div style="text-align: center;">&nbsp;[SiteLogo]</div>
<div style="text-align: center;">&nbsp;</div>
<div style="text-align: center;">&nbsp;</div>
<div>&nbsp;&nbsp;</div>
<div style="text-align: center;" class="sheader"><span style="font-size: 14pt;"><strong>Many thanks for the completed online application.</strong></span></div>
<div style="text-align: center;"><span style="font-size: 14pt;">&nbsp;</span></div>
<div style="text-align: center;"><span style="font-size: 14pt;">&nbsp;</span></div>
<div style="text-align: center;" class="sheader"><span style="font-size: 14pt;">Your quotation reference is <strong>[PolicyReference]</strong>.  This quote is valid for 30 days.</span></div>
<div style="text-align: center;"><span style="font-size: 14pt;">&nbsp;</span></div>
<div style="text-align: center;" class="sheader"><span style="font-size: 14pt;">A breakdown of the premium for the cover requested is shown below:</span></div>
<div style="text-align: center;" class="sheader"><span style="font-size: 14pt;">&nbsp;</span></div>
<div><span style="font-size: 14pt;">&nbsp;</span></div>
<div><span style="font-family: Arial; font-size: 14pt;">&nbsp;</span></div>
<table width="100%" cellspacing="0" cellpadding="1" border="0">
	<tbody>
		<tr>
			<td width="30%"><span style="font-family: Arial; font-size: 14pt;">Period of Insurance:</span></td>
			<td width="70%"><span style="font-family: Arial; font-size: 14pt;">From [InceptionDate] to&nbsp;[ExpiryDate] both days inclusive</span></td>
		</tr>
		<tr>
			<td><span style="font-family: Arial; font-size: 14pt;">&nbsp;</span></td>
			<td><span style="font-family: Arial; font-size: 14pt;">&nbsp;</span></td>
		</tr>
		<tr>
			<td><span style="font-family: Arial; font-size: 14pt;">Annual Premium:</span></td>
			<td><span style="font-family: Arial; font-size: 14pt;">##[TotalPremiumNet_Result].ToString(&quot;C2&quot;)##</span></td>
		</tr>
		<tr>
			<td><span style="font-family: Arial; font-size: 14pt;">Policy Fee:</span></td>
			<td><span style="font-family: Arial; font-size: 14pt;">##[PolicyFee_Result].ToString(&quot;C2&quot;)##</span></td>
		</tr>
		<tr>
			<td><span style="font-family: Arial; font-size: 14pt;">Total Annual Premium:</span></td>
			<td><span style="font-family: Arial; font-size: 14pt;">##[TotalPremium_Result].ToString(&quot;C2&quot;)##</span></td>
		</tr>
		<tr>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td><span style="font-family: Arial; font-size: 14pt;">Insured:</span></td>
			<td><span style="font-family: Arial; font-size: 14pt;">[ClientName]&nbsp;</span></td>
		</tr>
		<tr>
			<td><span style="font-family: Arial; font-size: 14pt;">&nbsp;</span></td>
			<td><span style="font-family: Arial; font-size: 14pt;">&nbsp;</span></td>
		</tr>
	</tbody>
</table>
<div><span style="font-family: Arial; font-size: 14pt;"><br />
</span>
<div>&nbsp;</div>
</div>
<div>&nbsp;</div>
 
 

Quotation Summary Referral (when is this used?)

<div><style type="text/css"> 
div {font-size:10pt; color: rgb(36, 32, 33); font-family: "Calibri" !important;} 
table tr td {padding-top: 4px; font-size:10pt !important; font-family: "Calibri" !important;} 
p {font-size:10pt; color: rgb(36, 32, 33); font-family: "Calibri" !important;} 
span {font-size:10pt; font-family: "Calibri" !important;}
.header {font-size:16pt; color: rgb(50, 31, 97); font-family: "Calibri" !important;}
.sheadertable {font-size:10pt; color: rgb(50, 31, 97); font-family: "Calibri" !important;} 
.sheader {font-size:12pt; color: rgb(50, 31, 97); font-family: "Calibri" !important;} .smalltext {font-size:9pt; font-family: "Calibri" !important;} 
.underwriting .endorsementtitle {font-size:10pt !important; rgb(36, 32, 33); font-family: "Calibri" !important;}
.underwriting .endorsementbody p {font-size:10pt !important; rgb(36, 32, 33); font-family: "Calibri" !important;}
.underwriting-none {font-size:10pt !important; rgb(36, 32, 33); font-family: "Calibri" !important;}
.Capital {text-transform: capitalize;}
.headerblack {font-size:16pt; font-family: "Calibri" !important; font-weight: bold !important;}
.Bold {font-family: "Calibri" !important;font-weight: bold !important;}
div.dborder{border:0.7px solid black;padding-top:4px;padding-bottom:4px;padding-left:4px;  margin-top: 10px; margin-right:25px; margin-left:25px}
.smalltext {font-size:8pt; font-family: "Calibri" !important;}
div.dborderBott {border-bottom:0.7px solid black; border-right:0.7px solid black;border-left:0.7px solid black; padding-top:4px; padding-bottom:4px; padding-left:4px; margin-right:25px; margin-left:25px}
.tTable tr td {padding-top: 0px; padding-bottom: 0px;font-size:10pt !important; font-family: "Calibri" !important;} 
</style></div>
<div style="text-align: center;">&nbsp;</div>
<div style="text-align: center;">&nbsp;&nbsp;[SiteLogo]</div>
<div>&nbsp;</div>
<table width="100%" cellspacing="0" cellpadding="1" border="0">
	<tbody>
		<tr>
			<td style="padding-left: 20px; padding-right: 20px; text-align: center;" class="sheader"><span style="font-size: 12pt; line-height: 20px;"><strong>Your quotation has been referred to underwriters for consideration.</strong></span></td>
		</tr>
		<tr>
			<td style="padding-left: 16px; padding-right: 16px; text-align: center;">&nbsp;</td>
		</tr>
		<tr>
			<td style="padding-left: 16px; padding-right: 16px; text-align: center;" class="sheader"><span style="font-size: 12pt;">If you have any queries please do not hesitate to </span><a href="https://sales.schemeserve.com/ContactUs/"><span style="font-size: 12pt;">contact us</span></a></td>
		</tr>
		<tr>
			<td style="padding-left: 16px; padding-right: 16px; text-align: center;">&nbsp;</td>
		</tr>
		<tr>
			<td style="padding-left: 16px; padding-right: 16px; text-align: center;" class="sheader"><span style="font-size: 12pt;">IMPORTANT: Your referral reference is <strong>[PolicyReference]</strong></span></td>
		</tr>
		<tr>
			<td style="padding-left: 16px; padding-right: 16px; text-align: center;">&nbsp;</td>
		</tr>
	</tbody>
</table>
<div style="text-align: left;" class="sheader">&nbsp;</div>
<div style="text-align: left;" class="sheader">&nbsp;</div>
 
 

CSS for your endorsements (why do I need this?)

<p><style type="text/css">
ul.underwriting li .endorsementtitle { font-weight: bold !
important;}span.endorsementidentifier { font-weight: bold !important;}
div {font-size:9pt !important;}
table tr td {font-size:9pt !important;}
table tr td div {font-size:9pt !important; }
table tr td span {font-size:9pt !important; }
.underwriting .endorsementtitle {font-size:9pt; strong !important}
.underwriting .endorsementbody p {font-size:9pt !important; }
.underwriting-none {font-size:9pt !important; }
</style></p>
<table width="100%" cellspacing="0" cellpadding="1" border="0">
<tbody>
<tr>
<td width="100%"><strong>Endorsements:</strong></td>
</tr>
<tr>
<td width="100%">&nbsp;</td>
</tr>
<tr>
<td width="100%">
<div>[Underwriting.Memorandum]</div>
</td>
</tr>
</tbody>
</table>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<p>&nbsp;</p>
 
 

Claims table in documents

<div>[GroupBy Field=&quot;ClaimsDetails&quot;]
<table style="display:##IF([ClaimsYN_Value]='Yes','','none')##" width="100%">
	<tbody>
		<tr>
			<td class="Main_Text" width="30%">Address at which claim/loss occurred</td>
			<td class="Main_Text" width="15%">Date</td>
			<td class="Main_Text" width="20%">Type</td>
			<td class="Main_Text" width="20%">Status</td>
			<td class="Main_Text" width="15%">Cost</td>
		</tr>
		<tr>
			<td class="Main_Text">##[ClaimsDetails_Premises_Value]##</td>
			<td class="Main_Text">##[ClaimsDetails_Date_DateValue]##</td>
			<td class="Main_Text">##[ClaimsDetails_Type_Value]##</td>
			<td class="Main_Text">##[ClaimsDetails_Status_Value]##</td>
			<td class="Main_Text">##[ClaimsDetails_Cost_Cover].ToString(&quot;C0&quot;)##</td>
		</tr>
		<tr>
			<td class="Main_Text" colspan="4">&nbsp;</td>
		</tr>
	</tbody>
</table>
[/GroupBy]</div>