---
title: "Recognition / amortization schedule for a document"
method: GET
path: "/companies/{companyId}/books/schedules/recognition"
tags: ["Books"]
---

# Recognition / amortization schedule for a document

`GET /companies/{companyId}/books/schedules/recognition`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/books/schedules/recognition`
- Auth: HTTP bearer

Demo-parity customer route for an explicitly allowlisted active or test company. `/qa` callers additionally require the QA application marker and persisted test lifecycle.
Returns the recognition or amortization schedule for a contract / invoice document line: the schedule type and a list of period entries with running cumulative amounts and posted/pending status. `{ immediate: true }` is returned only when the company posts through the subledger core and no schedule exists for the document in the selected entity. Every other schedule-less case returns `{ status, reason }` and makes no recognition claim: `unavailable`/`document_not_found` for a document outside the selected entity (unknown and sibling-entity documents are indistinguishable), `not_scheduled`/`no_business_event` for a document with no business event, and `unavailable`/`schedule_authority_not_entity_scoped` when the only schedule authority is not keyed to the selected entity.

## Query parameters

- `entityId` string, uuid
- `documentId` string, required
- `lineIndex` integer

## Response `200`

Recognition schedule payload

- object
  - `success` boolean
  - `data` union: Recognition or amortization schedule for a document/contract line. When `immediate` is `true`, entity-keyed schedule authority proves the document recognises in full in the period it was received. When `scheduleType` and `schedule` are populated, a persisted schedule exists. When `status` is present, nothing proves either, and no recognition timing is claimed.
    - object: Immediate full recognition — no schedule.
      - `companyId` string, uuid, required
      - `entityId` string, uuid, required
      - `immediate` true, required
    - object: Multi-period recognition or amortization schedule.
      - `companyId` string, uuid, required
      - `entityId` string, uuid, required
      - `scheduleType` 'prepaid_amortization' | 'deferred_revenue_recognition' | 'depreciation' | 'operating_lease_payment' | 'finance_lease_payment', required
      - `schedule` RecognitionScheduleEntry[], required
        - `periodIndex` integer, required: 1-based sequence number.
        - `label` string, required: Human-readable label for this period (e.g. "Period 1").
        - `amountCents` integer, required: Amount recognised/amortized in this period, in cents.
        - `cumulativeCents` integer, required: Running cumulative total through this period, in cents.
        - `posted` boolean, required: Whether the corresponding journal entry has been posted.
        - `date` string, date, required: Scheduled date for this period (ISO YYYY-MM-DD).
    - object: No persisted schedule and no authority proving immediate recognition.
      - `companyId` string, uuid, required
      - `entityId` string, uuid, required
      - `status` 'not_scheduled' | 'unavailable', required
      - `reason` 'document_not_found' | 'no_business_event' | 'schedule_authority_not_entity_scoped', required

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `404`: Resource not found
- `422`: Missing or invalid query parameters (e.g. documentId not provided)

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
