Create an inbound shipment order (IO)
After you convert your item for fulfillment via Walmart Fulfillment Service (WFS), you can create an Inbound Order (IO).
To create an Inbound Shipment Order (IO), call Create Inbound Shipment API: POST /v3/inbound-shipments
Specify all required request parameters
To avoid errors, you must provide information in the request to create the IO. Requests require these parameters:
- Create an ID for the shipment request –
inboundOrderId
- Provide a return address to return shipment if needed –
returnAddress
- Updated shipment quantity –
updatedShipmentQty
- Seller's item ID –
sku
Optional parameters
- addOnService – WFS Prep Services (addOnService). A new program allows you to outsource your inbound inventory preparation to WFS for a small fee.
- Inventory Transfer Service – Inventory Transfer Service (ITS) is a new optional value-added service that allows you to utilize WFS transfer stations to distribute inventory across Walmart's network for a small fee. Using ITS, you can conveniently ship your sortable inventory to one transfer station compared to multiple fulfillment centers via self-distribution.
How it works – addOnService
- You can set a preference for each UPC on your IO (currently, only the Item Labeling service is offered). addOnService is an optional parameter.
- After you request a prep service, the system will notify your assigned WFS fulfillment center.
- When your items arrive, we'll quickly complete your requested add-on services (such as item labeling) and make the items available on Walmart.com.
How it Works – Inventory Transfer Service
- Using the Inbound Preview API to preview the estimated price and shipping destinations is optional for using Inventory Transfer Service (ITS) and self-distribution.
- Using the Create Inbound Shipment API, you can use the 'InventoryTransferService' to choose Y for ITS and N for self-distribution. You have the flexibility to choose for every inbound shipment.
- If you select Y, your sortable items will be assigned to one WFS transfer station as its shipping destination. Otherwise, your sortable items will be assigned to be shipped to multiple fulfillment centers. If a response is not provided, this parameter will be N by default.
How to prevent common errors
- Ensure you have filled in all required fields in the API request call. The IO cannot be created if the required parameters are missing.
- Verify
productId
contains the correct number of digits depending on which item code you specified forproductType
: GTIN. - Make sure the
shipmentId
is unique for this IO request. If it was used previously, it will return errors.
Shipment statuses
When you submit your request to create an Inbound Order, you will receive one of these order statuses in the response:
- Pending shipment details – Shipment is created but still requires a shipment label or tracking information.
- Awaiting delivery – Indicates that the shipment has been created and the shipping label and tracking information have been provided. WFS is waiting for the Shipment to arrive at the warehouse. Shipments remain with Awaiting Delivery status until the first unit has been received. If the carrier states that your shipment has been delivered, but WFS indicates "Awaiting Delivery," it is likely due to backups at the inbound dock. To avoid backups, always schedule freight appointments with required documents in advance.
- Receiving in progress – Indicates that the shipment has been delivered to the warehouse and the inventory has been filled.
- Closed – Indicates that WFS has fulfilled the IO.
- Canceled – Indicates shipment was canceled and will not be sent to the WFS warehouse.
Example: Inbound shipment request
A successful request to create an inbound shipment:
{ "inboundOrderId": "32414541542", "returnAddress": { "addressLine1": "860 W California Ave", "addressLine2": "", "city": "Sunnyvale", "stateCode": "CA", "countryCode": "US", "postalCode": "94086" }, "orderItems": [ { "productId": "231263112312", "productType": "UPC", "sku": "VV-631", "itemDesc": "Blue jeans", "itemQty": 123, "vendorPackQty": 123, "innerPackQty": 1, "expectedDeliveryDate": "2020-05-19T00:00:00.000Z" }, { "productId": "1213223423131", "productType": "EAN", "sku": "VV-234", "itemDesc": "Google mini", "itemQty": 22, "vendorPackQty": 2, "innerPackQty": 11, "expectedDeliveryDate": "2020-05-25T00:00:00.000Z" } ] }
Example: Inbound order response
Upon success, the API returns a response with the status “OK.”
HTTP/1.1 200 OK Content-Length: xxx Content-Type: application/json; charset=utf-8 { "status": "OK", "payload": \[ { "shipmentId": "2312355646", "shipToAddress": { "addressLine1": "860 W California Ave", "addressLine2": "", "city": "Sunnyvale", "stateCode": "CA", "countryCode": "US", "postalCode": "94086" }, "shipmentItems": [ { "sku": "VV-631", "itemQty": 123 } ] } ] }
Example: Inbound shipment response with errors
If the API request fails, you will get the errors returned with FAIL status:
HTTP/1.1 400 BAD REQUEST Content-Length: xxx Content-Type: application/json; charset=utf-8 Error Response { "status": "FAIL", "errors": [ { "code": "400.INBOUND_SHIPMENTS.100", "field": "vendorSku", "description": "vendorSku cannot be null or empty", "severity": "ERROR", "category": "REQUEST", "errorIdentifiers": {} } ] }
How does WFS decide which fulfillment center to send my inbound order?
WFS has an allocation engine to determine network capacity for order fulfillment and sends your Inbound Order to the FC that can handle the shipment request.
Why is there a different expected delivery date in the response?
WFS might change the expected delivery date depending on the Fulfillment center capacity. You might see a different entry in the response for expectedDeliveryDate
than what you provided in the request.
Check for IO errors and resubmit the IO request
Call the Inbound Shipment Errors API to check for errors.
After correcting errors in the Inbound Order, resubmit the request using the same Inbound Order ID: inboundOrderId
.
Updated about 1 month ago