---
title: "List owner statements"
method: GET
path: "/owner-statement-api/owner-statements"
tags: ["Owner Statements (only available for accounting add-on users)"]
---

# List owner statements

`GET /owner-statement-api/owner-statements`

Returns owner statement metadata and presigned PDF download URLs (valid for 1 hour) for generated statements.

## Query parameters

- `skip` integer
- `limit` integer
- `ownerId` string
- `periodMode` 'month' | 'year' | 'monthRange' | 'yearRange' | 'fiscalYear' | 'fiscalYearRange'
- `year` integer
- `month` integer
- `fromYear` integer
- `fromMonth` integer
- `toYear` integer
- `toMonth` integer
- `fiscalYear` integer
- `fromFiscalYear` integer
- `toFiscalYear` integer
- `updatedSince` string, date-time
- `statementType` 'MONTHLY' | 'ANNUAL' | 'ANNUAL_SUMMARY' | 'ANNUAL_SUMMARY_BY_MONTH'

## Response `200`

Owner statements list

- object
  - `results` object[], required
    - `id` string, required
    - `ownerName` string, required
    - `ownerId` string, required
    - `periodStartDate` string, date-time, required
    - `periodEndDate` string, date-time, required
    - `statementType` 'MONTHLY' | 'ANNUAL' | 'ANNUAL_SUMMARY' | 'ANNUAL_SUMMARY_BY_MONTH', required — Statement type enum. Same values as the `statementType` query parameter.
    - `endingBalance` number, required — Ending owner balance. Amount is in the statement `currency`.
    - `dueToOwner` number, required — Amount due to the owner. Amount is in the statement `currency`.
    - `currency` string, required — ISO 4217 currency code for `endingBalance` and `dueToOwner`.
    - `pdfDownloadUrl` string, nullable, required — Presigned PDF download URL, valid for 1 hour. Null when a download URL could not be generated (typically a transient signing failure — retry later). This does not mark the statement as permanently failed; only statements that already have a generated PDF are listed.
  - `count` integer, required — Number of statements in this page (`results.length`).
  - `limit` integer, required — Effective page size applied to this request (requested `limit` after clamping to the allowed range).
  - `skip` integer, required — Offset applied to this request (same value as the `skip` query parameter).
  - `total` integer, required — Total number of statements matching all applied filters (before pagination). Not limited to the current page.

## Other responses

- `400` — Invalid query parameter. Common causes: period fields sent without `periodMode`, incomplete/invalid `periodMode` fields, invalid `statementType`, or invalid `skip` (e.g. negative).
- `401` — Missing or invalid Bearer access token
- `403` — Authenticated account is not permitted to access this resource (e.g. Accounting feature flow disabled)
- `500` — Unhandled exception. Something went wrong on server

---

[API](https://skmtc.net/guesty/apis/guesty-open-api.md) · [All operations](https://skmtc.net/guesty/apis/guesty-open-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/guesty/guesty-open-api/versions/7c62644070f2/schema)
