Order management APIs

You can use the order management APIs listed in this section to check fulfillment eligibility for requested SKU(s), create customer order, and cancel customer order.

Fetch delivery promise

Checks fulfillment eligibility for requested SKU(s) and evaluates the delivery SLA or shipping promise based on fulfillment details. This API creates a promise request and validates the destination postal or state information.

Endpoint

POST https://sandbox.walmartapis.com/v3/fulfillment/orders-fulfillments/fetchOrderPromiseOptions

Sample request

curl -X POST "https://sandbox.walmartapis.com/v3/fulfillment/orders-fulfillments/fetchOrderPromiseOptions" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -H "Content-Type: application/json" \ -H "martId: 202" \ -H "buId: 0" \
{ "header": { "headerAttributes": { "martId": "202", "buId": "0" } }, "payload": { "offerSelections": [ { "offers": [ { "sku": "SKU-1", "lineId": "1", "salesUnit": "EACH", "requestedQuantity": { "measurementValue": 1, "unitOfMeasure": "EACH" }, "shippingMethod": "STANDARD" } ] } ], "destinations": [ { "fulfillmentType": "S2H", "address": { "line1": "100 Main St", "city": "San Francisco", "state": "CA", "country": "US", "zip": "94103" } } ] }
}
import requests url = "https://sandbox.walmartapis.com/v3/fulfillment/orders-fulfillments/fetchOrderPromiseOptions"
headers = { "Authorization": "Bearer <ACCESS_TOKEN>", "Content-Type": "application/json", "martId": "202", "buId": "0", "Accept": "application/json",
} body = { "header": { "headerAttributes": { "martId": "202", "buId": "0" } }, "payload": { "offerSelections": [ { "offers": [ { "sku": "SKU-1", "lineId": "1", "salesUnit": "EACH", "requestedQuantity": { "measurementValue": 1, "unitOfMeasure": "EACH" }, "shippingMethod": "STANDARD" } ] } ], "destinations": [ { "fulfillmentType": "S2H", "address": { "line1": "100 Main St", "city": "San Francisco", "state": "CA", "country": "US", "zip": "94103" } } ] }
} response = requests.post(url, headers=headers, json=body, timeout=30)
response.raise_for_status()
print(response.json())

Sample response (202 Accepted)

On success this API returns a HTTPS 202 Accepted indicating that all the specified SKUs are available.

{ "header": { "headerAttributes": { "martId": "202", "buId": "0" } }, "payload": { "destinations": [ { "fulfillmentType": "DELIVERY", "address": { "city": "jordan", "addressType": "RESIDENTIAL", "line1": "helloijdiwhjcijhi", "zip": "94102", "country": "US", "state": "CA", "postalCode": "94102" } } ], "offers": [ { "availableQuantity": { "measurementValue": 10, "unitOfMeasure": "EA" }, "requestedQuantity": { "measurementValue": 2, "unitOfMeasure": "EA" }, "lineId": "1", "salesUnit": "Each", "sku": "SKU-3" } ], "fulfillmentPlans": [ { "fulfillmentModules": [ { "name": "UNSCHEDULED_DELIVERY", "fulfillmentGroups": [ { "fulfillmentOptions": [ { "fulfillmentMode": "UNSCHEDULED", "accessType": "DELIVERY_ADDRESS", "fulfillmentType": "DELIVERY", "fulfillments": [ { "fulfillmentId": "989b726d-...", "nodeType": "FC", "sla": { "tier": "SLA_TIER_FIVE_TO_SEVEN_DAY", "speed": "VALUE" }, "fulfillmentTime": { "date": { "minPromiseDate": "2025-10-15", "maxPromiseDate": "2025-10-17" } }, "lineItemAttributesList": [ { "availableQuantity": { "measurementValue": 10, "unitOfMeasure": "EA" }, "lineId": "1", "fulfillmentChannel": ["WFS_FULFILLED"] } ] } ] } ] } ] } ] } ] }, "status": "SUCCESS"
} 

Sample response (206 Partial Content)

This API returns a HTTPS 206 Partial Content response when some SKUs are unavailable indicated by PARTIAL_SUCCESS in the response message.

Error response

This API returns a HTTPS 400 status when there are validation errors and 500 status when there are internal errors.

Create customer order

Creates a mock MCS Order to simulate fulfillment through Walmart’s network. This API performs the following operations:

  • Validates the request using CREATE-FULFILLMENT-MOCKER-REQUEST-VALIDATION  and enforces rules for sellerOrderId/customerOrderNo. For instance, if both are present, they must match.
  • Derives the account context and internal identifiers from the environment or tenant. This API maps the martId or buId from request header. Do not send orgId as a query parameter.
  • Adjusts mock inventory, for instance decreases the availableToSellUnits for each SKU its ordered quantity.
  • If email or shipping method is missing or unsupported, default values are applied.

Endpoint

POST https://sandbox.walmartapis.com/v3/fulfillment/orders-fulfillments

Sample request

