Skip to content

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#

HTTPGET
GET https://api.{ENV}.dais.com/ioi/v3/policy/{policyId}/ledger

Path Parameters#

ParameterTypeRequiredDescription
policyIdUUIDYesUUID of the policy to evaluate.
cURL
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#

HTTPPOST
POST https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entry/record

Request Body#

cURL
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"
}'
JSON
{
  "parentPolicyId": "<UUID of the parent policy ID>",
  "quoteId": "<UUID of the quote request ID>",
  "premium": 250.0,
  "effectiveDate": "2026-03-01"
}

Request Fields#

PropertyRequiredDescription
parentPolicyIdYesUUID of the policy this ledger entry belongs to.
effectiveDateYesEffective date for this entry. Format: YYYY-MM-DD.
premiumFor persistenceMust be supplied for successful persistence. Use 0 for an entry with no premium.
quoteIdNoUUID of the quote.
eventAnswersNoEndorsement/event answer payload used to derive the entry.
appliedToStatementNoWhether 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#

HTTPPOST
POST https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entry/edit

Request Body#

cURL
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"
}'
JSON
{
  "id": "<UUID of the ledger entry ID>",
  "parentPolicyId": "<UUID of the parent policy ID>",
  "premium": 300.0,
  "effectiveDate": "2026-03-01"
}

Request Fields#

PropertyRequiredDescription
idYesUUID of the ledger entry to edit.
parentPolicyIdYesUUID of the policy this entry belongs to.
effectiveDateYesEffective date. Format: YYYY-MM-DD.
premiumFor persistenceMust be supplied for successful persistence. Send the existing value to preserve it.

Note: This operation sets both premium and effectiveDate. 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 update quoteId or eventAnswers, 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#

HTTPDELETE
DELETE https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entry/{entryId}/delete

Path Parameters#

ParameterTypeRequiredDescription
entryIdUUIDYesUUID of the ledger entry to delete.
cURL
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#

HTTPPOST
POST https://api.{ENV}.dais.com/ioi/v3/policy/ledger/entries/policy/{policyId}

Path Parameters#

ParameterTypeRequiredDescription
policyIdUUIDYesThe policy's unique identifier.

Request Body#

cURL
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
}'
JSON
{
  "page": 0,
  "size": 20,
  "effectiveDateStart": "2026-01-01",
  "effectiveDateEnd": "2026-12-31",
  "includeQuoteRateMeta": true
}

Request Fields#

PropertyRequiredDescription
pageNoZero-based page number. Default 0; minimum 0.
sizeNoEntries per page. Default 20; minimum 1.
effectiveDateStartNoInclude entries effective on or after this date, YYYY-MM-DD.
effectiveDateEndNoInclude entries effective on or before this date, YYYY-MM-DD.
includeAllEventAnswersNoInclude all event answers in eventIntakeMap. Default false.
intakeQuestionIdsNoArray of question IDs to include in eventIntakeMap when includeAllEventAnswers is false. Default empty array.
includeQuoteRateMetaNoInclude quote rating metadata. Default false.
includeDocumentsNoInclude associated documents. Default false.

Response#

Returns a paginated result of ledger search records. The following example shows selected record fields:

JSON
{
  "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#

FieldTypeDescription
formConfigIdUUIDLedger form configuration identifier.
backofficeProductIdUUIDBack-office product identifier.
ratingbooleanWhether rating is enabled for this ledger.
entriesarrayUnprocessed entries (appliedToStatement: false). Each entry is a Ledger Entry.
totalPremiumnumberSum of the premiums in the returned unprocessed entries.
newLedgerEntryIdUUIDNewly recorded entry identifier, when returned by the operation.
policyClientIdUUIDClient associated with the policy.

Ledger Entry Object#

FieldTypeDescription
idUUIDEntry unique identifier.
policyNumberstringPolicy number.
parentPolicyIdUUIDPolicy this entry belongs to.
quoteIdUUIDQuote identifier associated with the entry (if any).
organizationIdUUIDOrganization associated with the entry.
productIdUUIDProduct identifier.
premiumnumberPremium amount associated with the entry (if any).
effectiveDatestring (date)Date this entry is effective. Format: YYYY-MM-DD.
appliedToStatementbooleanWhether the entry has been applied to a statement.
eventAnswersobjectEvent answer payload.
docobjectPolicy document.
additionalDocsarrayAdditional quote documents.
statementIdUUIDAssociated statement identifier.
createdTimestampISO 8601When this entry was recorded.
createdByobjectPerson 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.

FieldTypeDescription
idUUIDLedger entry identifier.
productIdUUIDProduct identifier.
parentPolicyIdUUIDParent policy identifier.
policyNumberstringPolicy number.
premiumnumberEntry premium.
quoteIdUUIDAssociated quote identifier.
quoteRateMetaobjectQuote rating metadata requested with includeQuoteRateMeta.
effectiveDatestring (date)Entry effective date, YYYY-MM-DD.
eventIntakeMapobjectEvent answers selected by the request flags.
createdTimestampstring (date-time)Creation timestamp, with milliseconds and UTC offset.
docobjectPolicy document, requested with includeDocuments.
additionalDocsarrayAdditional quote documents, requested with includeDocuments.