ScanSource Orders API

Sales order creation and management

OpenAPI Specification

scansource-orders-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: ScanSource Invoice Availability Orders API
  description: The ScanSource Invoice API provides programmatic access to invoicing data for technology distribution partners. Includes invoice summaries, detailed invoice lists, individual invoice details, and PDF export capabilities with filtering by date range and order identifiers.
  version: 1.0.0
  contact:
    name: ScanSource Partner Support
    email: B2BRequest@scansource.com
    url: https://partnerportal.scansource.com
servers:
- url: https://services.scansource.com/api
  description: ScanSource Production API
tags:
- name: Orders
  description: Sales order creation and management
paths:
  /salesorder/create:
    post:
      operationId: createSalesOrder
      summary: Create Sales Order
      description: Create a new synchronous sales order in ScanSource. Returns the order confirmation upon completion. Recommended for testing in sandbox before production use.
      tags:
      - Orders
      parameters:
      - name: customerNumber
        in: query
        required: true
        description: Customer account number
        schema:
          type: string
      - name: requestor
        in: query
        required: false
        description: Identifier of the requestor
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SalesOrderRequest'
      responses:
        '200':
          description: Order successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SalesOrderResponse'
        '400':
          description: Bad request - invalid order data
        '401':
          description: Unauthorized
      security:
      - ApiKeyAuth: []
  /salesorder/createAsync:
    post:
      operationId: createSalesOrderAsync
      summary: Create Sales Order Async
      description: Create a new asynchronous sales order. Returns immediately with a reference and processes the order in the background. Use for high-volume or non-blocking integrations.
      tags:
      - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SalesOrderRequest'
      responses:
        '202':
          description: Order accepted for async processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncOrderResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
      security:
      - ApiKeyAuth: []
  /salesorder/vrd:
    post:
      operationId: createVrdOrder
      summary: Create VRD Order
      description: Create a Virtual Return Distribution (VRD) order for managing product returns through ScanSource.
      tags:
      - Orders
      parameters:
      - name: customerNumber
        in: query
        required: true
        description: Customer account number
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: VRD order created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SalesOrderResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
      security:
      - ApiKeyAuth: []
  /salesorder/summary/{customerNumber}:
    get:
      operationId: getSalesOrderSummary
      summary: Get Sales Order Summary
      description: Retrieve a paginated summary view of sales orders for a customer. Supports filtering by date range, sales order number, invoice number, and purchase order number.
      tags:
      - Orders
      parameters:
      - name: customerNumber
        in: path
        required: true
        description: Customer account number
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Page number
        schema:
          type: integer
          default: 1
      - name: pageSize
        in: query
        required: false
        description: Results per page
        schema:
          type: integer
          default: 20
      - name: salesOrderNumber
        in: query
        required: false
        description: Filter by ScanSource sales order number
        schema:
          type: string
      - name: invoiceNumber
        in: query
        required: false
        description: Filter by invoice number
        schema:
          type: string
      - name: poNumber
        in: query
        required: false
        description: Filter by customer purchase order number
        schema:
          type: string
      - name: fromDate
        in: query
        required: false
        description: Start date filter (ISO 8601)
        schema:
          type: string
          format: date
      - name: toDate
        in: query
        required: false
        description: End date filter (ISO 8601)
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Order summary results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderSummaryResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden - invalid customer
      security:
      - ApiKeyAuth: []
  /salesorder/list/{customerNumber}:
    get:
      operationId: listSalesOrders
      summary: List Sales Orders
      description: Retrieve a detailed list of sales orders for a customer with extended order information including pricing and line item details.
      tags:
      - Orders
      parameters:
      - name: customerNumber
        in: path
        required: true
        description: Customer account number
        schema:
          type: string
      - name: page
        in: query
        required: false
        schema:
          type: integer
      - name: pageSize
        in: query
        required: false
        schema:
          type: integer
      - name: salesOrderNumber
        in: query
        required: false
        schema:
          type: string
      - name: poNumber
        in: query
        required: false
        schema:
          type: string
      - name: fromDate
        in: query
        required: false
        schema:
          type: string
          format: date
      - name: toDate
        in: query
        required: false
        schema:
          type: string
          format: date
      responses:
        '200':
          description: Detailed order list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderListResponse'
        '401':
          description: Unauthorized
      security:
      - ApiKeyAuth: []
  /salesorder/detail/{customerNumber}/{salesOrderNumber}:
    get:
      operationId: getSalesOrderDetail
      summary: Get Sales Order Detail
      description: Retrieve comprehensive details for a specific sales order including all line items, pricing, ASN information, and status.
      tags:
      - Orders
      parameters:
      - name: customerNumber
        in: path
        required: true
        description: Customer account number
        schema:
          type: string
      - name: salesOrderNumber
        in: path
        required: true
        description: ScanSource sales order number
        schema:
          type: string
      responses:
        '200':
          description: Detailed order information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderDetail'
        '401':
          description: Unauthorized
        '404':
          description: Order not found
      security:
      - ApiKeyAuth: []
  /salesorder/cancel:
    delete:
      operationId: cancelSalesOrder
      summary: Cancel Sales Order
      description: Cancel a pending sales order. Orders that have already shipped cannot be cancelled.
      tags:
      - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - salesOrderNumber
              properties:
                salesOrderNumber:
                  type: string
                  description: ScanSource order number to cancel
                customerNumber:
                  type: string
                  description: Customer account number
                reason:
                  type: string
                  description: Cancellation reason
      responses:
        '200':
          description: Order successfully cancelled
        '400':
          description: Cannot cancel - order already shipped or invalid
        '401':
          description: Unauthorized
        '404':
          description: Order not found
      security:
      - ApiKeyAuth: []
