Skip to content
Last updated

List & Get Purchase Orders

Retrieve purchase orders to view order history, check status, and access detailed information. Use the list endpoint to find orders with filtering, or get a specific order by ID to see full details including all products.

List Purchase Orders

Use the GET method with /v2/purchase_orders to retrieve a paginated list of purchase orders. You can filter the results by status, warehouse, dates, and other criteria.

Query Parameters

Use the following query parameters to filter your purchase orders:

Query ParameterTypeDescription
order_numberstringFilter by the auto-generated order number
statusenumerated stringFilter by purchase order status: draft, open, receiving, received, closed, cancelled
warehouse_idstringFilter by warehouse ID where products will be received
reference_numberstringFilter by your custom reference number
create_date_startstring (date-time)Filter by creation date start (inclusive). Format: ISO 8601 (e.g., 2025-01-01T00:00:00Z)
page_sizeintegerNumber of results per page (default: 50, minimum: 1, maximum: 500)

Response Properties

The response includes a purchase_orders array with the following properties for each purchase order:

PropertyTypeDescription
purchase_order_idstringUnique identifier for the purchase order
order_numberstringAuto-generated order number (e.g., "02162026-02")
supplier_idstringIdentifier for the supplier
supplier_namestringName of the supplier
statusenumerated stringCurrent status: draft, open, receiving, received, cancelled, closed
order_datestring (date-time)Date when the order was placed with the supplier
expected_delivery_datestring (date-time)Expected delivery date for the order
create_datestring (date-time)Date when the purchase order was created in the system
modify_datestring (date-time)Date when the purchase order was last modified
reference_numberstringOptional custom reference number
warehouse_idstringWarehouse where products will be received

The response also includes pagination metadata: total (total number of purchase orders) and links (HATEOAS navigation links). The cursor for the next page is embedded in the links.next.href URL.

Example Request & Response

GET /v2/purchase_orders

curl -i -X GET \
  'https://api.shipstation.com/v2/purchase_orders?order_number=02162026-02&status=draft&warehouse_id=string&reference_number=string&create_date_start=2025-01-01T00%3A00%3A00Z&page_size=50' \
  -H 'api-key: YOUR_API_KEY_HERE'

Get Purchase Order Details

Use the GET method with /v2/purchase_orders/{purchase_order_id} to retrieve detailed information about a specific purchase order, including all products.

Path Parameters

ParameterTypeDescription
purchase_order_idstringThe unique identifier of the purchase order

Response Properties

PropertyTypeDescription
purchase_order_idstringUnique identifier for the purchase order
order_numberstringAuto-generated order number (e.g., "02162026-02")
supplier_idstringIdentifier for the supplier
statusenumerated stringCurrent status: draft, open, receiving, received, cancelled, closed
order_datestring (date-time)Date when the order was placed with the supplier
expected_delivery_datestring (date-time)Expected delivery date for the order
create_datestring (date-time)Date when the purchase order was created in the system
modify_datestring (date-time)Date when the purchase order was last modified
reference_numberstringOptional custom reference number
warehouse_idstringWarehouse where products will be received
payment_termsenumerated stringPayment terms: none, cash_on_delivery, payment_on_receipt, payment_in_advance, net_7, net_15, net_30, net_45, net_60
payment_statusenumerated stringPayment status: none, unpaid, partially_paid, paid, refunded, credit_issued, other
currency_codestringISO 4217 currency code (e.g., "USD")
shipping_carrierstringShipping carrier name for shipment tracking
tracking_numberstringTracking number for the shipment from supplier
note_to_supplierstringNotes or special instructions for the supplier
productsarrayArray of product objects (see below)

Product Properties

Each product in the products array contains:

PropertyTypeDescription
skustringStock Keeping Unit identifier
supplier_skustringSupplier's SKU for this product
quantityintegerQuantity ordered
costnumberUnit cost of the product

Example Request & Response

GET /v2/purchase_orders/{purchase_order_id}

curl -i -X GET \
  https://api.shipstation.com/v2/purchase_orders/se-234 \
  -H 'api-key: YOUR_API_KEY_HERE'

Filtering and Pagination Examples

Filter Examples

Find purchase orders by status:

GET /v2/purchase_orders?status=open&page_size=50

Find orders from a specific warehouse:

GET /v2/purchase_orders?warehouse_id=se-123456&page_size=50

Find orders by order number:

GET /v2/purchase_orders?order_number=02162026-02

Find orders created after a specific date:

GET /v2/purchase_orders?create_date_start=2025-01-01T00:00:00Z&page_size=50

Combine multiple filters:

GET /v2/purchase_orders?status=open&warehouse_id=se-123456&page_size=25

Pagination Examples

Get first page of results:

GET /v2/purchase_orders?page_size=50

Get next page using cursor from response links:

GET /v2/purchase_orders?cursor=eyJQYWdlIjoyLCJQYWdlU2l6ZSI6NTAsIk9yZGVyTnVtYmVyIjpudWxsLCJTdGF0dXMiOiJvcGVuIiwiV2FyZWhvdXNlSWQiOm51bGwsIlJlZmVyZW5jZU51bWJlciI6bnVsbCwiQ3JlYXRlRGF0ZVN0YXJ0IjpudWxsfQ

Pagination Tips

  • First page: Make request without cursor parameter
  • Next page: Use the cursor value from links.next.href in the response
  • Page size: Control number of results with page_size (default: 50, max: 500)
  • End of results: When links.next is null, you've reached the last page
  • Filters persist: The cursor preserves all filter parameters from the original request

Purchase Order Statuses

Purchase orders follow a specific lifecycle:

  • draft: Initial state when a purchase order is created
  • open: Purchase order has been sent to the supplier
  • receiving: Products are being received (partial receipt)
  • received: All products have been fully received
  • cancelled: Purchase order has been cancelled
  • closed: All Purchase order action has been processed