curl -X POST "https://sandbox.walmartapis.com/v3/fulfillment/orders-fulfillments" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -H "Content-Type: application/json" \ -H "martId: 202" \ -H "buId: 0" \
{ "header": { "headerAttributes": { "martId": "202", "buId": "0" } }, "payload": { "orderChannelId": "ORDER_CHANNEL_ID", "sellerOrderId": "SO123", "customerOrderNo": "SO123", "orderPlacedTime": "2017-07-21T17:32:28Z", "customer": { "contact": { "name": { "firstName": "A", "lastName": "B" }, "phone": "555-111-2222", "email": "[email protected]" } }, "orderItems": [ { "sellerLineId": "1", "fulfillmentType": "S2H", "shippingMethod": "STANDARD", "itemDetail": { "sku": "SKU-1", "description": "Example product description" }, "qty": { "unitOfMeasure": "EACH", "measurementValue": 1 }, "shippingTo": { "contact": { "name": { "firstName": "A", "lastName": "B" }, "phone": "555-111-2222", "email": "[email protected]" }, "address": { "line1": "100 Main St", "city": "San Francisco", "state": "CA", "country": "US", "zip": "94103" } }, "chargeDetails": [ { "chargeCategory": "ITEM", "chargePerUnit": { "currencyAmount": 100, "currencyUnit": "USD" } } ] } ] }
} 
import requests url = "https://sandbox.walmartapis.com/v3/fulfillment/orders-fulfillments"
headers = { "Authorization": "Bearer <ACCESS_TOKEN>", "Content-Type": "application/json", "martId": "202", "buId": "0", "Accept": "application/json",
} body = { "header": {"headerAttributes": {"martId": "202", "buId": "0"}}, "payload": { "orderChannelId": "ORDER_CHANNEL_ID", "sellerOrderId": "SO123", "customerOrderNo": "SO123", "orderPlacedTime": "2017-07-21T17:32:28Z", "customer": { "contact": { "name": {"firstName": "A", "lastName": "B"}, "phone": "555-111-2222", "email": "[email protected]", } }, "orderItems": [ { "sellerLineId": "1", "fulfillmentType": "S2H", "shippingMethod": "STANDARD", "itemDetail": {"sku": "SKU-1", "description": "Example product description"}, "qty": {"unitOfMeasure": "EACH", "measurementValue": 1}, "shippingTo": { "contact": { "name": {"firstName": "A", "lastName": "B"}, "phone": "555-111-2222", "email": "[email protected]", }, "address": { "line1": "100 Main St", "city": "San Francisco", "state": "CA", "country": "US", "zip": "94103", }, }, "chargeDetails": [ { "chargeCategory": "ITEM", "chargePerUnit": {"currencyAmount": 100, "currencyUnit": "USD"}, } ], } ], },
} response = requests.post(url, headers=headers, json=body, timeout=30)
response.raise_for_status()
print(response.json())

Success response (202 Accepted)

On success, the endpoint performs create business logic and returns 202 Accepted with a requestId.

{ "status": "ACCEPTED", "header": { /* echoed header */ }, "payload": { "requestId": "SO123" }
}

Error response

On validation failures, returns 400 Bad Request with error code INVALID_MCS_REQUEST. Unexpected server errors return 500 Internal Server Error.

Cancel customer order

Cancels test MCS order before shipment to stop fulfillment and return reserved inventory to the account. The allowed cancellation window is 60 minutes. This API performs the following operations:

  • Validates the request using CREATE-FULFILLMENT-MOCKER-REQUEST-VALIDATION  and enforces rules for sellerOrderId/customerOrderNo. For instance, if both are present, they must match.
  • Derives the account context and internal identifiers from the environment or tenant. This API maps the martId or buId from request header. Do not send orgId as a query parameter.
  • Adjusts mock inventory, for instance decreases the availableToSellUnits for each SKU its ordered quantity.
  • If email or shipping method is missing or unsupported, default values are applied.

Endpoint

POST https://sandbox.walmartapis.com/v3/fulfillment/orders-fulfillments/cancel

Sample request

{ "header": { "headerAttributes": { "martId": "202", "buId": "0" } }, "payload": { "sellerId": "ACCOUNT_ID", "sellerOrderId": "SO123", "customerOrderNo": "SO123", "orderItems": [ { "sellerLineId": "1", "qty": { "unitOfMeasure": "EACH", "measurementValue": 1 } } ] }
}
import requests url = "POST https://sandbox.walmartapis.com/v3/fulfillment/orders-fulfillments/cancel"
headers = { "Authorization": "Bearer <ACCESS_TOKEN>", "Content-Type": "application/json", "martId": "202", "buId": "0", "Accept": "application/json",
} body = { "header": { "headerAttributes": { "martId": "202", "buId": "0" } }, "payload": { "sellerId": "ACCOUNT_ID", "sellerOrderId": "SO123", "customerOrderNo": "SO123", "orderItems": [ { "sellerLineId": "1", "qty": {"unitOfMeasure": "EACH", "measurementValue": 1} } ] }
} response = requests.post(url, headers=headers, json=body, timeout=30)
response.raise_for_status()
print(response.json())

Success response (202 Accepted)

{ "status": "ACCEPTED", "header": { /* echoed header */ }, "payload": { "requestId": "SO123" }
}

Error response

On validation failures, returns 400 Bad Request with error code INVALID_MCS_REQUEST. Unexpected server errors return 500 Internal Server Error.