The Create and bind a quote tutorial walks you through the inception of a policy in BriteCore. It also describes how different services in BriteCore work together in creating a new policy. In Retrieve and display policy information, we cover more information on how policies are managed in BriteCore. The most important thing to note is that while BritePolicies APIs act as a hub for all policy-related information, it's the BriteQuote APIs that handle all policy transaction services. This tutorial will walk you through the BriteQuote API endpoints that handle policy transactional services, including:
- Creating or updating endorsements.
- Deleting endorsements.
- Canceling a policy.
- Reinstating a cancellation.
We will cover some key concepts, policy transactions in BriteCore, the policy lifecycle, and the endorsements process flow. We also highlight which API endpoints to use for each transaction.
Key concepts
- Cancellation: A coverage no longer in effect.
- Cancellation pending: Increase in risk/failure to pay on time.
- Commit date: The date the revision (or endorsement) is put into force.
- Coverage: A guarantee of financial restoration in the event of a loss.
- Endorsement: A change to a policy, such as increasing coverage, decreasing coverage, or changing the mortgagee. Within BriteCore, endorsements are referred to as revisions.
- Endorsement transactions: Revisions to the in-force policies.
- Effective date: The date an insurance policy becomes active.
- Expiration: End of the term without a renewal offer.
- In-force policies: Insurance policies that are currently under contract.
- Non-renewal: No offer to extend coverage for another term.
- Policy: A contract that guarantees insurance coverage for a given duration of time.
- Premium: Money paid by a policyholder to an insurance carrier in exchange for insurance.
- Reinstatement: Previously canceled coverage is now back in effect.
- Renewal: An offer to extend coverage for another term.
- Revision: A BriteCore-specific term that refers to a point-in-time snapshot of the policy contract created when there is a substantive change to the contract. Within BriteCore, endorsements are referred to as revisions.
- Risk: An asset protected by insurance.
- State: Describes a step in a particular transactional workflow process, such as In progress, Approved, Rejected, or Abandoned.
- Status: The current status of the policy contract in relation to specific workflows, such as Active, Canceled, and Expired.
- Transaction: A point-in-time action that results in a document exchange among parties, such as agents, insureds, and underwriters. Not every transaction is a revision.
- Straight-through processing: Electronically streamline and process information across multiple points.
Policy transactions in BriteCore
Table 1 summarizes the policy transactions in BriteCore with their states, status, and related documents.
Table 1: Policy transactions.
Policy Transaction | Definition | Creates a Revision? | Status | States | Related Documents |
Quote | Agent/underwriter initiates an inquiry about a risk. | N/A | Quote | -In Progress -Abandoned -In Review -Approved -Rejected - Bound |
Quote Summary / Policy Application |
New business | Issued business | Yes | In Force or Active | WIP new business is a quote. | Declaration, Billing Statements, ID Cards (auto) |
Endorsement | Change to the contract | Yes | In Force or Active | -In Progress -Abandoned -In Review -Approved -Rejected - Bound |
Amended) Declaration, Endorsement Summary |
Cancellation Pending | Increase in risk/failure to pay on time | No, there’s no material change to the contract. Only an intent to cancel is indicated via status change. | In Force > Cancellation Pending | N/A | Notice of Cancellation Non-Payment of Premium, Notice of Cancellation (NOIC) |
Rescission | Rescind a cancellation pending | No, there’s no material change to the contract. The change is indicated via status. | In Force or active | N/A | N/A Continuation of Coverage - NonPay, Continuation of Coverage |
Cancellation | Coverage is no longer in effect | Yes | Canceled | N/A | Confirmation of Cancellation, Return Premium Notice |
Reinstatement | Previously canceled coverage is now back in effect | Yes, as this would replace the cancellation revision | In Force or Active | N/A | Notice of Reinstatement |
Renewal | Offer to extend coverage for another term | Yes | In Force or Active | -In Review -Not in Review |
(Renewal) Declaration, Renewal Offer, ID Cards (auto) |
Non-Renewal | No offer to extend coverage for another term | No, there’s no material change to the contract. The change is indicated via status. | In Force > Non-renewal | N/A | Notice of Non-Renewal |
Expiration | End of the term without a renewal offer | Yes | Expired | N/A | Confirmation of Cancellation |
Rewrite | A new policy contract copied from a previous contract | Yes, but would be a cancellation revision for policy 1 and a new business/renewal revision for policy 2. | Canceled | N/A | Confirmation of Cancellation, Declaration |
Policy lifecycle
In BriteCore, a policy’s status depends on where it is in the policy lifecycle. Figure 1 outlines a policy’s lifecycle and the possible status points throughout.
Figure 1: A policy’s lifecycle and the possible status points throughout.
Sample endorsement process flow
You can set your own workflows and rules around policy endorsements. Figure 2 shows a sample process flow of handling endorsements. Figure 2: Sample process flow of handling endorsements.
Select BriteAPI endpoints to endorse, cancel, or archive your policy
Step 1: Get a security token
You will need to request anID
and Secret
to use OAuth 2.0. For more information, refer to How do I get started?
Note: Blocks of code are hidden by default to make the page more navigable. Select View code and Hide code to view or hide these sections as needed.
Step 2: List all quotes
Use ListQuote endpoint (/quote/
) to get a list of all quotes. You will use the quote number from this list to retrieve policy details in the next step.
Sample request
curl --request GET \
--url '/quote/?=' \
--header 'authorization: '
Sample response
"data": [
{
"type": "quotes",
"id": "eebac72e-42d5-45cf-bc98-474f3bf6befb",
"attributes": {
"quote_number": "Q-personalAutoCW-2020-175",
"status": "Approved",
"policy_state": {
"policy": {
"inception_date": "2020-07-17",
"number": ""
},
"term": {
"effective_date": "2020-07-17",
"expiration_date": "2021-07-17"
},
"revision": {
"revision_date": "2020-07-17",
"description": "New Policy"
}
},
"product_name": "personalAutoCW",
"product_version": "eaa6cb9f-4602-4c8e-9bbc-b064755143bf",
"product_label": "Personal Auto - Countrywide",
"is_bound": false,
"submitted_for_review_date": "2020-07-17T13:36:59.887894Z",
"date_added": "2020-07-17T13:29:48.045805Z"
},
"relationships": {
"root_risk_quote": {
"data": {
"type": "risk-quotes",
"id": "6bbe51ee-10bf-4a43-9db2-48cb71178cc9"
}
},
"agency": {
"data": null
},
"agents": {
"data": [
{
"type": "quote-contacts",
"id": "99707eb7-c832-4b9b-8e5b-a480d0fccca4"
}
]
},
"owner": {
"data": {
"type": "contacts",
"id": "975860eb-dbd8-4561-ac67-79594e202962"
}
},
"named_insured": {
"data": {
"type": "quote-contacts",
"id": "2eabd2ba-23b4-4734-88bb-91f21f87fae8"
}
}
}
}
Step 3: Endorse your policy
To endorse policies, call the createQuote endpoint (/quote/
) with a payload that contains:
{
transaction_type: "endorsement"
}
The quote_number
, effective_date
, and expiration_date
are required parameters. The response returns an updated quote number.
Sample request
curl --request POST \
--url /quote/ \
--header 'authorization: ' \
--header 'content-type: application/json' \
--data '
{
"effective_date": "2020-07-31",
"expiration_date": "2020-07-17",
"transaction_type": "endorsement",
"source_quote_number": "Q-personalAutoCW-2020-172"
}
Sample response
{
"id": "43e960e0-0359-49d5-833d-15b111e617d4",
"quote_number": "Q-personalAutoCW-2020-180",
"transaction_type": "endorsement",
"source_quote_number": "Q-personalAutoCW-2020-172",
"status": "In Progress",
"policy_state": {
"policy": {
"inception_date": "2020-07-31",
"number": ""
},
"term": {
"effective_date": "2020-07-31",
"expiration_date": "2020-07-17"
},
"revision": {
"revision_date": "2020-07-31",
"description": "New Policy"
}
},
"root_risk_quote_id": "727fad9d-989c-4fa8-8138-6d6ef814718b",
"product_name": "personalAutoCW",
"product_version": "eaa6cb9f-4602-4c8e-9bbc-b064755143bf",
"product_label": "Personal Auto - Countrywide",
"agency": null,
"agents": [
{
"id": "5c7376a9-1ca8-4a1c-896e-7b9cb71fe26f",
"name": "Maliha Balala"
}
],
"is_bound": false,
"redirect_uri": "/quote/Q-personalAutoCW-2020-180/",
"owner": {
"id": "5c7376a9-1ca8-4a1c-896e-7b9cb71fe26f",
"name": "Maliha Balala"
},
"named_insured": {
"id": "6c2a50a2-1e1e-45fa-a979-d865fd79ca0f",
"name": "Review Test"
},
"submitted_for_review_date": null,
"date_added": "2020-07-17T15:21:46.808920Z",
"meta": {
"locked": false
}
}
Step 4: Delete your endorsement
To delete your endorsement, post a Delete method to the createQuote endpoint (/quote/{quote_id}
). You can only delete an endorsement that is in progress. You can’t delete a bound endorsement.
Sample request
curl --request DELETE \
--url quote/Q-personalAutoCW-2020-178/ \
--header 'authorization:
Sample response
This request doesn't return a response body.
Step 5: Bind your endorsement
Use bindRequested quote/{quote_number}/bind_requested)
to request your endorsement binding. You can’t delete an endorsement after you bind it. Pass the required quote_number
returned in Step 2.
Sample request
curl --request POST \
--url /quote/Q-personalAutoCW-2020-180/bind_requested/ \
--header 'authorization: '
Sample response
{
"id": "7dc49992-af1d-46f8-9321-6f0d1af7bcf3",
"quote_number": "Q-personalAutoCW-2020-180",
"inception_date": "2020-07-31T00:00:00Z",
"is_conversion": "false",
"quote": { },
"term_type": "1 Year",
"transaction_type": "endorsement"
}
Bind status polling
Use getQuote to poll the bindRequested
operation status. The most relevant attributes are is_binding which indicates if the process is still being processed, is_bound which indicates if the quote has been bound, and alerts where the error messages are stored in case they occur.
Sample request
curl --request GET \
--url /quote/Q-personalAutoCW-2020-180/ \
--header 'authorization: '
Sample response
{
"id": "d863265c-c75c-4231-a3a7-27a1b4f3546f",
"quote_number": "RWT-2022-221",
"transaction_type": "rewrite",
"source_quote_number": "RNW-2022-499",
"status": "Approved",
"policy_state": {},
"root_risk_quote_id": "1f7745e1-fff5-4541-864b-50c7f7a87142",
"product_name": "personalAutoCW",
"product_version": "58370e68-4a29-4775-a482-b4b6d1ce5799",
"product_label": "Personal Auto - Countrywide",
"agency": { },
"agents": [],
"alerts": [],
"is_bound": false,
"is_binding": true,
"redirect_uri": "/quote/RWT-2022-221/",
"owner": {},
"named_insureds": [],
"term": {},
"submitted_for_review_date": null,
"date_added": "2022-05-05T17:50:12.795994Z",
"last_rated_at": "2022-05-05T17:51:54.159724Z",
"premium": {},
"conversion_policy_number": "",
"meta": {
"locked": true
}
}
Step 6: Cancel your policy
To cancel your policy, call the createPolicyTransactions
endpoint (/policies/policy-transactions/
) with a payload.
Cancellation status polling
Use getPolicyTransaction to pool the operation status. The relevant attribute is status which indicates if the process is in progress, failed, or completed.
Step 7: Reinstate your policy
To cancel your policy, call the createPolicyTransactions endpoint (/policies/policy-transactions/
) with a payload that contains:
Sample request
curl --request POST \
--url /policies/policy-transactions/ \
--header 'authorization: ' \
--header 'Content-Type: application/vnd.api+json' \
--data-raw '{
"data": {
"type": "policy-transactions",
"attributes": {
"policy": "f301f937-b04d-420d-ba11-a5cd4ef04806",
"transaction_date_time": "2022-05-06T00:00:00",
"type": "reinstatement",
"status": "in_progress",
"auto_bind": true,
"process_async": true,
"postback": {
"reinstate_reason": "test reason",
"assess_fee": "waive"
}
}
}
}'
For reinstatements, you must also include a postback object with a valid reinstate reason id.
Sample response
{
"data": {
"type": "policy-transactions",
"id": "91166b6e-4079-475a-a470-31de0f20aba3",
"attributes": {
"type": "reinstatement",
"transaction_date_time": "2022-05-05T00:00:00Z",
"description": null,
"date_created": "2022-05-05T19:22:54.800749Z",
"date_completed": null,
"username": "britecore_user123@britecore.com",
"oos_status": null,
"status": "in_progress",
"failed_reason": null,
"reason_dismissed": false,
"reapply_quote_number": null,
"auto_bind": null,
"quote_redirect_uri": "/quote/RST-2022-100/",
"process_async": null,
"postback": null
},
"relationships": { }
}
}
Reinstatement status polling
Use getPolicyTransaction to poll the operation status. The relevant attribute is status which indicates if the process is in progress, failed, or completed.
Sample request
Step 8: Renew your policy
To cancel your policy, call the createPolicyTransactions endpoint (/policies/policy-transactions/
) with a payload.
Renewal status polling
Use getPolicyTransaction to poll the operation status. The relevant attribute is status which indicates if the process is in progress, failed, or completed.
You have successfully managed your policy.