# List purchase orders Retrieve a paginated list of purchase orders with optional filtering by status, warehouse, dates, and other criteria. Endpoint: GET /v2/purchase_orders Version: 2.0.0 Security: api_keys ## Query parameters: - `order_number` (string) Filter by order number Example: "02162026-02" - `status` (string) Filter by status Enum: "draft", "open", "receiving", "received", "cancelled", "closed" - `warehouse_id` (string) Filter by warehouse ID - `reference_number` (string) Filter by reference number - `create_date_start` (string) Filter by creation date start (inclusive) Example: "2025-01-01T00:00:00Z" - `page_size` (integer) Number of results per page ## Response 200 fields (application/json): - `purchase_orders` (array) - `purchase_orders.purchase_order_id` (string) Unique identifier for the purchase order Example: "se-234" - `purchase_orders.order_number` (string) Auto-generated order number Example: "02162026-02" - `purchase_orders.supplier_id` (string) Supplier identifier Example: "se-567" - `purchase_orders.supplier_name` (string) Name of the supplier Example: "Acme Widgets Inc" - `purchase_orders.status` (string) Current status of the purchase order Enum: "draft", "open", "receiving", "received", "cancelled", "closed" - `purchase_orders.order_date` (string) Date when the order was placed Example: "2025-01-15T00:00:00Z" - `purchase_orders.expected_delivery_date` (string) Expected delivery date Example: "2025-02-01T00:00:00Z" - `purchase_orders.create_date` (string) Date when the purchase order was created Example: "2025-01-14T10:30:00Z" - `purchase_orders.modify_date` (string) Date when the purchase order was last modified Example: "2025-01-14T10:30:00Z" - `purchase_orders.reference_number` (string) Optional reference number Example: "REF-12345" - `purchase_orders.warehouse_id` (string) Warehouse identifier Example: "se-123456" - `total` (integer) Total number of purchase orders Example: 150 - `page` (integer) Current page number Example: 2 - `pages` (integer) Total number of pages Example: 3 - `links` (object) - `links.first` (object) - `links.first.href` (string) Example: "https://api.shipstation.com/v2/purchase_orders?page_size=50" - `links.next` (object,null) ## Response 400 fields (application/json): - `request_id` (string, required) A UUID that uniquely identifies the request id. This can be given to the support team to help debug non-trivial issues that may occur Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009" - `errors` (array, required) The errors associated with the failed API call - `errors.error_source` (string, required) The source of the error, as indicated by the name this informs us if the API call failed because of the carrier, the order source, or the ShipStation API itself. Enum: "carrier", "order_source", "ShipStation" - `errors.error_type` (string, required) The type of error Enum: "account_status", "business_rules", "validation", "security", "system", "integrations" - `errors.error_code` (string, required) The error code specified for the failed API Call Enum: "auto_fund_not_supported", "batch_cannot_be_modified", "carrier_conflict", "carrier_disconnected", "carrier_not_connected", "carrier_not_supported", "confirmation_not_supported", "default_warehouse_cannot_be_deleted", "field_conflict", "field_value_required", "forbidden", "identifier_conflict", "identifiers_must_match", "insufficient_funds", "invalid_address", "invalid_billing_plan", "invalid_field_value", "invalid_identifier", "invalid_status", "invalid_string_length", "label_images_not_supported", "meter_failure", "order_source_not_active", "rate_limit_exceeded", "refresh_not_supported", "request_body_required", "return_label_not_supported", "settings_not_supported", "subscription_inactive", "terms_not_accepted", "tracking_not_supported", "trial_expired", "unauthorized", "unknown", "unspecified", "verification_failure", "warehouse_conflict", "webhook_event_type_conflict", "customs_items_required", "incompatible_paired_labels", "invalid_charge_event", "invalid_object", "no_rates_returned" - `errors.message` (string, required) An error message associated with the failed API call Example: "Body of request cannot be null." - `errors.field_name` (string) The name of the field that caused the error (only present for validation errors) Example: "inventory_warehouse_id" - `errors.field_value` (string) The invalid value that was provided for the field (only present for validation errors) Example: "invalid-id"