Ship an order

Use this endpoint to ship an order by updating its shipping details. You must include the shipDateTime in UTC to record when the shipment occurred. This call updates the order's status to Shipped and triggers the customer charge.

Note: Orders must be acknowledged before shipping. Orders fulfilled by Walmart Fulfillment Services (WFS) cannot be shipped with this endpoint. Use the Create an inbound shipment order endpoint instead.

Endpoint

POST https://marketplace.walmartapis.com/v3/orders/{purchaseOrderId}/shipping

Sample response:

curl -X POST "https://marketplace.walmartapis.com/v3/orders/{purchaseOrderId}/shipping" \ -H "Authorization: Basic <Base64EncodedClientID:ClientSecret>" \ -H "WM_SVC.NAME: Walmart Marketplace" \ -H "WM_QOS.CORRELATION_ID: 0123456" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "orderLines": [ { "lineNumber": "1", "trackingInfo": { "shipDateTime": "2025-02-19T12:00:00Z", "carrierName": "CarrierX", "methodCode": "VALUE", "trackingNumber": "TRACKNUM12345", "trackingURL": "http://www.example.com/tracking?track_id=TRACKNUM12345" } } ] }'
import requests url = "https://marketplace.walmartapis.com/v3/orders/{purchaseOrderId}/shipping" headers = { "Authorization": "Basic <Base64EncodedClientID:ClientSecret>", "WM_SVC.NAME": "Walmart Marketplace", "WM_QOS.CORRELATION_ID": "0123456", "Accept": "application/json", "Content-Type": "application/json"
} data = { "orderLines": [ { "lineNumber": "1", "trackingInfo": { "shipDateTime": "2025-02-19T12:00:00Z", "carrierName": "CarrierX", "methodCode": "VALUE", "trackingNumber": "TRACKNUM12345", "trackingURL": "http://www.example.com/tracking?track_id=TRACKNUM12345" } } ]
} response = requests.post(url, headers=headers, json=data)
print(response.json())

Modify your code

  • Replace {purchaseOrderId} in the endpoint URL with the actual order ID.
  • Substitute <Base64EncodedClientID:ClientSecret> with your Base64-encoded credentials.
  • Update WM_QOS.CORRELATION_ID with a unique identifier for tracking your request.
  • Adjust the orderLines payload as needed for your specific order.
  • Ensure shipDateTime is in UTC format.

Sample response

{ "order": { "purchaseOrderId": "0123456789", "customerOrderId": "ABCDEFGHIJ", "sellerOrderId": "KLMNOPQRST", "customerEmailId": "[email protected]", "orderType": "PREORDER", "orderDate": 1478284060000, "shippingInfo": { "phone": "0123456789", "estimatedDeliveryDate": 1479798000000, "estimatedShipDate": 1478674800000, "methodCode": "VALUE", "postalAddress": { "name": "Jane Doe", "address1": "123 Main St", "city": "CITY", "state": "STATE", "postalCode": "ZIPCODE", "country": "COUNTRY", "addressType": "OFFICE" } }, "orderLines": { "orderLine": [ { "lineNumber": "1", "item": { "productName": "Example Product", "sku": "SKU12345" }, "charges": { "charge": [ { "chargeType": "PRODUCT", "chargeName": "ItemPrice", "chargeAmount": { "currency": "USD", "amount": 555 }, "tax": { "taxName": "Tax1", "taxAmount": { "currency": "USD", "amount": 48.56 } } } ] }, "orderLineQuantity": { "unitOfMeasurement": "EACH", "amount": "1" }, "statusDate": 1478297929000, "orderLineStatuses": { "orderLineStatus": [ { "status": "Shipped", "statusQuantity": { "unitOfMeasurement": "EACH", "amount": "1" }, "trackingInfo": { "shipDateTime": 1438163400000, "carrierName": { "carrier": "CarrierX" }, "methodCode": "VALUE", "trackingNumber": "TRACKNUM12345", "trackingURL": "http://www.example.com/tracking?track_id=TRACKNUM12345" }, "returnCenterAddress": { "name": "RETURNCENTER", "address1": "123 Bridge St", "city": "CITY", "state": "STATE", "postalCode": "ZIPCODE", "country": "COUNTRY", "dayPhone": "0123456789", "emailId": "[email protected]" } } ] } } ] } }
}

Result

If successful, the API returns an HTTP status: 200 OK along with a JSON object showing the updated order details. The specified order lines will now be in the Shipped status, confirming that the shipping details have been updated and the charge to the customer has been triggered.