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

Split or Merge Existing Shipments

If a shipment linked to a sales order already exists, you don't need to create new shipments yourself. You can move items from it into new shipments, or merge shipments together, with the split and merge endpoints. See Split and Merge Shipments.