Skip to content

Split Ship a Sales Order

This guide demonstrates how to split ship a sales order by creating multiple shipments from a single order with multiple items.

Process Overview

The split shipping process involves:

  1. Retrieve the Sales Order with multiple items
  2. Create separate shipments for each item
  3. Generate labels for the individual shipments

API Examples

1. Use a Sales Order with Multiple Sales Order Items

GET /v-beta/sales_orders/0d3c142a-7516-5f5b-8a40-b437b5e01317 HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__

2. Create a Shipment for the First Item

POST /v-beta/shipments HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__
Content-Type: application/json
{
  "shipments": [{
    "validate_address": "validate_and_clean",
    "carrier_id": "se-123890",
    "service_code": "usps_priority_mail",
    "warehouse_id": "se-241419",
    "ship_to": {
      "name": "Amanda Miller",
      "phone": "555-555-5555",
      "address_line1": "525 S Winchester Blvd",
      "city_locality": "San Jose",
      "state_province": "CA",
      "postal_code": "95128",
      "country_code": "US",
      "address_residential_indicator": "yes"
    },
    "packages": [{
      "package_code": "package",
      "weight": {
        "value": 1.0,
        "unit": "ounce"
      }
    }],
    "items": [{
      "sales_order_id": "0d3c142a-7516-5f5b-8a40-b437b5e01317",
      "sales_order_item_id": "0399c595-774a-599b-a566-27ea86fec17d",
      "quantity": 1
    }]
  }]
}

3. Create a Shipment for the Second Item

The request structure is similar, but references a different sales_order_item_id:

{
  "shipments": [{
    "validate_address": "validate_and_clean",
    "carrier_id": "se-123890",
    "service_code": "usps_priority_mail",
    "warehouse_id": "se-241419",
    "ship_to": {
      "name": "Amanda Miller",
      "phone": "555-555-5555",
      "address_line1": "525 S Winchester Blvd",
      "city_locality": "San Jose",
      "state_province": "CA",
      "postal_code": "95128",
      "country_code": "US",
      "address_residential_indicator": "yes"
    },
    "packages": [{
      "package_code": "package",
      "weight": {
        "value": 1.0,
        "unit": "ounce"
      }
    }],
    "items": [{
      "sales_order_id": "0d3c142a-7516-5f5b-8a40-b437b5e01317",
      "sales_order_item_id": "4afd6df4-d679-51d7-a858-8aff7d6103c2",
      "quantity": 1
    }]
  }]
}

4. Create Labels for the Shipments

POST /v-beta/labels/shipment/se-201053690 HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__
Content-Type: application/json
{
  "label_format": "pdf"
}

Key Features

  • Split orders across multiple shipments
  • Each shipment references specific order items
  • Address validation included
  • Support for various carriers and services
  • Multiple label formats available