2026-07

2026-07 Release Notes

Fulfillments

New Endpoints

  • GET /fulfillments/{fulfillment_id}/history: Retrieves the history ledger for a single fulfillment, showing all state-change events for each line item. Results are ordered oldest-first and support cursor-based pagination. Requires fulfillments:read scope.

Response

The endpoint returns a FulfillmentHistoryResponse object with the following fields:

FieldTypeDescription
dataarray of FulfillmentHistoryEntryList of history entries ordered oldest-first.
next_cursorstringOpaque cursor for fetching the next page. Empty when no more pages exist.

Each FulfillmentHistoryEntry contains:

FieldTypeDescription
sale_line_item_idstring (uuid)The ID of the sale line item this event relates to.
product_idstring (uuid)The ID of the product associated with the line item.
event_typestring (enum)The type of state-change event. One of: CREATED, QUANTITY_UPDATED, REMOVED, PICKED, PACKED, FULFILLED, VOIDED, UNVOIDED, RETURNED, RETURN_VOIDED, SPLIT.
quantity_deltastringChange in total quantity for this line item.
picked_quantity_deltastringChange in picked quantity for this line item.
packed_quantity_deltastringChange in packed quantity for this line item.
fulfilled_deltastringChange in fulfilled quantity for this line item.
source_sale_idstring (uuid)The ID of the source sale. Present only for RETURNED and SPLIT events.
created_atstring (date-time)Timestamp when the event was recorded.

Pagination

Use the limit query parameter (max 1000) to control page size. Pass the cursor value from a previous response to retrieve the next page. When next_cursor is empty, no more pages exist.

Deprecations

The following endpoints were deprecated in 2026-04 and have now been removed:

  • POST /sales/{sale_id}/fulfill: Removed. Please use POST /fulfillments/fulfill instead.
  • GET /sales/{sale_id}/fulfillments: Removed. Please use GET /fulfillments instead.
  • GET /sales/{sale_id}/pick_lists: Removed. Please use GET /fulfillments instead.