---
title: "Qualified longevity annuity contract (QLAC)"
method: POST
path: "/v1/retirement/qlac"
tags: ["Retirement income"]
---

# Qualified longevity annuity contract (QLAC)

`POST /v1/retirement/qlac`

## Request

- Base URL: `https://api.numeratica.com`
- URL: `https://api.numeratica.com/v1/retirement/qlac`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Models a deferred income annuity bought inside a traditional IRA. The premium — up to the §1.401(a)(9)-6(q)(2)(ii) year-keyed limit ($210,000 for 2025–26) — is carved out of the balance used for Required Minimum Distributions, lowering RMDs during the deferral, and buys guaranteed lifetime income starting no later than age 85. Returns the eligible/excess premium, the annual RMD reduction (drawn at the SECURE 2.0 beginning age on the supplied balance), and the deferred income from the start age (priced on the SSA mortality table), with the expected lifetime payout and money's-worth ratio. Composes the RMD + annuity engines; deterministic; not tax advice or an insurance quote.

## Request body

- QLACRequest
  - `tax_year` 2025 | 2026, required
  - `age` integer, required: Current age of the IRA owner.
  - `birth_year` integer: Sets the SECURE 2.0 RMD beginning age (omit ⇒ 73).
  - `account_balance` number, required: Traditional-IRA balance before the QLAC purchase.
  - `qlac_premium` number, required: Premium paid for the QLAC (capped at the year's limit; ≤ account_balance).
  - `start_age` integer, required: Age payments begin (≥ age and ≤ 85).
  - `sex` 'male' | 'female', required: Mortality pricing.
  - `assumed_rate` number: Pricing interest rate (omit ⇒ 4.5%).

## Response `200`

The RMD reduction + the deferred lifetime income the QLAC buys

- QLACResponse
  - `result_id` string
  - `engine_version` string
  - `inputs` QLACRequest
    - `tax_year` 2025 | 2026, required
    - `age` integer, required: Current age of the IRA owner.
    - `birth_year` integer: Sets the SECURE 2.0 RMD beginning age (omit ⇒ 73).
    - `account_balance` number, required: Traditional-IRA balance before the QLAC purchase.
    - `qlac_premium` number, required: Premium paid for the QLAC (capped at the year's limit; ≤ account_balance).
    - `start_age` integer, required: Age payments begin (≥ age and ≤ 85).
    - `sex` 'male' | 'female', required: Mortality pricing.
    - `assumed_rate` number: Pricing interest rate (omit ⇒ 4.5%).
  - `result` object
    - `premium_limit` number: The year's §1.401(a)(9)-6 premium cap.
    - `eligible_premium` number: min(premium, limit) — the amount excluded from RMDs.
    - `excess_premium` number: Premium over the limit (not QLAC-eligible).
    - `within_limit` boolean
    - `rmd_beginning_age` integer: SECURE 2.0 RMD beginning age.
    - `rmd_age_used` integer: Age at which the RMD comparison is drawn.
    - `rmd_without_qlac` number: RMD on the full balance.
    - `rmd_with_qlac` number: RMD on the balance less the eligible premium.
    - `annual_rmd_reduction` number: The first-year RMD relief the QLAC buys.
    - `income_start_age` integer
    - `deferred_annual_income` number: Guaranteed income from the start age.
    - `deferred_monthly_income` number
    - `expected_lifetime_payout` number: Expected total nominal income over life.
    - `moneys_worth` number: PV(income) / premium at the assumed rate.
    - `assumed_rate` number: Rate used for pricing.
  - `disclaimer` string

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key.
- `405`: Method not allowed
- `429`: The key's per-minute request budget is exceeded. Retry after the delay in the Retry-After header.
- `503`: A dependency (e.g. the key store) is temporarily unavailable, or the request exceeded its compute deadline. Retryable.

---

[API](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api.md) · [All operations](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/llms.txt) · [OpenAPI document](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/revisions/075bcfbd1ebf?raw)
