Insurance Services
General Insurance Services
Policy API Basics
Endorsement API Sample JSON Creation
Sidebar On this page

Endorsement JSON Example

note

The endorsement effective date must be between the policy effective date and expiry date (within the policy’s period of insurance).

BIE (Basic Information Endorsement)

BIE JSON Example

{
"EndoEffectiveDate": "2019-10-29T00:00:00",
// highlight-next-line
"EndoType": "1",
"IsAdminChange": "Y",
// highlight-next-line
"NewPolicy":{{modified_base_on_latest_policy}},
"PolicyNo": "{{PolicyNo}}",
"ProductId": "{{ProductId}}",
"ProductCode": "{{ProductId}}",
"EndorsementPaymentInfoList": [
{
"PayModeCode": "30",
"IsInstallment": "Y",
"InstallmentType": "1"
}
],
"IsAdminChange": "N"
}

BIE Key Field Description

Field DescriptionDetails
PolicyNo.PolicyNo. is required for all endorsements.
ProductCodeIt is the same as that of the current policy.
ProductIdIt is the same as that of the current policy.
EndoTypeSome of the EndoTypes are as below:
  • 1 - BIE
  • 3 - Cancellation
  • 17 - Reinstatement
  • 20 - POI Extension/Shortening
For more options, see CodeTable-EndorsementType.
EndorsementPaymentInfoListPayment information as new business
EndoEffectiveDateEffective date for the endorsement
IsAdminChangeIf IsAdminChange=N, for BIE, the system will call NB rating, and then do endorsement rating. After calling rating, in rating tracking, there will be 2 records for each calculation, 1 for new business, another for endorsement.
If IsAdminChange=Y, for BIE, the system will not call the NB rating, and just do endorsement rating. After calling rating, in rating tracking, there will be only 1 record for each calculation and 1 for endorsement.
If some non-rating factors are changed for the BIE, you can set the IsAdminChange=Y.

NewPolicy (Super Important)

If any policy details need to be updated, please update the information under the NewPolicy. The NewPolicy structure is the same as that of Policy.

  1. The NewPolicy is required when doing BIE. It should be changed based on the latest Policy. To create the NewPolicy, we always load the latest Policy, copy it to the NewPolicy, and then modify the NewPolicy as required. To load the latest Policy, please try API {{server}}/proposal/core/proposal/v1/load:
  • {{server}}/proposal/core/proposal/v1/load?proposalNo={{proposalNo}}
  • {{server}}/proposal/core/proposal/v1/load?quotationNo={{quotationNo}}
  • {{server}}/proposal/core/proposal/v1/load?policyNo={{policyNo}}
  • {{server}}/proposal/core/proposal/v1/load?policyId={{policyId}}
  1. BIE Scenario - Add or Delete Cover or Benefit or Risk

In GIMO, we have the FLAG-PolicyStatus to label the object status.

  • 2: Added
  • 4: Deleted/Removed

The status is set based on the last issued Policy/Endorsement, not the last change. (This means that when a 2nd Endorsement is issued, it will compare with the first issued endorsement.) For Example, the latest policy is covered with CTA and CTB:

"PolicyCoverageList": [
{
"SumInsured": 225,
"ProductElementCode": "TMEB004",
"PolicyStatus": 2,
"IsAutoAttachedForm": "Y",
"IsFinalLevelCt": "Y",
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
},
{
"SumInsured": 1000,
"ProductElementCode": "CTB",
"PolicyStatus": 2,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
}
]
  • PolicyElementId,PolicyId,ProductElementId,SequenceNumber,VersionSeq,IsAutoAttachedForm,IsFinalLevelCt are gotten by load API.
NB Issued1st Endor 1st Save1st Request 1st Endor2nd Save2nd request
CT Akeepkeepkeepkeep
CT BdeletePolicystatus=4Revert deleteKeep it as issued
CT CaddAdd CTskeepAdd CT

To add Cover/Benefit/Risk is to set the PolicyStatus =2 or no input.

{
"SumInsured": 1000,
"ProductElementCode": "CTC",
}

Or

{
"SumInsured": 1000,
"ProductElementCode": "CTC",
// highlight-next-line
"PolicyStatus": 2
}

To delete Cover/Benefit/Risk is to set the PolicyStatus=4.

