Multi-Line Multi-Quantity (MLMQ) migration guide
Multi-Line Multi-Quantity (MLMQ) is an upgraded order data model that allows a single purchase order (PO) line to contain multiple units of an item, rather than treating each unit as a separate order line. This enables order processing at the line level with explicit quantities.
MLMQ replaces the legacy Multi-Line Single Quantity (MLSQ) model, where each unit was represented and processed, acknowledged, shipped, and refunded as an individual order line.
Key terms
- Purchase order (PO): A customer order in Walmart Marketplace, identified by a
purchaseOrderId. - Order line: A line item within a purchase order representing a specific item.
- Quantity: The number of units for a given order line. In MLMQ, a single order line can have a quantity greater than 1.
Comparison: MLMQ vs MLSQ
The following table shows the comparison between Multi-Line Multi-Quantity (MLMQ) vs Multi-Line Single Quantity (MLSQ).
| Scenario | MLSQ (Legacy) | MLMQ (Required) |
|---|---|---|
| Customer orders 3 units of item | 3 separate order lines, each with quantity = 1. Each line must be acknowledged, shipped, and refunded independently. | 1 order line with orderLineQuantity = 3. Acknowledge, ship, cancel, and refund the full purchase order (PO) line level, specifically the quantity being processed. |
| Partial refund | Refund is processed per line. Quantity is implicitly 1 per line. | Specify quantity in the refund request to refund 1 or more units from a multi-quantity order line. |
| Return tracking | Limited tracking fields. No support for refund channel visibility. | Returns response includes currentTrackingStatuses and refundChannels. |
Why this update is required
MLMQ is a foundational requirement for Walmart Marketplace capabilities, including:
- Virtual Packs
- Soft bundling
- Hard bundling
Integrations that are not MLMQ-compliant cannot be enabled for these features. There are no exceptions or whitelist workarounds.
Who needs to take action
You must update your integration to support MLMQ if any of the following apply:
- Direct API integrations: You use Walmart Marketplace APIs directly. Sellers managing their own Walmart Marketplace API integration must update their implementation to the current API specification at developer.smiedemann.shop. This is required to support MLMQ across Orders, Returns, and Refunds APIs.
- Approved Solution Providers: An Approved Solution Provider does the API integration for you. Approved Solution Providers must complete MLMQ-related API updates for their platforms. Sellers using an Approved Solution Provider should confirm their provider is MLMQ-compliant before requesting enablement.
No action is required if any of the following apply:
- Seller Center only (no API integration): Sellers managing all operations through Walmart Seller Center do not need to make any changes.
- Fully managed WFS sellers: Sellers fully enrolled in Walmart Fulfillment Services (WFS) for the last 365 days are automatically compliant, as Walmart manages fulfillment on their behalf.
Update your API integration for MLMQ
To support Multi-Line Multi-Quantity (MLMQ), you must update your API integration to correctly handle order lines with quantities greater than 1. MLMQ is required to enable bundle and pack-based fulfillment capabilities, including Virtual Packs. The following steps outline the required changes across Orders, Returns, and Refunds APIs.
For the latest specifications for Orders, Returns, and Refunds APIs, refer to the Walmart Marketplace API reference.
- Base URL:
https://marketplace.walmartapis.com - Authentication: OAuth 2.0 using the Token API
Step 1: Review API docs
Review the latest API specification for Orders, Returns, and Refunds. Refer to:
Step 2: Update payloads
Update your request and response handling to support MLMQ fields.
Orders API
Endpoints
GET /v3/orders
POST /v3/orders/{purchaseOrderId}/acknowledge POST /v3/orders/{purchaseOrderId}/shipping POST /v3/orders/{purchaseOrderId}/cancelWhat changed
Order lines can now include orderLineQuantity > 1. Systems that previously assumed each order line always had a quantity of 1 must be updated to correctly read and process the quantity value from each orderLine object.
Action required
- Read
orderLine.orderLineQuantity.amount - Do not assume quantity = 1 per order line
- Update fulfillment logic to process the actual quantity for each order line.
Implementation details
- Get / Acknowledge Orders: Read
orderLine.orderLineQuantity.amountwhen retrieving and acknowledging orders. Do not assume quantity = 1 per line. Ensure your fulfillment logic accounts for the total quantity on each order line. For example, when allocating inventory or preparing shipments. - Ship Order: Reference the correct
lineNumberin the request. Include the full quantity being shipped for each line. For partial shipments, specify the quantity per shipment line. - Cancel Order: Include
orderLines.orderLine[].orderLineStatuses.orderLineStatus[].quantityin the request. Ensure that the quantity reflects the actual number of units being cancelled. Do not hardcode quantity to 1.
Returns API
Endpoint
GET /v3/returnsWhat changed
The Returns response schema has been expanded with two new fields that your integration must parse to support MLMQ return workflows.
New fields
currentTrackingStatuses(New): Array of current carrier tracking statuses for returned items. Used to determine whether a return is in transit, received, or completed before issuing a refund.refundChannels(New): Indicates the channel(s) through which a refund can or has been processed. Examples include the original payment method or a Walmart gift card. Must be used to correctly route refund actions.
Action required
- Update the response parsing logic to handle the new fields.
- Ensure your
GET /v3/returnsresponse parsing does not fail or drop records when these fields are present. - Update your data models or Data Transfer Objects to include these fields.
Refunds API (Issue refund)
Endpoint
POST /v3/orders/{purchaseOrderId}/refundWhat changed
The Issue Refund endpoint now requires a quantity field per refund line to support partial refunds on multi-quantity order lines.
Required field
orderLines.orderLine[].orderLineStatuses.orderLineStatus[].quantity (required)
Specifies how many units of an order line are being refunded. For example, for a 3-unit order line where 2 units are being refunded, set quantity.amount = 2.
Action required
- Include the
quantityfield for each refund line in the request. - Ensure that the quantity reflects the actual number of units being refunded.
- Do not omit the
quantityfield or default it to 1. Omitting or hardcoding to 1 will result in incorrect partial refunds and potential reconciliation errors on multi-quantity orders.
For the full updated payload schema and example request bodies, refer to the Refund Orders API Reference.
Step 3: Test in sandbox
Validate multi-quantity scenarios in the Walmart Sandbox environment before deploying to production.
Step 4: Request MLMQ enablement
After completing all the required API updates and testing your integration, request MLMQ enablement.
Sellers
If you integrate directly with Walmart Marketplace APIs, request enablement after completing all updates. If you use an approved Solution Provider, ensure that the provider is MLMQ-compliant before requesting enablement.
To request MLMQ enablement, contact [email protected]. Make sure to include your Seller ID and confirmation that API updates are complete.
Approved Solution Providers
If your platform serves multiple Walmart Marketplace sellers, all sellers on your platform are dependent on your completion of these API updates.
Once the Solution Provider has completed API integration to comply with MLMQ requirements, the Solution Provider must contact [email protected] and provide the list of sellers (Partner ID) to be enabled.
Alternatively, each Seller on the Solution Provider’s platform may directly contact [email protected] to be enabled for MLMQ.
Your MLMQ status is tracked internally by Walmart. To confirm your platform’s readiness, contact [email protected].
Summary of required changes
| API endpoint | Field / change | Type | Action required |
|---|---|---|---|
GET /v3/orders, acknowledge, ship, cancel | orderLineQuantity.amount | Orders: read & write | Handle quantity > 1 per order line |
POST /v3/orders/{id}/shipping | quantity per shipment line | Orders: write | Include actual quantity shipped |
POST /v3/orders/{id}/cancel | quantity per cancel line | Orders: write | Include actual quantity canceled |
GET /v3/returns | currentTrackingStatuses | Returns: read | Parse new field in response |
GET /v3/returns | refundChannels | Returns: read | Parse new field in response |
POST /v3/orders/{id}/refund | quantity per refund line | Refunds: write | Required. Specify the quantity (number of units) being refunded. |
Additional resources
Updated 1 day ago
