> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wizflow.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Pension Policy Display

> Fetch and display a customer’s pension policies — coverages, risk coverage, and policy details

The **Pension Policy Display** entity displays a customer's pension policies in the chatflow — including their coverages, risk coverage, and policy details. Its labels are editable, so you can tailor the wording to each flow.

***

## What It Shows

* **Policies** — the customer's pension policies
* **Coverage overview** — the coverages attached to each policy
* **Risk coverage** — risk-related coverage for each policy
* **Policy details** — a detailed view of an individual policy

<Info>
  This entity displays the customer's pension policies. It complements the existing pension data collection entities.
</Info>

***

## Editable Labels

Most of the visible text in the entity is editable, so you can adjust wording and translations per flow without changing the underlying data. Labels are managed like any other entity label in the template builder.

***

## Testing

Outside of production, the entity supports **test profiles** so you can preview the display against sample pension data. Test profiles are not available in production.

***

## Policy Data Structure

Each policy the entity displays follows the `Policy` shape below. Use this as a reference when mapping labels or wiring the entity's data into your flow.

```ts theme={null}
type Policy = {
  // --- from ZEngagementBase ---
  id: string;
  createdAt: Date;
  updatedAt: Date;
  origin: 'ManualInput' | 'PensionsInfo' | 'Eskat' | 'Optiilo' | 'RaadTilBolig';
  name?: string; // max length 191

  // --- Policy fields ---
  owner: 'Primary' | 'Spouse';

  /** Fallback depot value; pension coverage depot value takes priority. */
  policyDepotValue?: number;

  /** Ignored if contribution on coverages are present. Currently not supported by calculation. */
  policyContribution?: {
    amount: number;
    to?: Date;
    paymentFrequency?: 'Yearly' | 'Monthly';
    isFromEmployer?: boolean; // ZContribution extends ZSimplePayment
  };

  coverages?: Array<
    | {
        // PensionCoverage
        id: string;
        createdAt: Date;
        updatedAt: Date;
        origin: 'ManualInput' | 'PensionsInfo' | 'Eskat' | 'Optiilo' | 'RaadTilBolig';
        name?: string;
        discriminator: 'PensionCoverage';
        owner: 'Primary' | 'Spouse';
        contribution?: {
          amount: number;
          to?: Date;
          paymentFrequency?: 'Yearly' | 'Monthly';
          isFromEmployer?: boolean;
        };
        initialValue?: number;
        payOutType?:
          | { payOutDate?: Date; payOutEndDate?: Date; discriminator: 'Annuity' }
          | { payOutDate?: Date; discriminator: 'LifeAnnuity' }
          | { payOutDate?: Date; discriminator: 'Sum' };
        taxCode?: 'One' | 'Two' | 'Three' | 'Five' | 'Seven' | 'Nine' | 'ThirtyThree';
        predefinedBenefits?:
          | Array<{ entryDate: Date; amount: number }> // ZAmountEntry
          | Array<{ amount: number; age: number }>; // ZAgeBasedAmountEntry
        /** Earliest payout age (TPUA — Tidligst Pensionsudbetalingsalder). */
        earliestPayoutAge?: number;
        /** True if the coverage is currently paying out. */
        isInPayout?: boolean;
      }
    | {
        // RiskCoverage
        id: string;
        createdAt: Date;
        updatedAt: Date;
        origin: 'ManualInput' | 'PensionsInfo' | 'Eskat' | 'Optiilo' | 'RaadTilBolig';
        name?: string;
        discriminator: 'RiskCoverage';
        owner: 'Primary' | 'Spouse';
        payOut?: { amount?: number };
        contribution?: {
          amount: number;
          to?: Date;
          paymentFrequency?: 'Yearly' | 'Monthly';
          isFromEmployer?: boolean;
        };
        riskCoverageType?:
          | 'AnnuityAtDeath'
          | 'AnnuityAtDeathToChildren'
          | 'LumpSumAtDeathTaxCode2'
          | 'LumpSumAtDeathTaxCode5'
          | 'LumpSumAtDisabilityTaxCode2'
          | 'LumpSumAtDisabilityTaxCode5'
          | 'AnnuityAtDisability'
          | 'AnnuityAtDisabilityToChildren'
          | 'CriticalIllness'
          | 'CriticalIllnessToChildren'
          | 'AccidentInsurance'
          | 'LumpSumAtDeathToChildrenTaxCode5'
          | 'UnknownInsuranceTaxCode5'
          | 'LumpSumAtDeath' // UK types
          | 'AnnuityAtDeath'
          | 'LumpSumAtDisability'
          | 'AnnuityAtDisability'
          | 'CriticalIllness'
          | 'AccidentInsuranceAtDeath';
        /** True if the coverage is currently paying out. */
        isInPayout?: boolean;
      }
  >;

  /** Provider-assigned identifier shown to the customer on statements. Independent of `id`. */
  externalPolicyId?: string;

  /** Structural/contractual classification. Undefined → treated conservatively (NeedsReview). */
  policyType?:
    | 'MarketRate'
    | 'Guaranteed'
    | 'BankDepot'
    | 'LaborMarketFund'
    | 'CommercialFund'
    | 'Selvpension'
    | 'LD'
    | 'IndexContract'
    | 'ATP'
    | 'Unknown';
};
```

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Entities Overview" icon="cubes" href="/features/entities-overview">
    Learn how entities work
  </Card>

  <Card title="Advanced & Specialized" icon="layer-group" href="/features/advanced-specialized">
    Explore specialized entities
  </Card>
</CardGroup>