{
"SumInsured": 1000,
"ProductElementCode": "CTB",
// highlight-next-line
"PolicyStatus": 4,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
}

When doing endorsement, the request data JSON should be:

{
"SumInsured": 225,
"ProductElementCode": "TMEB004",
"PolicyStatus": 2,
"IsAutoAttachedForm": "Y",
"IsFinalLevelCt": "Y",
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
},
{
"SumInsured": 1000,
"ProductElementCode": "CTB",
"PolicyStatus": 2,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": 4,
"VersionSeq": 1
},
{
"SumInsured": 1000,
"ProductElementCode": "CTC"
}

After endorsement is issued, the deleted objects’ PolicyStatus will be updated to 3.

{
"SumInsured": 225,
"ProductElementCode": "TMEB004",
"PolicyStatus": 2,
"IsAutoAttachedForm": "Y",
"IsFinalLevelCt": "Y",
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": {{SequenceNumber}},
"VersionSeq": {{VersionSeq}}
},
{
"SumInsured": 1000,
"ProductElementCode": "CTB",
// highlight-next-line
"PolicyStatus": 3,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": {{SequenceNumber}},
"VersionSeq": {{VersionSeq}}
},,
{
"SumInsured": 1000,
"ProductElementCode": "CTC",
"PolicyStatus": 2,
"PolicyElementId": {{PolicyElementId}},
"PolicyId": {{PolicyId}},
"ProductElementId": {{ProductElementId}},
"SequenceNumber": {{SequenceNumber}},
"VersionSeq": {{VersionSeq}}
}

OldPolicy

It will be automatically attached in the response when calling endorsement/creation or endorsement/quotation.

Cancellation

Cancellation JSON Example


{
"EndoEffectiveDate": "2019-10-29T00:00:00",
// highlight-next-line
"EndoType":"3",
"IsAdminChange": “Y",
"CauseType": “C01",
"IsHasClaim": “Y",
"CancelType":"31",
"CancelReasonCode":"Cancel Reason",
"OtherCancelReason":"Other Cancel Reason",
"PolicyNo":"{{PolicyNo}}",
"ProductCode": "{{ProductCode}}",
"ProductId": {{ProductId}},
"EndorsementPaymentInfoList": [
{
"PayModeCode": "30",
"IsInstallment": "Y",
"InstallmentType": "1"
}
]
}

Please note that NewPolicy & OldPolicy is not required.

Cancellation Key Field Description

  • CancelType

31 - from start/injection

32 - Midway

  • CancelReasonCode

For more options, see CodeTable-EndorsementCancellationReason.

Cancellation Policy Expiry Date update

For cancellation endorsement, after ‘Issue Endo’ API is called, the expiry date will set to endorsement effective date, this logical is same for cancellation since inception and in midway.

When set policy expiry date to effective date, the policy period is 0 day, not 1 day, the expiry date time point is not included Set the policy period to endo effective date can ensure the policy insurance term is consistent with the policy due premium.

If user want to record the original policy expiry date, user can add new dynamic field at policy level, and set it to policy expiry date when issue policy.

Reinstatement

Reinstatement JSON Example

{
"EndoEffectiveDate": "2019-10-29T00:00:00",
// highlight-next-line
"EndoType": "17",
"PolicyNo": "{{PolicyNo}}",
"ProductCode": "{{ProductCode}}",
"ProductId": {{ProductId}},
"EndorsementPaymentInfoList": [
{
"PayModeCode": "30",
"IsInstallment": "Y",
"InstallmentType": "1"
}
]
}

Please note that NewPolicy & OldPolicy is not required.

POI Extension/Shorten/Move

POI JSON Example

{
"EndoEffectiveDate": "2020-07-30T00:00:00",
// highlight-next-line
"EndoType": "20",
"NewPolEffDate": "2020-07-30T23:59:59",
"NewPolExpDate": "2021-04-25T23:59:59",
"OldPolExpDate": "2020-09-12T23:59:59",
"PoiAltType": 201,
"PoiAltReason": "ABC",
"PolicyNo": "{{PolicyNo}}",
"ProductId": "{{productId}}",
"ProductCode": "{{productCode}}",
"EndorsementPaymentInfoList": [
{
"PayModeCode": "30",
"IsInstallment": "Y",
"InstallmentType": "1"
}
]
}

