Skip to main content

Create WFS Inbound Shipment

POST 

/api/walmart/:integrationInstance/wfs/inbound-shipments

Create a WFS inbound shipment from SKU.io — send the chosen SKUs/quantities into Walmart Fulfillment Services from a warehouse OR a supplier (exactly one). SKU.io enriches each SKU with the GTIN/UPC + description Walmart requires, generates a unique inboundOrderId, builds Walmart's Create-Inbound-Shipment-Order payload (returnAddress from the chosen warehouse's or supplier's address + orderItems), POSTs it to Walmart (POST /v3/fulfillment/inbound-shipments), and persists the shipment(s) Walmart returns — Walmart may split one inbound order across fulfillment centers, so data is an array. Typically driven from the inbound builder or the WFS Replenishment grid's cart ("Send to WFS").

Authorization

Any valid API token can call this endpoint — no specific scope required. Manage tokens.

Request body:

  • source_warehouse_id (integer) — the warehouse the stock ships from. Required unless source_supplier_id is given.
  • source_supplier_id (integer) — the supplier the stock ships from (drop-ship into WFS). Required unless source_warehouse_id is given. Send exactly one of the two.
  • items (required, array, min 1) — each: { sku (required string), quantity (required integer >= 1) }.
  • items[].packing_type (optional, 'individual' | 'case_packed', default 'individual') — Seller Center's "Packing setup". Individual: each outer box holds one sellable unit. Case-packed: master cases of N units.
  • items[].units_per_case (optional, integer >= 1, default 1) — sellable units per master case (Walmart's innerPackQty). Only meaningful for case_packed; quantity MUST divide evenly into cases (422 otherwise). SKU.io maps vendorPackQty = quantity / units_per_case (the case count).
  • items[].prep_services (optional, array of 'LABEL' | 'BAG') — WFS Prep Services Walmart performs on receipt, sent as the order item's addOnServices. LABEL = item labeling ($0.45/unit), BAG = poly bagging ($0.60/unit) — billed by Walmart off its fixed rate card (the API carries no price field). Omit (or send []) for "Do it myself". Prep and packing are LOCKED once the IO is submitted — changing them means cancelling and recreating the inbound.
  • items[].kit_fulfillment_mode (optional): for kit/bundle SKUs — 'kit_stock' (ship pre-built) or 'components' (assemble from components at the source; the build is deferred until the 3PL confirms 'Kits Built').
  • expected_delivery_date (optional, date Y-m-d, must be today or later) — when the stock is expected to reach Walmart's fulfillment center. Walmart requires a non-null estimate; when omitted SKU.io defaults it to 7 days out and Walmart revises it on receipt.

Notes on the Walmart payload SKU.io builds: returnAddress.countryCode is sent as a 2-letter uppercase code (e.g. US), and per Walmart each item's itemQty must equal vendorPackQty × innerPackQty — individually packed items ship with innerPackQty 1, case-packed items with innerPackQty = units_per_case.

Each SKU must have a GTIN/UPC; a SKU without one is rejected (422) before any call to Walmart. Requires a Bearer token.

Request

Responses

Created

Response Headers
    Content-Type