Lightspeed Commerce Purchase Orders API

Purchase order operations

Business capability
Purchase Order Management BC-500.30

Operations 5

GET /purchase_orders List purchase orders #
GET /purchase_orders/{purchase_order_id} Get purchase order by ID #
GET /purchase_orders/{purchase_order_id}/deliveries List purchase order deliveries #
GET /purchase_orders/{purchase_order_id}/deliveries/{delivery_id}/line_items List purchase order delivery line items #
GET /purchase_orders/{purchase_order_id}/line_items List purchase order line items #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lightspeed-purchase-orders-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lightspeed-purchase-orders-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: x-series.api@lightspeedhq.com
    name: Lightspeed Developer Relations
    url: https://developers.retail.lightspeed.app
  description: Lightspeed Retail (X-Series) API.
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: https://developers.lightspeedhq.com/terms
  title: 2026-07 Purchase Orders API
  version: 2026-07
servers:
- url: https://{domain_prefix}.retail.lightspeed.app/api/2026-07
  variables:
    domain_prefix:
      default: example
      description: Domain prefix of the store to be operated on
security:
- bearerAuth: []
tags:
- description: Purchase order operations
  name: Purchase Orders
paths:
  /purchase_orders:
    get:
      description: 'Returns a paginated list of purchase orders using version-based cursor pagination.


        The response includes only purchase orders accessible to the authenticated user. Costs

        and discounts are included when available to the caller. Cost fields require the

        `products:read:costs` scope.


        🔒 Requires: `consignments:read` scope'
      operationId: ListPurchaseOrders
      parameters:
      - $ref: '#/components/parameters/PurchaseOrderAfter'
      - $ref: '#/components/parameters/PurchaseOrderBefore'
      - $ref: '#/components/parameters/PurchaseOrderPageSize'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderCollectionResponse'
          description: OK
      summary: List purchase orders
      tags:
      - Purchase Orders
  /purchase_orders/{purchase_order_id}:
    get:
      description: 'Returns a single purchase order with the requested ID.


        Cost fields require the `products:read:costs` scope.


        🔒 Requires: `consignments:read` scope'
      operationId: GetPurchaseOrderByID
      parameters:
      - $ref: '#/components/parameters/PurchaseOrderID'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderResponse'
          description: OK
      summary: Get purchase order by ID
      tags:
      - Purchase Orders
  /purchase_orders/{purchase_order_id}/deliveries:
    get:
      description: 'Returns a paginated list of deliveries belonging to a purchase order using version-based

        cursor pagination. Cost fields require the `products:read:costs` scope.


        🔒 Requires: `consignments:read` scope'
      operationId: ListPurchaseOrderDeliveries
      parameters:
      - $ref: '#/components/parameters/PurchaseOrderID'
      - $ref: '#/components/parameters/PurchaseOrderAfter'
      - $ref: '#/components/parameters/PurchaseOrderBefore'
      - $ref: '#/components/parameters/PurchaseOrderPageSize'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderDeliveryCollectionResponse'
          description: OK
      summary: List purchase order deliveries
      tags:
      - Purchase Orders
  /purchase_orders/{purchase_order_id}/deliveries/{delivery_id}/line_items:
    get:
      description: 'Returns a paginated list of line items belonging to a purchase order delivery using

        version-based cursor pagination. Cost fields require the `products:read:costs` scope.


        🔒 Requires: `consignments:read` scope'
      operationId: ListPurchaseOrderDeliveryLineItems
      parameters:
      - $ref: '#/components/parameters/PurchaseOrderID'
      - description: The unique identifier of the purchase order delivery.
        in: path
        name: delivery_id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/PurchaseOrderAfter'
      - $ref: '#/components/parameters/PurchaseOrderBefore'
      - $ref: '#/components/parameters/PurchaseOrderPageSize'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderDeliveryLineItemCollectionResponse'
          description: OK
      summary: List purchase order delivery line items
      tags:
      - Purchase Orders
  /purchase_orders/{purchase_order_id}/line_items:
    get:
      description: 'Returns a paginated list of line items belonging to a purchase order using version-based

        cursor pagination. Cost fields require the `products:read:costs` scope.


        🔒 Requires: `consignments:read` scope'
      operationId: ListPurchaseOrderLineItems
      parameters:
      - $ref: '#/components/parameters/PurchaseOrderID'
      - $ref: '#/components/parameters/PurchaseOrderAfter'
      - $ref: '#/components/parameters/PurchaseOrderBefore'
      - $ref: '#/components/parameters/PurchaseOrderPageSize'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrderLineItemCollectionResponse'
          description: OK
      summary: List purchase order line items
      tags:
      - Purchase Orders