components:
  schemas:
    SalesOrderRequest:
      type: object
      required:
      - poNumber
      - lineItems
      properties:
        poNumber:
          type: string
          description: Customer purchase order number
        shipToAddress:
          type: object
          properties:
            name:
              type: string
            address1:
              type: string
            address2:
              type: string
            city:
              type: string
            state:
              type: string
            postalCode:
              type: string
            country:
              type: string
        shippingMethod:
          type: string
          description: Preferred shipping carrier/method code
        lineItems:
          type: array
          items:
            type: object
            required:
            - itemNumber
            - quantity
            properties:
              itemNumber:
                type: string
              partNumberType:
                type: string
              quantity:
                type: integer
              unitPrice:
                type: number
              customerItemNumber:
                type: string
    OrderDetail:
      type: object
      properties:
        salesOrderNumber:
          type: string
        poNumber:
          type: string
        customerNumber:
          type: string
        orderDate:
          type: string
          format: date-time
        status:
          type: string
        shipToAddress:
          type: object
        lineItems:
          type: array
          items:
            type: object
            properties:
              lineNumber:
                type: integer
              itemNumber:
                type: string
              manufacturerPartNumber:
                type: string
              description:
                type: string
              quantity:
                type: integer
              unitPrice:
                type: number
              extendedPrice:
                type: number
              status:
                type: string
        totalAmount:
          type: number
        currency:
          type: string
    AsyncOrderResponse:
      type: object
      properties:
        referenceId:
          type: string
          description: Reference ID for tracking the async order
        status:
          type: string
          description: Initial processing status
        message:
          type: string
    OrderSummaryResponse:
      type: object
      properties:
        totalCount:
          type: integer
        page:
          type: integer
        pageSize:
          type: integer
        orders:
          type: array
          items:
            type: object
            properties:
              salesOrderNumber:
                type: string
              poNumber:
                type: string
              orderDate:
                type: string
                format: date-time
              status:
                type: string
              totalAmount:
                type: number
    OrderListResponse:
      type: object
      properties:
        totalCount:
          type: integer
        orders:
          type: array
          items:
            $ref: '#/components/schemas/OrderDetail'
    SalesOrderResponse:
      type: object
      properties:
        salesOrderNumber:
          type: string
          description: ScanSource assigned sales order number
        poNumber:
          type: string
          description: Customer purchase order number
        status:
          type: string
          description: Order status
        orderDate:
          type: string
          format: date-time
        lineItems:
          type: array
          items:
            type: object
            properties:
              lineNumber:
                type: integer
              itemNumber:
                type: string
              quantity:
                type: integer
              unitPrice:
                type: number
              status:
                type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Ocp-Apim-Subscription-Key
      description: Azure API Management subscription key from ScanSource partner portal