Policy Ledger
The policy ledger records premium amounts and related quote and event data for a policy. These endpoints allow you to retrieve, record, edit, delete, and search ledger entries.
Get Ledger for a Policy#
Returns the policy's unprocessed ledger entries (appliedToStatement: false) and their total premium. Use Search Ledger Entries to retrieve entries that have already been applied to a statement as well.
Endpoint#
GET https://api.{ENV}.dais.com/ioi/v3/policy/{policyId}/ledger
Path Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
policyId | UUID | Yes | UUID of the policy to evaluate. |
curl --location --request GET 'https://api.{ENV}.dais.com/ioi/v3/policy/<UUID of the policy ID>/ledger' \
--header 'Authorization: Basic <Base64-encoded API key and secret>'
Response#
Returns a ledger object. See Ledger Object below.
Record a Ledger Entry#
Creates a new financial entry on a policy's ledger.
Endpoint#
POST https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entry/record
Request Body#
curl --location --request POST 'https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entry/record' \
--header 'Authorization: Basic <Base64-encoded API key and secret>' \
--header 'Content-Type: application/json' \
--data-raw '{
"parentPolicyId": "<UUID of the parent policy ID>",
"quoteId": "<UUID of the quote request ID>",
"premium": 250.0,
"effectiveDate": "2026-03-01"
}'
{
"parentPolicyId": "<UUID of the parent policy ID>",
"quoteId": "<UUID of the quote request ID>",
"premium": 250.0,
"effectiveDate": "2026-03-01"
}
Request Fields#
| Property | Required | Description |
|---|---|---|
parentPolicyId | Yes | UUID of the policy this ledger entry belongs to. |
effectiveDate | Yes | Effective date for this entry. Format: YYYY-MM-DD. |
premium | For persistence | Must be supplied for successful persistence. Use 0 for an entry with no premium. |
quoteId | No | UUID of the quote. |
eventAnswers | No | Endorsement/event answer payload used to derive the entry. |
appliedToStatement | No | Whether the entry has been applied to a statement. Default false. |
Response#
Returns the updated ledger object and newLedgerEntryId. The entries array contains only entries whose appliedToStatement value is false; an entry recorded as already applied is not included in that array.
Edit a Ledger Entry#
Updates an existing ledger entry's premium and effective date.
Endpoint#
POST https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entry/edit
Request Body#
curl --location --request POST 'https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entry/edit' \
--header 'Authorization: Basic <Base64-encoded API key and secret>' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "<UUID of the ledger entry ID>",
"parentPolicyId": "<UUID of the parent policy ID>",
"premium": 300.0,
"effectiveDate": "2026-03-01"
}'
{
"id": "<UUID of the ledger entry ID>",
"parentPolicyId": "<UUID of the parent policy ID>",
"premium": 300.0,
"effectiveDate": "2026-03-01"
}
Request Fields#
| Property | Required | Description |
|---|---|---|
id | Yes | UUID of the ledger entry to edit. |
parentPolicyId | Yes | UUID of the policy this entry belongs to. |
effectiveDate | Yes | Effective date. Format: YYYY-MM-DD. |
premium | For persistence | Must be supplied for successful persistence. Send the existing value to preserve it. |
Note: This operation sets both
premiumandeffectiveDate. To change only the effective date while preserving the premium, send the existing premium value. The request model accepts an omitted premium, but persistence requires a non-null value; omission is not a partial update. The edit operation does not updatequoteIdoreventAnswers, even if those fields are supplied.
Response#
Returns the updated ledger object containing the remaining unprocessed entries.
Delete a Ledger Entry#
Removes a ledger entry by its ID.
Endpoint#
DELETE https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entry/{entryId}/delete
Path Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
entryId | UUID | Yes | UUID of the ledger entry to delete. |
curl --location --request DELETE 'https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entry/<UUID of the ledger entry ID>/delete' \
--header 'Authorization: Basic <Base64-encoded API key and secret>'
Response#
Returns the updated ledger object with the entry removed.
Search Ledger Entries#
Returns a paginated list of ledger entries for a policy, filtered by the given search parameters. Results can include both unprocessed entries and entries already applied to a statement.
Endpoint#
POST https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entries/policy/{policyId}
Path Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
policyId | UUID | Yes | The policy's unique identifier. |
Request Body#
curl --location --request POST 'https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entries/policy/<UUID of the policy ID>' \
--header 'Authorization: Basic <Base64-encoded API key and secret>' \
--header 'Content-Type: application/json' \
--data-raw '{
"page": 0,
"size": 20,
"effectiveDateStart": "2026-01-01",
"effectiveDateEnd": "2026-12-31",
"includeQuoteRateMeta": true
}'
{
"page": 0,
"size": 20,
"effectiveDateStart": "2026-01-01",
"effectiveDateEnd": "2026-12-31",
"includeQuoteRateMeta": true
}
Request Fields#
| Property | Required | Description |
|---|---|---|
page | No | Zero-based page number. Default 0; minimum 0. |
size | No | Entries per page. Default 20; minimum 1. |
effectiveDateStart | No | Include entries effective on or after this date, YYYY-MM-DD. |
effectiveDateEnd | No | Include entries effective on or before this date, YYYY-MM-DD. |
includeAllEventAnswers | No | Include all event answers in eventIntakeMap. Default false. |
intakeQuestionIds | No | Array of question IDs to include in eventIntakeMap when includeAllEventAnswers is false. Default empty array. |
includeQuoteRateMeta | No | Include quote rating metadata. Default false. |
includeDocuments | No | Include associated documents. Default false. |
Response#
Returns a paginated result of ledger search records. The following example shows selected record fields:
{
"content": [
{
"id": "<UUID of the ledger entry ID>",
"parentPolicyId": "<UUID of the parent policy ID>",
"policyNumber": "<Policy number>",
"quoteId": "<UUID of the quote request ID>",
"premium": 250.0,
"quoteRateMeta": {},
"effectiveDate": "2026-03-01",
"createdTimestamp": "2026-03-01T10:00:00.000Z"
}
],
"number": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1,
"first": true,
"last": true
}
Ledger Object#
| Field | Type | Description |
|---|---|---|
formConfigId | UUID | Ledger form configuration identifier. |
backofficeProductId | UUID | Back-office product identifier. |
rating | boolean | Whether rating is enabled for this ledger. |
entries | array | Unprocessed entries (appliedToStatement: false). Each entry is a Ledger Entry. |
totalPremium | number | Sum of the premiums in the returned unprocessed entries. |
newLedgerEntryId | UUID | Newly recorded entry identifier, when returned by the operation. |
policyClientId | UUID | Client associated with the policy. |
Ledger Entry Object#
| Field | Type | Description |
|---|---|---|
id | UUID | Entry unique identifier. |
policyNumber | string | Policy number. |
parentPolicyId | UUID | Policy this entry belongs to. |
quoteId | UUID | Quote identifier associated with the entry (if any). |
organizationId | UUID | Organization associated with the entry. |
productId | UUID | Product identifier. |
premium | number | Premium amount associated with the entry (if any). |
effectiveDate | string (date) | Date this entry is effective. Format: YYYY-MM-DD. |
appliedToStatement | boolean | Whether the entry has been applied to a statement. |
eventAnswers | object | Event answer payload. |
doc | object | Policy document. |
additionalDocs | array | Additional quote documents. |
statementId | UUID | Associated statement identifier. |
createdTimestamp | ISO 8601 | When this entry was recorded. |
createdBy | object | Person who created the entry. |
Ledger Search Record#
The search endpoint returns this record shape in content. It differs from the entries in the Ledger Object.
| Field | Type | Description |
|---|---|---|
id | UUID | Ledger entry identifier. |
productId | UUID | Product identifier. |
parentPolicyId | UUID | Parent policy identifier. |
policyNumber | string | Policy number. |
premium | number | Entry premium. |
quoteId | UUID | Associated quote identifier. |
quoteRateMeta | object | Quote rating metadata requested with includeQuoteRateMeta. |
effectiveDate | string (date) | Entry effective date, YYYY-MM-DD. |
eventIntakeMap | object | Event answers selected by the request flags. |
createdTimestamp | string (date-time) | Creation timestamp, with milliseconds and UTC offset. |
doc | object | Policy document, requested with includeDocuments. |
additionalDocs | array | Additional quote documents, requested with includeDocuments. |