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.
Updated 14 days ago