Hi everyone,
I’m creating duplicate Shopify orders via an automation tool using the Admin API.
Context:
The original order has a shipping line from a carrier/app:
source: "Izprati.bg"
code: "v2:..."
The shipping line represents a Speedy service point / pickup office. The carrier app later reads this data to generate the correct label.
When I duplicate the order with GraphQL orderCreate, I can copy shippingLines.title and shippingLines.code, but I cannot set shippingLines.source.
So I tried REST:
POST /admin/api/2026-01/orders.json
with payload like:
{
"order": {
"email": "customer@example.com",
"line_items": [
{
"variant_id": 123456789,
"quantity": 1,
"requires_shipping": true
}
],
"shipping_address": {
"first_name": "Test",
"last_name": "Customer",
"address1": "Address",
"city": "Sofia",
"country_code": "BG",
"phone": "+359..."
},
"shipping_lines": [
{
"title": "0.03 km away - Speedy - SOFIA - OFFICE NAME",
"price": "3.06",
"code": "v2:...",
"source": "Izprati.bg"
}
],
"metafields": [
{
"namespace": "octavawms",
"key": "options_id",
"type": "single_line_text_field",
"value": "v2:..."
}
]
}
}
The order is created, but the carrier app does not treat it as a pickup office delivery. It creates the label as an address delivery instead.
Question:
Does Shopify REST Admin API actually preserve shipping_lines[].source when creating an order via POST /orders.json?
If not, is there any supported way to create/copy an order while preserving the original carrier/app shipping line source and code?
Or is shipping_lines.source read-only / app-generated only?
Any experience with duplicating orders that use carrier service pickup points would be appreciated.