MCF Best Practices
Best practices for using Selling Partner API (SP-API) to manage Multi-Channel Fulfillment (MCF) orders and listings.
MCF merchants can use SP-API to support their business needs. This page covers best practices for managing product listings, configuring packaging and carrier settings, getting order updates, syncing inventory, and retrieving reports.
Manage listings
Use the JSON_LISTINGS_FEED to create, edit, and delete Amazon listings by SKU. The Feeds API is asynchronous and supports up to 25,000 SKUs per feed. Use it to upload listings data in bulk.
For ongoing maintenance, use the Listing Items API. This API is synchronous and supports one SKU per API request.
Manage orders
Use the Fulfillment Outbound API to create, cancel, update, track or return an order.
Fulfillment settings
Use the createOrder operation to control fulfillment settings.
To control how inventory availability affects order processing, set the optional fulfillmentPolicy parameter to one of the following:
FILL_OR_KILL: Ships the order only if every item can be fulfilled. Amazon can accept the order using inventory that is in a fulfillment center, reserved, or inbound to Amazon. If any item can't be fulfilled before picking starts, the entire order becomes unfulfillable. After picking starts, the remaining items followFILL_ALL_AVAILABLE.FILL_ALL: Ships all fulfillable items, waiting for reserved or inbound inventory when needed. Items that can't be fulfilled become unfulfillable. Currently behaves the same asFILL_ALL_AVAILABLE.FILL_ALL_AVAILABLE: Ships each fulfillable item when its inventory is available. Items that can't be fulfilled become unfulfillable.
NoteOrders fulfilled from reserved or inbound inventory can have a later estimated delivery date and take longer to ship. To avoid this for low-stock products, compare the order quantity with
inventorySummaries.inventoryDetails.fulfillableQuantityin thegetInventorySummariesresponse before you create the order, and check the estimated delivery date in the order preview.
Specify the fulfillmentAction parameter to control whether the fulfillment order should ship now or hold:
HOLD: Reserves inventory for up to 14 days without requiring immediate shipment.SHIP: Processes the order for immediate fulfillment and shipment.
Packaging and carrier settings
Use SP-APIs to implement the following shipping options for MCF orders:
- Unbranded: Ships orders in boxes without Amazon logos or labels.
- Block AMZL: Blocks Amazon Logistics so orders ship with another carrier.
- Ships in Product Packaging (SIPP): Ships SIPP-certified products in their original manufacturer packaging without additional Amazon packaging.
- Packing slip preferences: Choose whether to include physical packing slips in your shipments.
To create an order with Unbranded or Block AMZL features, refer to Create orders with Unbranded Packaging and Block AMZL services.
NoteFor Unbranded and Block AMZL orders, use
getOrderPreviewbefore creating the order to ensure these features are available.
To specify Ships in Product Packaging (SIPP) and packing slip preferences, refer to Create an MCF Order that Ships in Product Packaging.
Cancel or track an order
Review Fulfillment Outbound API documentation for additional MCF use cases, including:
- Cancel a fulfillment order: Send a request to Amazon to stop attempts to fulfill a fulfillment order.
- Track an order with an item's serial number: Track an item for a seller who might need to know which instance of an item was sold to a particular customer.
Use notifications
Use the Notifications API to receive automatic updates when changes to orders or inventory occur.
Order status
Subscribe to FULFILLMENT_ORDER_STATUS notifications to automatically receive updates when the system generates a tracking number or an order status changes.
Tracking details may change during the packaging process in fulfillment centers. Do not mark an order as fulfilled when you first receive tracking details. For updates, monitor your Amazon Simple Queue Service (SQS). Refer to View order notifications with the Notifications API for more details.
Inventory
Subscribe to FBA_INVENTORY_AVAILABILITY_CHANGES for up-to-date inventory data. Refer to Set up notifications using the Amazon Simple Queue Service workflow for a tutorial.
Also, call the getInventorySummaries operation once a day for a complete snapshot of inventory levels.
NoteAvoid calling this operation more than once every 24 hours to prevent receiving stale inventory data. Notifications help you keep track of inventory between calling
getInventorySummaries.
If you choose not to use notifications, you should:
- Maintain an internal inventory record based on orders placed and canceled. Verify your record against the
getInventorySummariesresponse daily. - Operate with safety stock settings to prevent overselling between sync jobs.
NoteUse
inventoryDetails.fulfillableQuantityto track the quantity that can be picked, packed, and shipped. Inbound inventory is the sum ofinboundWorkingQuantity,inboundShippedQuantity, andinboundReceivingQuantity. Units being transferred from one fulfillment center to another are reported inreservedQuantity.pendingTransshipmentQuantity, and units sidelined at the fulfillment center for additional processing are reported inreservedQuantity.fcProcessingQuantity. MCF orders can be fulfilled from reserved or inbound inventory, which can have a later estimated delivery date.
Get reports
Use the Reports API to get data for products, inventory, and shipments. The following table shows relevant reports for MCF merchants:
| Report | Description |
|---|---|
GET_FLAT_FILE_OPEN_LISTINGS_DATA | Returns a summary of active product listings, including price and quantity for each SKU. |
GET_MERCHANT_LISTINGS_ALL_DATA | Returns detailed information for all product listings. |
GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA | Returns near real-time details for active (non-archived) inventory, including condition, quantity, and volume. |
GET_LEDGER_SUMMARY_VIEW_DATA | Provides end-to-end inventory reconciliation, showing starting balance, received inventory, customer orders, returns, adjustments, removals, and ending balance. |
GET_XML_ALL_ORDERS_DATA_BY_ORDER_DATE_GENERAL | Returns all orders within a date range in XML format, regardless of fulfillment channel or shipment status. Intended for order tracking only. |
GET_FLAT_FILE_ALL_ORDERS_DATA_BY_ORDER_DATE_GENERAL | Returns all orders within a date range in flat file format, regardless of fulfillment channel or shipment status. Intended for order tracking only. |
GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL | Returns detailed order, shipment, and item information, including price, courier, and tracking data for up to one month of data per request. |
Updated about 21 hours ago