Please note that NewPolicy & OldPolicy is not required.

POI Key Field Description

  • PoiAltType

201:extension

202:shortening

203:move

  • PoiAltReason

Please define it on your own if needed.

  • NewPolEffDate

New Effective Date of the policy

  • NewPolExpDate

New Expiration Date of the policy

  • OldPolExpDate

Current Expiration Date of the policy

POI Move Logic

Before Version 26.01 We can only let users change the policy expiry date to shorten or extend the policy; modifying the effective date would have too great an impact on historical versions.

After Version 26.01 Starting from version 26.01, POI Move supports adjusting the effective date to reposition the POI. However, the following restrictions still apply:

  • Sequence Constraint: POI Move must be the first endorsement processed on the policy. If any prior endorsements exist, the API will return an error.
  • Effective Date: The policy effective date can be modified. The endorsement effective date must equal the policy new effective date.
  • Expiry Date: Atomic API layer does not perform validation on the Expiry Date field; tenants need to extend the validation logic via UI or tenant-side code or rating or rule configurations, covering special scenarios such as non-full-year periods and leap months. The Expiry Date is calculated from the new Effective Date plus the fixed POI, and the premium generated by endorsement must be 0.
  • EndoSubType: Backward compatibility is maintained for the SubEndoType tenant field used by existing tenants. For new tenants requiring endorsement, it is recommended to prioritize the platform field EndoSubType for representing the endorsement sub-type, for example: “EndoSubType”: “203”.

Summary of Restrictions

FeatureRestriction
Effective Date✅ Adjustable (must equal policy new effective date)
Expired Date❌ Tenant extended logic (ensure POI unchanged)
Other Policy Info❌ Not modifiable
Endorsement OrderMust be the first endorsement on the policy
Field RequirementEndoSubType is recommended (while SubEndoType remains available)

Undo Endorsement

Undo Endorsement JSON Example

{
"EndoEffectiveDate": "{{NowDate}}",
// highlight-next-line
"EndoType":"37",
// highlight-next-line
"SourceEndoId":"{{EndoId}}",
"UndoReason":"Undo Reason",
"EndorsementPaymentInfoList": [{
"PayModeCode": "1",
"IsInstallment": "Y",
"InstallmentType": "1"

}],
"PolicyNo":"{{PolicyNo}}",
"ProductId": "{{productId}}",
"ProductCode": "{{productCode}}"
}

Please note that NewPolicy & OldPolicy is not required.

Undo Key Field Description

  • SourceEndoId

The endorsement to be undone

  • UndoReason

The reason to be undone

Rating

There are APIs supporting premium calculation:

  • {{server}}/endo/core/endo/v1/calculate
  • {{server}}/endo/core/endo/v1/quotation

The logic description document link is endorsement rating introduction.

Nil Financial Impact

  • IsAdminChange.val=“N”
  • Return 0 to related Premium fields

Additional Premium/Reduction in Premium

  • IsAdminChange.val=“Y”
  • Re-calculate Premium
  • Compare/Diff current premium with the last version (BeforeRevisionId)
  • Get Delta Premium
    • Additional-Positive
    • Reduction-Negative

Validation

The validated APIs support to call the rules for validation, and to compare the data with the market product structures and technical product DD, fields and codetable:

  • {{server}}/endo/core/endo/v1/validate?eventCode=

Please map target rules to rule groups, and map the groups to events. Then call the APIs by related event codes.

If the conditions are met, a message will pop up with the unmatched information:

  1. Rules are fired.
  2. The value of field does not match the defined data type.
  3. The value is not in codetable.
  4. The value length is not the same as defined.
  5. The structure is not the same as that of the market product. For example, the benefit may be assigned an incorrect coverage or may not be defined within the market product.
  6. Some systems require rules. For example, PolicyLob should be there, with Risk nested beneath it.

FAQ

If I want to change a field after policy is issued but I don’t want to create new endorsemnet, what can I do?

Normally, if you want to change any field after policy is issued, you need to create new endorsement to achieve it.

In some special case when user really don’t want to create any endorsement, you need to define such field as non-version related and adopt seperate API to achieve it.

User can refer to Policy Non Version Information guide for more information.


Feedback
Was this page helpful?
|
Provide feedback