components:
  schemas:
    PurchaseOrderLineItem:
      properties:
        allocations:
          items:
            $ref: '#/components/schemas/PurchaseOrderLineItemAllocation'
          type: array
        components:
          items:
            $ref: '#/components/schemas/PurchaseOrderLineItemComponent'
          type: array
        cost_price:
          type:
          - string
          - 'null'
        created_at:
          format: date-time
          type: string
        id:
          type: string
        product_id:
          type: string
        purchase_order_id:
          type: string
        quantity:
          type: string
        updated_at:
          format: date-time
          type: string
        version:
          format: int64
          type: integer
      required:
      - id
      - version
      - purchase_order_id
      - product_id
      - quantity
      - cost_price
      - allocations
      - created_at
      - updated_at
      title: Purchase Order Line Item
      type: object
    PurchaseOrderCost:
      properties:
        amount:
          description: Cost amount represented as a decimal string.
          type: string
        created_at:
          format: date-time
          type: string
        id:
          type: string
        purchase_order_delivery_id:
          type:
          - string
          - 'null'
        type:
          type: string
        updated_at:
          format: date-time
          type: string
      required:
      - id
      - purchase_order_delivery_id
      - type
      - amount
      - created_at
      - updated_at
      title: Purchase Order Cost
      type: object
    PurchaseOrderResponse:
      example:
        data:
          allocation_outlet_ids:
          - 6ba7b810-9dad-41d1-80b4-00c04fd430c8
          cost_price_total: '25.00'
          created_at: '2026-04-01T12:00:00Z'
          delivery_outlet_id: 6ba7b810-9dad-41d1-80b4-00c04fd430c8
          due_at: '2026-04-15T10:00:00Z'
          id: 550e8400-e29b-41d4-a716-446655440000
          notes: Restock front outlet
          order_number: PO-1001
          quantity_total: '10'
          status: OPEN
          supplier_id: 6ba7b811-9dad-41d1-80b4-00c04fd430c8
          supplier_invoice: null
          updated_at: '2026-04-01T12:00:00Z'
          user_id: 7c9e6679-7425-40de-944b-e07fc1f90ae7
          version: 42
      properties:
        data:
          $ref: '#/components/schemas/PurchaseOrder'
      required:
      - data
      title: Purchase Order Response
      type: object
    PurchaseOrderDeliveryLineItemAllocation:
      properties:
        expected_quantity:
          type: string
        outlet_id:
          type: string
        received_quantity:
          type: string
      required:
      - outlet_id
      - expected_quantity
      - received_quantity
      title: Purchase Order Delivery Line Item Allocation
      type: object
    PurchaseOrderVersion:
      properties:
        max:
          description: Highest version number in the payload.
          format: int64
          type:
          - integer
          - 'null'
        min:
          description: Lowest version number in the payload.
          format: int64
          type:
          - integer
          - 'null'
      required:
      - min
      - max
      title: Purchase Order Version
      type: object
    PurchaseOrderLineItemComponent:
      properties:
        bom_quantity:
          type: string
        component_product_id:
          type: string
        cost_price:
          type:
          - string
          - 'null'
      required:
      - component_product_id
      - bom_quantity
      - cost_price
      title: Purchase Order Line Item Component
      type: object
    PurchaseOrderDeliveryCollectionResponse:
      example:
        data:
        - cost_price_total: '25.00'
          created_at: '2026-04-01T12:00:00Z'
          due_at: null
          id: 550e8403-e29b-41d4-a716-446655440000
          invoice_date: null
          notes: null
          outlet_id: 6ba7b810-9dad-41d1-80b4-00c04fd430c8
          purchase_order_id: 550e8400-e29b-41d4-a716-446655440000
          received_at: null
          received_quantity_total: '0'
          status: DRAFT
          supplier_invoice: null
          updated_at: '2026-04-01T12:00:00Z'
          user_id: null
          version: 3
        version:
          max: 3
          min: 3
      properties:
        data:
          items:
            $ref: '#/components/schemas/PurchaseOrderDelivery'
          type: array
        version:
          $ref: '#/components/schemas/PurchaseOrderVersion'
      required:
      - data
      - version
      title: Purchase Order Delivery Collection Response
      type: object
    PurchaseOrderCollectionResponse:
      example:
        data:
        - allocation_outlet_ids: []
          cost_price_total: null
          created_at: '2026-04-01T12:00:00Z'
          delivery_outlet_id: 6ba7b810-9dad-41d1-80b4-00c04fd430c8
          due_at: null
          id: 550e8400-e29b-41d4-a716-446655440000
          notes: null
          order_number: PO-1001
          quantity_total: '10'
          status: OPEN
          supplier_id: 6ba7b811-9dad-41d1-80b4-00c04fd430c8
          supplier_invoice: null
          updated_at: '2026-04-01T12:00:00Z'
          user_id: null
          version: 42
        version:
          max: 42
          min: 42
      properties:
        data:
          items:
            $ref: '#/components/schemas/PurchaseOrder'
          type: array
        version:
          $ref: '#/components/schemas/PurchaseOrderVersion'
      required:
      - data
      - version
      title: Purchase Order Collection Response
      type: object
    PurchaseOrderDeliveryLineItemCollectionResponse:
      example:
        data:
        - allocations:
          - expected_quantity: '10'
            outlet_id: 6ba7b810-9dad-41d1-80b4-00c04fd430c8
            received_quantity: '0'
          cost_price: '2.50'
          created_at: '2026-04-01T12:00:00Z'
          expected_quantity: '10'
          id: 550e8404-e29b-41d4-a716-446655440000
          product_id: 550e8402-e29b-41d4-a716-446655440000
          purchase_order_delivery_id: 550e8403-e29b-41d4-a716-446655440000
          purchase_order_line_item_id: 550e8401-e29b-41d4-a716-446655440000
          received_quantity: '0'
          updated_at: '2026-04-01T12:00:00Z'
          version: 4
        version:
          max: 4
          min: 4
      properties:
        data:
          items:
            $ref: '#/components/schemas/PurchaseOrderDeliveryLineItem'
          type: array
        version:
          $ref: '#/components/schemas/PurchaseOrderVersion'
      required:
      - data
      - version
      title: Purchase Order Delivery Line Item Collection Response
      type: object
    PurchaseOrderLineItemAllocation:
      properties:
        outlet_id:
          type: string
        quantity:
          type: string
      required:
      - outlet_id
      - quantity
      title: Purchase Order Line Item Allocation
      type: object
    PurchaseOrderDeliveryLineItem:
      properties:
        allocations:
          items:
            $ref: '#/components/schemas/PurchaseOrderDeliveryLineItemAllocation'
          type: array
        components:
          items:
            $ref: '#/components/schemas/PurchaseOrderDeliveryLineItemComponent'
          type: array
        cost_price:
          type:
          - string
          - 'null'
        created_at:
          format: date-time
          type: string
        expected_quantity:
          type: string
        id:
          type: string
        product_id:
          type: string
        purchase_order_delivery_id:
          type: string
        purchase_order_line_item_id:
          type: string
        received_quantity:
          type: string
        updated_at:
          format: date-time
          type: string
        version:
          format: int64
          type: integer
      required:
      - id
      - version
      - purchase_order_delivery_id
      - purchase_order_line_item_id
      - product_id
      - expected_quantity
      - received_quantity
      - cost_price
      - allocations
      - created_at
      - updated_at
      title: Purchase Order Delivery Line Item
      type: object
    PurchaseOrder:
      properties:
        allocation_outlet_ids:
          items:
            type: string
          type: array
        cost_price_total:
          description: Total cost represented as a decimal string.
          type:
          - string
          - 'null'
        costs:
          items:
            $ref: '#/components/schemas/PurchaseOrderCost'
          type: array
        created_at:
          format: date-time
          type: string
        delivery_outlet_id:
          type: string
        discounts:
          items:
            $ref: '#/components/schemas/PurchaseOrderDiscount'
          type: array
        due_at:
          format: date-time
          type:
          - string
          - 'null'
        id:
          type: string
        notes:
          type:
          - string
          - 'null'
        order_number:
          type:
          - string
          - 'null'
        quantity_total:
          description: Total quantity represented as a decimal string.
          type: string
        status:
          type: string
        supplier_id:
          type:
          - string
          - 'null'
        supplier_invoice:
          type:
          - string
          - 'null'
        updated_at:
          format: date-time
          type: string
        user_id:
          type:
          - string
          - 'null'
        version:
          format: int64
          type: integer
      required:
      - id
      - version
      - user_id
      - order_number
      - notes
      - delivery_outlet_id
      - allocation_outlet_ids
      - supplier_id
      - supplier_invoice
      - status
      - due_at
      - cost_price_total
      - quantity_total
      - created_at
      - updated_at
      title: Purchase Order
      type: object
    PurchaseOrderDeliveryLineItemComponent:
      properties:
        bom_quantity:
          type: string
        component_product_id:
          type: string
        cost_price:
          type:
          - string
          - 'null'
      required:
      - component_product_id
      - bom_quantity
      - cost_price
      title: Purchase Order Delivery Line Item Component
      type: object
    PurchaseOrderDelivery:
      properties:
        cost_price_total:
          type:
          - string
          - 'null'
        costs:
          items:
            $ref: '#/components/schemas/PurchaseOrderCost'
          type: array
        created_at:
          format: date-time
          type: string
        discounts:
          items:
            $ref: '#/components/schemas/PurchaseOrderDiscount'
          type: array
        due_at:
          format: date-time
          type:
          - string
          - 'null'
        id:
          type: string
        invoice_date:
          format: date-time
          type:
          - string
          - 'null'
        notes:
          type:
          - string
          - 'null'
        outlet_id:
          type: string
        purchase_order_id:
          type: string
        received_at:
          format: date-time
          type:
          - string
          - 'null'
        received_quantity_total:
          type: string
        status:
          type: string
        supplier_invoice:
          type:
          - string
          - 'null'
        updated_at:
          format: date-time
          type: string
        user_id:
          type:
          - string
          - 'null'
        version:
          format: int64
          type: integer
      required:
      - id
      - version
      - purchase_order_id
      - outlet_id
      - user_id
      - notes
      - status
      - due_at
      - received_at
      - invoice_date
      - supplier_invoice
      - cost_price_total
      - received_quantity_total
      - created_at
      - updated_at
      title: Purchase Order Delivery
      type: object
    PurchaseOrderDiscount:
      properties:
        amount:
          description: Discount amount represented as a decimal string.
          type: string
        created_at:
          format: date-time
          type: string
        id:
          type: string
        purchase_order_delivery_id:
          type:
          - string
          - 'null'
        type:
          type: string
        updated_at:
          format: date-time
          type: string
      required:
      - id
      - purchase_order_delivery_id
      - type
      - amount
      - created_at
      - updated_at
      title: Purchase Order Discount
      type: object
    PurchaseOrderLineItemCollectionResponse:
      example:
        data:
        - allocations:
          - outlet_id: 6ba7b810-9dad-41d1-80b4-00c04fd430c8
            quantity: '10'
          cost_price: '2.50'
          created_at: '2026-04-01T12:00:00Z'
          id: 550e8401-e29b-41d4-a716-446655440000
          product_id: 550e8402-e29b-41d4-a716-446655440000
          purchase_order_id: 550e8400-e29b-41d4-a716-446655440000
          quantity: '10'
          updated_at: '2026-04-01T12:00:00Z'
          version: 7
        version:
          max: 7
          min: 7
      properties:
        data:
          items:
            $ref: '#/components/schemas/PurchaseOrderLineItem'
          type: array
        version:
          $ref: '#/components/schemas/PurchaseOrderVersion'
      required:
      - data
      - version
      title: Purchase Order Line Item Collection Response
      type: object
  parameters:
    PurchaseOrderAfter:
      description: The lower limit for the version numbers to be included in the response.
      in: query
      name: after
      schema:
        format: int64
        minimum: 0
        type: integer
    PurchaseOrderBefore:
      description: The upper limit for the version numbers to be included in the response.
      in: query
      name: before
      schema:
        format: int64
        minimum: 0
        type: integer
    PurchaseOrderPageSize:
      description: The maximum number of items to return. Defaults to 100 and cannot exceed 1000.
      in: query
      name: page_size
      schema:
        format: int64
        maximum: 1000
        minimum: 0
        type: integer
    PurchaseOrderID:
      description: The unique identifier of the purchase order.
      in: path
      name: purchase_order_id
      required: true
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      description: Bearer Token for API authentication.
      scheme: bearer
      type: http
externalDocs:
  description: List of tz database time zones
  url: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones