# List amortization schedule lines

Operation ID: `amortizationScheduleLines`

Group: Accounting › Amortization Schedule Lines

[Open in the interactive reference](https://docs.api.lensing.ai/lensing/v1/endpoints/amortizationScheduleLines)

`GET /accounting/amortization-schedule-lines`

Read-only: Reads and returns; changes nothing.

Lists amortization schedule lines. Each line is one amortization schedule's amount for one accounting period.

To see what is still outstanding before you close a period, filter on outstanding=true for one entityId and one bookId.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version `v1`. |

## Query surface

- `id` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `amortizationScheduleHeaderId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `entityId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `bookId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `scheduledPeriodId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `scheduledPeriodStartDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `scheduledPeriodEndDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `transactionCurrency` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `amortizationMethod` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `isJournalEntryPosted` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `isConfirmedZero` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `outstanding` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- Orderable: id, scheduledPeriodStartDate, scheduledPeriodEndDate, amount, amortizationStartDate, amortizationEndDate, lastModifiedDate
- Selectable: id, amortizationScheduleHeaderId, entityId, entityName, bookId, bookName, scheduledPeriodId, scheduledPeriodName, scheduledPeriodStartDate, scheduledPeriodEndDate, amount, transactionCurrency, amortizationMethod, amortizationStartDate, amortizationEndDate, isJournalEntryPosted, isConfirmedZero, outstanding, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of amortizationScheduleLinesRow:

| Field | Type | Required | Filter | Sort | Description |
| --- | --- | --- | --- | --- | --- |
| `id` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The unique identifier for this amortization schedule line. |
| `amortizationScheduleHeaderId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The identifier of the amortization schedule this line belongs to. Several lines, one per period, share it. There is no endpoint for the schedule itself. |
| `entityId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The legal entity this schedule line belongs to. See id on GET base/entities. Absent when the schedule's source journal entry line is missing. Such a schedule line is still returned, but doesn't match an entityId filter. |
| `entityName` | string \| null | no | no | no | The name of the legal entity this schedule line belongs to. |
| `bookId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The identifier of the accounting book this schedule posts into. See id on GET accounting/books/:id. |
| `bookName` | string \| null | no | no | no | The name of the accounting book this schedule posts into. |
| `scheduledPeriodId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The accounting period this schedule line is scheduled in. See accountingPeriodId on GET accounting/accounting-periods. To check whether a period close is blocked, filter on scheduledPeriodEndDate instead, because this filter misses earlier schedule lines that aren't posted. |
| `scheduledPeriodName` | string \| null | no | no | no | The display name of the scheduled period as its fiscal calendar defines it, for example 'Aug 2026'. The format varies by calendar, so do not parse it. Match on dates instead. |
| `scheduledPeriodStartDate` | date \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The first day of the scheduled period, inclusive. Format YYYY-MM-DD. |
| `scheduledPeriodEndDate` | date \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The last day of the scheduled period, inclusive. Format YYYY-MM-DD. For a period-close check, filter on this date: it finds every schedule line due on or before the period being closed. |
| `amount` | decimal \| null | no | no | yes | The amount of this schedule line, in the currency given by transactionCurrency. |
| `transactionCurrency` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The currency that denominates amount, taken from the schedule's source journal entry line. Format ISO 4217, for example 'USD'. Absent on a row whose header or source document was deleted. A query that does not filter by book can return rows in several currencies. |
| `amortizationMethod` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | How the schedule spreads its total, from the header. Possible values: 'straightLine', 'straightLineProRateFirstLast', 'exactDays', 'pointInTime', 'usageBased'. |
| `amortizationStartDate` | date \| null | no | no | yes | The first day of the amortization schedule. Format YYYY-MM-DD. This is the schedule's start, not this schedule line's period. |
| `amortizationEndDate` | date \| null | no | no | yes | The last day the schedule amortizes over, from the header. Format YYYY-MM-DD. |
| `isJournalEntryPosted` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether this schedule line's journal entry has been posted. To find schedule lines still to post, filter on outstanding instead. |
| `isConfirmedZero` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether this schedule line was confirmed as zero, so no journal entry is needed. Absent means not confirmed. To find schedule lines still to post, filter on outstanding. |
| `outstanding` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether this schedule line still needs a journal entry: true when its journal entry isn't posted and it isn't confirmed as zero. Filter on this for a period-close check. |
| `lastModifiedDate` | date-time \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date and time this schedule line last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. It tracks the line itself, so a change to the header or the joined entity, book or period does not advance it. |

```json
{
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "amortizationScheduleHeaderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "entityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "entityName": "<entityName>",
      "bookId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "bookName": "<bookName>",
      "scheduledPeriodId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "scheduledPeriodName": "<scheduledPeriodName>",
      "scheduledPeriodStartDate": "2026-01-15",
      "scheduledPeriodEndDate": "2026-01-15",
      "amount": "19.99",
      "transactionCurrency": "<transactionCurrency>",
      "amortizationMethod": "<amortizationMethod>",
      "amortizationStartDate": "2026-01-15",
      "amortizationEndDate": "2026-01-15",
      "isJournalEntryPosted": true,
      "isConfirmedZero": true,
      "outstanding": true,
      "lastModifiedDate": "2026-01-15T09:30:00.000Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "<nextCursor>"
  }
}
```

## Statuses

- `400` — Invalid request or business failure
- `401` — The request carries no valid access token.
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests from this client address. The response has no body and no `Retry-After` header.
- `500` — Internal server error
