---
title: "Get Fulfillment History"
method: GET
path: "/fulfillments/{fulfillment_id}/history"
tags: ["Fulfillments"]
---

# Get Fulfillment History

`GET /fulfillments/{fulfillment_id}/history`

Retrieves the history ledger for a single fulfillment, showing all state-change events
(e.g. created, picked, packed, fulfilled, voided, returned) for each line item.

Results are ordered oldest-first and support cursor-based pagination.
When no more pages exist, the `next_cursor` field will be empty.

🔒 Requires: `fulfillments:read` scope

## Path parameters

- `fulfillment_id` string, required

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

Successful response with fulfillment history entries

- FulfillmentHistoryResponse — Paginated response containing fulfillment history entries
  - `data` FulfillmentHistoryEntry[], required — List of history entries ordered oldest-first
    - `created_at` string, date-time, required — Timestamp when the event was recorded
    - `event_type` 'CREATED' | 'QUANTITY_UPDATED' | 'REMOVED' | 'PICKED' | 'PACKED' | 'FULFILLED' | 'VOIDED' | 'UNVOIDED' | 'RETURNED' | 'RETURN_VOIDED' | 'SPLIT', required — The type of state-change event
    - `fulfilled_delta` string, required — Change in fulfilled quantity for this line item
    - `packed_quantity_delta` string, required — Change in packed quantity for this line item
    - `picked_quantity_delta` string, required — Change in picked quantity for this line item
    - `product_id` string, uuid, required — The ID of the product associated with the line item
    - `quantity_delta` string, required — Change in total quantity for this line item
    - `sale_line_item_id` string, uuid, required — The ID of the sale line item this event relates to
    - `source_sale_id` string, uuid — The ID of the source sale (present for RETURNED and SPLIT events)
  - `next_cursor` string — Opaque cursor for fetching the next page. Empty when no more pages exist.

## Other responses

- `400` — Bad Request — invalid cursor or limit parameter
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found — fulfillment does not exist or feature is not enabled

---

[API](https://skmtc.net/lightspeedhq/apis/api-2026-07.md) · [All operations](https://skmtc.net/lightspeedhq/apis/api-2026-07/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lightspeedhq/api-2026-07/revisions/72d4ceb46dbb/schema)
