---
title: "Explain one year of a member's allowance"
method: GET
path: "/members/{member_id}/allowance-breakdown"
tags: ["Allowance Management"]
---

# Explain one year of a member's allowance

`GET /members/{member_id}/allowance-breakdown`

How the figures of one fiscal year came about: which rule was active, what accrued month by month, what was carried over, what expired and what was booked. This is the calculation the app shows in the ledger.

## Path parameters

- `member_id` string, uuid, required

## Query parameters

- `allowance_type_id` string, uuid, required
- `year` integer, required — The fiscal year to explain.
- `locale` 'en' | 'de' | 'fr' | 'hu' | 'it' | 'pl' | 'pt' | 'ru' | 'es' | 'tr' | 'uk'

## Response `200`

Successful response

- object
  - `legacy_unmigrated` boolean, required — True when this member has not been moved to the rules engine yet. Every other field is then null or empty: there is no rule-based breakdown to report.
  - `no_allowance_for_year` boolean, required — True when the member has no allowance of this type in this year at all, for instance because no rule ever covered it. Every other field is then null or empty.
  - `member_allowance_id` string, nullable, required — The id to pass to POST /allowances/{id}/revert-carryover-override.
  - `fiscal_year_start_month` integer, required — 0 = January, matching the workspace setting.
  - `active_rule` object, nullable, required — The rule that governed this year, if any.
    - `name` string, required
    - `amount` number, required
    - `cycle` string, required — How often the rule grants, e.g. `monthly`.
  - `allowance` number, required — The rule-granted entitlement after rounding.
  - `raw_allowance` number, required — The same figure before rounding.
  - `rounding_increment` number, nullable, required — What the entitlement was rounded up to, e.g. 0.5 days.
  - `rounding_delta` number, required — How much the rounding added: `allowance` minus `raw_allowance`.
  - `adjustments` number, required — The manual adjustments of this year.
  - `brought_forward` number, required
  - `overwrite_brought_forward` boolean, required
  - `taken` number, required
  - `remaining` number, required
  - `will_expire` number, required
  - `expired` number, required
  - `expiration` number, required
  - `carry_forward_deadline` string, nullable, required
  - `next_credit_expiry` string, nullable, required — The next day on which part of the balance expires.
  - `credit_expiration_past` number, required — Already expired out of the dated credits.
  - `credit_expiration_future` number, required — Still to expire out of them, later this year.
  - `monthly_accruals` object[], required — Empty when the year accrued in one go rather than per month.
    - `month` integer, required — 0-based index within the fiscal year, not the calendar.
    - `amount` number, required
    - `earned` boolean, required — False for a month that has not accrued yet.
    - `ruleName` string
  - `carry_forward_detail` object, nullable, required — Null for the member's first year, which carries nothing over.
    - `previous_remaining` number, required — What was left at the end of the previous year.
    - `carried` number, required — How much of it was carried over.
    - `expired` number, required
    - `deadline` string, nullable, required
    - `expiry_months` number, nullable, required — How long carry-over survives; null means it never expires.
    - `max_carry_forward` number, nullable, required
    - `kept_after_expiry` number, nullable, required
    - `computed_carried` number, nullable, required — What the engine would have carried over. Only set when an admin overrode the carry-over, so the two can be compared.
  - `deductions` object[], required — What was booked out of this year, oldest first.
    - `date` string, required
    - `amount` number, required
    - `request_id` string, required
    - `leave_type_id` string, required
    - `leave_type_name` string, required — Translated into `locale` when one is given, otherwise the stored name.
    - `request_start` string, required
    - `request_end` string, required
  - `adjustment_details` object[], required — The individual adjustments that make up `adjustments`.
    - `id` number, required
    - `amount` number, required
    - `date` string, required
    - `expiry_date` string, nullable, required
    - `comment` string, required
    - `is_expired` boolean, required
    - `is_overtime` boolean, required — True when the adjustment is overtime compensation.
    - `created_by` object, nullable, required
      - `name` string, nullable, required
      - `email` string, nullable, required

## Other responses

- `400` — Invalid input data
- `401` — Authorization not provided
- `403` — Insufficient access
- `404` — Not found
- `500` — Internal server error

---

[API](https://skmtc.net/absentify/apis/absentify-crud-api.md) · [All operations](https://skmtc.net/absentify/apis/absentify-crud-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/absentify/absentify-crud-api/revisions/ef777d51e6f2/schema)
