This guide demonstrates how to split ship a sales order by creating multiple shipments from a single order with multiple items.
The split shipping process involves:
- Retrieve the Sales Order with multiple items
- Create separate shipments for each item
- Generate labels for the individual shipments
GET /v-beta/sales_orders/0d3c142a-7516-5f5b-8a40-b437b5e01317 HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__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
}]
}]
}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
}]
}]
}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"
}- Split orders across multiple shipments
- Each shipment references specific order items
- Address validation included
- Support for various carriers and services
- Multiple label formats available
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.