---
title: "List quotations"
method: GET
path: "/quotations"
tags: ["Objects"]
---

# List quotations

`GET /quotations`

Returns a paginated list of quotations. Supports cursor pagination, full-text search, structured filters (status, client, sales person, tags, dates), and sorting. Results respect the API key user's ownership permissions. See the [Listing & filters](/api-v2/listing-and-filters) guide for filter syntax.

## Query parameters

- `cursor` string
- `pageSize` integer
- `search` string
- `orderBy` 'createdAt' | 'date' | 'number' | 'expiryDate'
- `orderDir` 'asc' | 'desc'
- `filters` object — Structured filters (status, clientId, salesPersonId, tagId, productId, templateId, dealId, dates). Option values use prefixed string IDs. See the Listing & filters guide.

## Response `200`

OK

- object
  - `data` Quotation[], required
    - `id` string, required — Quotation ID (qtn_ prefix)
    - `number` string, required — Auto-generated quotation number
    - `date` string, date-time, required — Quotation date
    - `status` 'DRAFT' | 'SENT' | 'ACCEPTED' | 'REJECTED', required — Quotation status
    - `subject` string, nullable — Subject
    - `expiryDate` string, date-time, nullable — Expiry date
    - `currency` string, required — ISO 4217 currency code
    - `conversionRate` number — Quotation currency to team currency rate
    - `isInclusiveTax` boolean — Whether prices include tax
    - `clientId` string, nullable — Contact or company ID (clt_ prefix)
    - `contactId` string, nullable — Optional contact person ID (clt_ prefix) when clientId is a company
    - `dealId` string, nullable — Deal ID (dl_ prefix)
    - `salesPersonId` string, nullable — Sales person user ID (usr_ prefix)
    - `templateId` string, nullable — Document template ID (tpl_ prefix)
    - `contentHtml` string, nullable — Rendered document HTML
    - `internalNotes` string, nullable — Internal notes
    - `totalAmount` number — Total including tax
    - `subtotalAmount` number — Subtotal before tax
    - `totalTaxAmount` number — Total tax amount
    - `totalDiscountAmount` number — Total discount amount
    - `tagIds` string[] — Tag IDs (tag_ prefix)
    - `lineItems` QuotationLineItem[] — Line items (included on get; empty on list)
      - `name` string, required — Line item name
      - `productId` string, nullable — Product ID (prd_ prefix)
      - `quantity` number, required — Quantity
      - `price` number, required — Unit price
      - `description` string, nullable — Line item description
      - `tax` number — Tax percentage when taxRateId is omitted
      - `taxRateId` string, nullable — Tax rate ID (txr_ prefix)
      - `discount` number — Discount value
      - `discountType` 'fixed' | 'percent' — Discount type
      - `viewType` 'LINE_ITEM' | 'HEADING' — Line display type
      - `scope` string, nullable — Optional scope label
    - `markedAcceptedOn` string, date-time, nullable — When the quotation was accepted
    - `markedRejectedOn` string, date-time, nullable — When the quotation was rejected
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, nullable
  - `meta` ListMeta, required
    - `nextCursor` string, nullable — Cursor to fetch the next page. Null if there are no more results.
    - `hasMore` boolean, required — Whether additional results are available

## Other responses

- `400` — Validation error or bad request
- `401` — Missing or invalid API key
- `403` — Insufficient permission
- `404` — Resource not found
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/heffl/apis/heffl-api-v2-beta.md) · [All operations](https://skmtc.net/heffl/apis/heffl-api-v2-beta/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/heffl/heffl-api-v2-beta/versions/27006cfef4d8/schema)
