---
title: "List catalog variances"
method: GET
path: "/catalog/variances"
tags: ["catalog"]
---

# List catalog variances

`GET /catalog/variances`

Returns catalog entries with price variance information from invoice items. By default, returns all items that had purchases in the specified period, including items with zero variance. Use variance_only=true to return only entries with non-zero variance. Use expand=invoice_items to include all invoice items inline (otherwise only the most recent invoice item is returned).

## Query parameters

- `ottimate_company_id` integer, required
- `variance_only` boolean
- `expand` string
- `invoice_start_date` string, date
- `invoice_end_date` string, date
- `erp_vendor_ids` string
- `ottimate_location_ids` string
- `exception_type` 'underbilling' | 'overbilling'
- `page` integer
- `limit` integer

## Headers

- `Authorization` string, required
- `X-Api-Key` string, required
- `X-API-Version` string

## Response `200`

Successful response with paginated variance list

- VarianceListResponse
  - `count` integer, required
  - `results` VarianceListResponseResultsItems[], required
    - `id` string, required — Catalog entry ID
    - `ottimate_company_id` integer — Company ID
    - `item_name` string, required
    - `sku` string
    - `upc` string
    - `pack_size` string
    - `price` number, double — Catalog price
    - `unit_price` number, double — Unit price
    - `erp_vendor_name` string — ERP Vendor name from ERP/accounting system
    - `case_size` string — Pack size for unit conversion
    - `last_invoice_item` VarianceListResponseResultsItemsLastInvoiceItem
      - `id` integer, required
      - `price` number, double, required
      - `invoice_date` string, date, required
      - `price_variance` number, double
      - `effective_price` number, double
    - `invoice_items` VarianceListResponseResultsItemsInvoiceItems — Invoice items for this catalog entry. Only included when expand=invoice_items is specified. Returns up to 10 items with pagination metadata.
      - `data` VarianceListResponseResultsItemsInvoiceItemsDataItems[], required — Array of invoice items (limited to 10)
        - `id` string, required
        - `invoice_id` string, required
        - `item_name` string, required
        - `price` number, double, required
        - `quantity` number, double, required
        - `invoice_date` string, date, required
        - `price_variance` number, double
        - `effective_price` number, double
      - `has_more` boolean, required — Indicates if there are more invoice items beyond the returned limit
      - `total_count` integer, required — Total number of invoice items for this catalog entry
      - `url` string — URL to fetch paginated invoice items. Only present when has_more is true.

## Other responses

- `400` — Bad request - Invalid parameters or request format
- `403` — Forbidden - Access denied or insufficient permissions

## Changes

- **2026-08-27** `f7c4667f0606` — 1 warning, 6 info
  - removed the optional property `results/items/erp_vendor_id` from the response with the `200` status
  - added the optional property `results/items/case_size` to the response with the `200` status
  - added the optional property `results/items/erp_vendor_name` to the response with the `200` status
  - added the optional property `results/items/invoice_items` to the response with the `200` status
  - …3 more
- **2026-08-22** `75aab60eedc9` — 3 warning
  - for the `query` request parameter `limit`, the max was set to `100.00`
  - for the `query` request parameter `limit`, the min was set to `1.00`
  - for the `query` request parameter `page`, the min was set to `1.00`
- **2026-08-19** `c0b5cf6c7a72` — 1 breaking, 1 info
  - for the `query` request parameter `limit`, default value was changed from `50` to `20`
  - added the non-success response with the status `403`
- **2026-08-17** `c231509a03cf` — 4 breaking, 2 info
  - for the `query` request parameter `limit`, default value `50` was added
  - for the `query` request parameter `page`, default value `1` was added
  - for the `query` request parameter `variance_only`, default value `false` was added
  - the `message` response's property type/format changed from `string`/`` to ``/`` for status `400`
  - …2 more
- …earlier changes not shown

[Full history](https://skmtc.dev/ottimate/apis/api-reference/changes/catalog/variances/get.md)

---

[API](https://skmtc.dev/ottimate/apis/api-reference.md) · [All operations](https://skmtc.dev/ottimate/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ottimate/api-reference/revisions/ba91ff4c6969/schema)
