Fulfillment Outbound API v2020-07-01 Use Case Guide
How to use the Fulfillment Outbound API.
The Selling Partner API for Fulfillment Outbound (Fulfillment Outbound API) lets you create applications that help a seller fulfill Multi-Channel Fulfillment orders using their inventory in Amazon's fulfillment network. You can also get information on both potential and existing fulfillment orders.
Tutorial: Retrieve proof of delivery for a delivered package
Learn how to get the photo or signature for a delivered Multi-Channel Fulfillment Outbound shipment.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Get proof of delivery
Call the getFulfillmentOrder
operation.
Tutorial: Retrieve a list of fulfillment orders
This tutorial shows you how to get a list of fulfillment orders after (or at) a specific date-time, or indicated by the next token parameter.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Get a list of all fulfillment orders
Call the listAllFulfillmentOrders
operation.
Tutorial: Retrieve delivery tracking information
This tutorial shows you how to get delivery tracking information for a package in an outbound shipment for a Multi-Channel Fulfillment order.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Get the package tracking details
Call the getPackageTrackingDetails
operation.
Tutorial: Cancel a fulfillment order
This tutorial shows you how to send a request to Amazon to stop attempts to fulfill a fulfillment order indicated by the specified order identifier for a given marketplace. The cancelFulfillmentOrder
operation should only be called when the order is in 'Received' or 'Planning' status.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Cancel a fulfillment order
Call the cancelFulfillmentOrder
operation.
Tutorial: Retrieve a list of features
This tutorial shows you how to get a list of features available for Multi-Channel Fulfillment orders in the marketplace you specify, and whether the seller for which you made the call is enrolled for each feature.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Get a list of features
Call the getFeatures
operation.
Tutorial: Retrieve inventory eligible for Blank Box
This tutorial shows you how to get a list of inventory items that are eligible for Blank Box.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Get a list of feature inventory items
Call the getFeatureInventory
operation.
Tutorial: Retrieve Blank Box inventory for a specific SKU
This tutorial shows you how to get the total number of feature seller SKUs with the sellerSKU
you specify.
Ineligible
sellerSKU
If the
sellerSKU
isn't eligible, the response contains an emptyskuInfo
object.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Get a count of feature Seller SKUs
Call the getFeatureSKU
operation.
Tutorial: Create a Japan order with scheduled delivery and delivery time windows
This tutorial outlines the order creation process for Japan with the scheduled delivery shipping option. This ship option is only available for Japan marketplace orders.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Get the fulfillment preview for scheduled delivery dates
Call the getFulfillmentPreview
operation. Set shippingSpeedCategories
equal to ScheduledDelivery
and includeDeliveryWindows
equal to true
.
Request example
POST "https://sellingpartnerapi-fe.amazon.com/fba/outbound/2020-07-01/fulfillmentOrders/preview"
{
"marketplaceId": "A1VC38T7YXB528",
"address": {
"name": "Mary Major",
"addressLine1": "1-8-1 Shimomeguro",
"addressLine2": "Meguro-ku",
"city": "Tokyo",
"countryCode": "JP",
"postalCode": "153-0064"
},
"items": [
{
"sellerSku": "SellerSKU12",
"sellerFulfillmentOrderItemId": "CONSUMER-2022921-145045-1",
"quantity": 2
}
],
"shippingSpeedCategories": [
"ScheduledDelivery"
],
"includeDeliveryWindows": "true"
}
Step 2. Create a fulfillment order
Call the createFulfillmentOrder
operation with the Delivery Window obtained from the getFulfillmentPreview
response and with shippingSpeedCategory
set to ScheduledDelivery
. If you use any other window with the createFulfillmentOrder
operation, the service returns an error and you must call getFulfillmentPreview
again.
Note
Shipping method service-level agreements vary by marketplace. Sellers can refer to Seller Central for shipping method service-level agreements and multi-channel fulfillment fees.
Step 3. Get the fulfillment order to validate order details
After successfully calling the createFulfillmentOrder
operation, call the getFulfillmentOrder
operation to validate that the fulfillmentAction
value is equal to Ship
and fulfillmentOrderStatus
is equal to Received
.
Response example
{
"payload": {
"fulfillmentOrder": {
"sellerFulfillmentOrderId": "CONSUMER-2022921-145045",
"marketplaceId": "A1VC38T7YXB528",
"displayableOrderId": "CONSUMER-2022921-145045",
"displayableOrderDate": "2022-01-09T19:46:45.809Z",
"displayableOrderComment": "TestOrder",
"shippingSpeedCategory": "ScheduledDelivery",
"destinationAddress": {
"name": "Mary Major",
"addressLine1": "1-8-1 Shimomeguro",
"addressLine2": "Meguro-ku",
"city": "Tokyo",
"countryCode": "JP",
"postalCode": "153-0064"
},
"deliveryWindow": {
"endDate": "2022-12-15T10:48:11Z",
"startDate": "2022-12-15T06:48:11Z"
}
"fulfillmentAction": "Ship",
"fulfillmentPolicy": "FillAllAvailable",
"receivedDate": "2022-09-21T14:50:45Z",
"fulfillmentOrderStatus": "Received",
"statusUpdatedDate": "2022-09-22T03:44:35Z"
},
"fulfillmentOrderItems": [
{
"sellerSku": "SellerSKU12",
"sellerFulfillmentOrderItemId": "CONSUMER-2022921-145045-0",
"quantity": "1"
}
],
"fulfillmentShipments": [],
"returnItems": [],
"returnAuthorizations": []
}
}
Tutorial: Create an MCF order for India
This tutorial outlines the MCF order creation process for India.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Get a fulfillment preview
Call the getFulfillmentPreview
operation.
Step 2a. Create a fulfillment order
Call the createFulfillmentOrder
operation to create an MCF order specifying the feature constraints required for the order.
Step 2b. Create a fulfillment order with a COD option
Call the createFulfillmentOrder
operation to create an MCF order with a cash on delivery (COD) option. For COD orders in the IN marketplace, none of the monetary values in codSettings
(codCharge
, codChargeTax
, shippingCharge
, shippingChargeTax
) should be set. All the charges in the order must be represented with perUnitDeclaredValue
in the items
array.
Step 3. Get the fulfillment order to validate order details
After successfully calling the createFulfillmentOrder
operation, call the getFulfillmentOrder
operation to validate the fulfillmentAction
is equal to Ship
and fulfillmentOrderStatus
is equal to Received
.
Tutorial: Track a partially fulfilled order
This tutorial walks you through the steps on how to track a partially fulfilled order for items that are low inventory.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Get a fulfillment preview
Call the getFulfillmentPreview
operation with two line items and make sure they are available for a given shipping option (Standard, Expedited, or Priority).
An unsuccessful response has a non-2xx code and includes the following objects. If the PackageNumber
does not exist, a 404 response provides the ineligibility errors.
Step 2. Create an MCF outbound order
Call the createFulfillmentOrder
operation with a unique Order ID and at least two line items, or one line item with a quantity greater than 1
for the same shipping option.
Step 3. Validate the order details
Call the getFulfillmentOrder
operation to validate that fulfillmentAction
is equal to Ship
and fulfillmentOrderStatus
is equal to Received
.
Step 4. Order status changes
The order goes through status changes from Planning
to Processing
to Complete
, in case one or more items do not have enough inventory as requested in the createFulfillmentOrder
operation. To get status change updates, subscribe and listen to FULFILLMENT_ORDER_STATUS
notifications.
Step 5. Get the fulfillment order to view the latest order details
After the order is Shipped
, the order status notification for Complete
is triggered. Now call the getFulfillmentOrder
operation to view the latest order details.
Step 6. Validate the order status and line item quantities
Validate that fulfillmentShipmentStatus
is equal to Shipped
and fulfillmentOrderStatus
is equal to CompletePartialled
. If there are items that have unfulfillableQuantity
not equal to 0
, then the order is partially fulfilled.
Step 7. Get the package number
Copy the package number of the order from the getFulfillmentOrder
response from Step 5. There could be multiple package numbers based on the number of Amazon shipments for that order.
Step 8. Get the tracking details
Call the getPackageTrackingDetails
operation using the package number from Step 7 and get the complete tracking details of the package.
An unsuccessful response has a non-2xx code and includes the following objects. If the PackageNumber
does not exist, a 404 response provides the ineligibility errors.
Tutorial: Create an order in hold status and then move it to shipped
This tutorial explains how an order can move from a fulfillment status of HOLD
to SHIP
. Orders in HOLD
status do not proceed to further fulfillment actions until the status is updated to SHIP
.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Get the fulfillment preview
Call the getFulfillmentPreview
operation on the order to ensure the SKUs are eligible and fulfillable for the requested ship options (Standard, Expedited, Priority).
An unsuccessful response has a non-2xx code and includes the following objects. A 404 response provides the ineligibility errors, if any.
Step 2. Create a fulfillment order on hold
Call the createFulfillmentOrder
operation with one or more line items with fulfillmentAction
set equal to Hold
. Doing so keeps the order in Hold
status and further fulfillment actions don't run on that order.
Step 3. Update the order fulfillment action to ship
Call the updateFulfillmentOrder
operation to update the order with fulfillmentAction
equal to Ship
to move the order from Hold
to Ship
.
Request example
PUT "https://sellingpartnerapi-na.amazon.com/fba/outbound/2020-07-01/fulfillmentOrders/CONSUMER-2022921-145045"
{
"fulfillmentAction": "Ship"
}
Step 4. Get the fulfillment order to validate the changes
On the successful update of the order, call the getFulfillmentOrder
operation to validate that fulfillmentAction
is updated to Ship
. After the order moves to the Ship
action, the next fulfillment steps start running on the order.
Tutorial: Track an order with an item's serial number
For select products, a seller might need to know which instance of an item was sold to a particular customer. If the items are uniquely tracked with a serial number, the fulfillment centers can add steps to scan and record the serial numbers both going out and being returned.
After an item is shipped out, the getFulfillmentOrder
operation has the serial number in the response for the seller to keep a record of it.
Prerequisites
- The seller needs to share the Regex of the generated serial numbers with Amazon.
- The seller needs to paste the generated unique serial number on every item when inbounding the inventory to Amazon.
- If the customer is using the Amazon Labeling Service, in addition to registering an ASIN, the FNSKU associated with the item must also be registered using the same process.
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Create a fulfillment order with serial numbered items
Call the createFulfillmentOrder
operation to create an MCF order with line items that have serial numbers enabled while inbounding to Amazon. The createFulfillmentOrder
request doesn't need any exclusive attributes in the request for this type of order.
Step 2. Get the fulfillment order to validate the order details
After successfully creating the order, call the getFulfillmentOrder
operation to validate that fulfillmentAction
is equal to Ship
and fulfillmentOrderStatus
is equal to Received
on the order.
Step 3. Get the fulfillment order to track status changes
The order goes through status changes, from Planning
to Processing
to Complete
. Subscribe and listen to FULFILLMENT_ORDER_STATUS
notifications to be aware of these status changes. When the order is shipped, the serial number of the item is scanned and validated to match the shared regex.
Call the getFulfillmentOrder
operation with the sellerFulfillmentOrderId
to view the latest order details and check if the serial number of the item was shipped.
Step 4. Validate the order status and line item quantities
Validate that fulfillmentShipmentStatus
is equal to Shipped
and that the serialNumber
in fulfillmentShipmentItem
is the same as what was generated during the inbound process.
Tutorial: Create an order with cross border fulfillment
This tutorial outlines how a seller who operates and sells in two different countries can fulfill orders across the border. This operation only works for books, videos, media and discs products.
In this example, the seller is trying to fulfill an order from a Canadian (CA) warehouse to a US address.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Create a Fulfillment order for cross border shipment
Create an order with a US destination address and shipFromCountryCode=CA
. In this case, we can skip specifying the marketplaceId
in the request and the item is picked from the CA marketplace. Also, include perUnitDeclaredValue
in the items of value greater than 0. Call the createFulfillmentOrder
operation.
Request example
POST "https://sellingpartnerapi-na.amazon.com/fba/outbound/2020-07-01/fulfillmentOrders"
{
"sellerFulfillmentOrderId": "CONSUMER-2022921-145045",
"displayableOrderId": "CONSUMER-2022921-145045",
"displayableOrderDate": "2022-01-09T19:46:45.809Z",
"displayableOrderComment": "TestOrder",
"shippingSpeedCategory": "Standard",
"fulfillmentAction": "Ship",
"shipFromCountryCode": "CA",
"destinationAddress": {
"name": "Mary Major",
"addressLine1": "Stockton Street",
"city": "Alexandria",
"stateOrRegion": "VA",
"countryCode": "US",
"postalCode": "22308"
},
"items": [
{
"sellerSku": "LT205BLKAM",
"sellerFulfillmentOrderItemId": "CONSUMER-2022921-145045-0",
"quantity": 1,
"perUnitDeclaredValue": {
"currencyCode": "USD",
"value": "0.10"
}
}
]
}
Tutorial: Create orders with Blank Box and Block AMZL features requested
When creating an order, MCF offers two features which can be specified in the request:
- Blank Box: Allows the seller to choose boxing with no Amazon logos/labels on it.
- Block AMZL: Allows the seller to refuse Amazon logistics and rather ship out using another carrier service.
After the request is made during the create order process, it cannot be updated during the fulfillment steps of the order.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Get a fulfillment preview for given feature constraints
Call the getFulfillmentPreview
operation on the line items of the order using a given ship option and feature constraint to ensure that the features are available for order fulfillment for the marketplace and address.
Step 2. Create a fulfillment order specifying the feature constraints
Call the createFulfillmentOrder
operation to create an MCF order specifying the feature constraints required for the order.
Feature constraints
Feature constraints can be enabled in the Seller Central portal which acts as a default value, but the value specified in the order request takes priority.
Step 3. Get the fulfillment order to validate order details
After successfully creating an order, call the getFulfillmentOrder
operation to validate that fulfillmentAction
is equal to Ship
, fulfillmentOrderStatus
is equal to Received
, and featureConstraints
are returned in the order details response.
Tutorial: Show the preview details of all ship speeds
If the getFulfillmentPreview
operation is called without mentioning any ship speeds in the request, the response shows preview details of all ship speeds.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Get the fulfillment preview for all ship speeds
To retrieve preview details of an order for all ship speeds, do not include the shippingCategories
attribute in the request.
Call the getFulfillmentPreview
operation.
Tutorial: View order notifications with the Notifications API
A seller can subscribe to FULFILLMENT_ORDER_STATUS
notifications to be aware of all the changes happening on the order.
To complete this tutorial, you need:
Prerequisites
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Create and subscribe to notifications
Use the createSubscription
operation of the Notifications API to subscribe to the FULFILLMENT_ORDER_STATUS
notification.
Step 2. Listen to order status notifications
The FULFILLMENT_ORDER_STATUS
notification keeps the seller posted on changes to the order status.
Review the FulfillmentShipmentPackages
array in the response to get the package details of an order when it’s made ready for shipping.
Tutorial: Create a return for an MCF order
MCF order returns are comprised of three steps:
- Getting the return reason codes
- Submitting the return using one of the codes
- Returning the object
Currently, MCF expects the end customer to pay for the postage charges as the return labels shared are not prepaid.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Get a list of return reason codes for a given product
Call the listReturnReasonCodes
operation.
Step 2. Create a fulfillment return for an order
Using one of the reasons retrieved in the previous step, call the createFulfillmentReturn
operation to submit the return request and retrieve the return shipping label needed to ship the item to Amazon.
Note
This label is not prepaid. It must be paid by the shipper.
Step 3. Ship the returning item
From the previous response, the rmaPageURL
provides the return label which needs to be printed and pasted on the package and the postage charges need to be paid by the returning shopper.
Step 4. Get the fulfillment order to validate the order return
After the package is received by the Amazon warehouse, the item is marked returned for that order. Call the getFulfillmentOrder
operation to validate that the return authorization is populated on the original order. returnItems
and returnAuthorizations
should populate the same details as the createFulfillmentReturn
response along with the status/condition of the item returned.
Tutorial: Get dynamic delivery offers
This tutorial outlines how to get dynamic delivery offers for a buyable product using a US ZIP Code or US IP address.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Get a dynamic delivery offer
Call the deliveryOffers
operation to get the dynamic delivery offer for standard click-to-delivery speed for the specified product and location information.
If a delivery offer isn't available, the deliveryOffers
array is empty in the response.
Tutorial: Create a Japan order with delivery preferences
This tutorial outlines the order creation process for Japan with delivery preferences. This feature is only available for Japan marketplace orders.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Create a fulfillment order specifying the delivery preferences
Call the createFulfillmentOrder
operation to create an MCF order specifying the delivery preferences required for the order.
Tutorial: Create a Japan order providing neighbor details in delivery preferences
This tutorial outlines the order creation process for Japan where the delivery preference is set to a designated neighbor if the recipient is not available at the destination address. This feature is only available for Japan marketplace orders.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Create a fulfillment order specifying the delivery preferences
Call the createFulfillmentOrder
operation to create an MCF order specifying the delivery preferences required for the order.
Tutorial: Retrieve locker (delivery box) details for packages delivered in Japan
This tutorial shows you how to get locker information for a package that was delivered to a locker (delivery box) for Japan in an outbound shipment for a Multi-Channel Fulfillment order.
The getFulfillmentOrder
operation might not always return lockerDetails
, depending on the delivery status and delivery location.
Use the getPackageTrackingDetails
operation to check the delivery status and identify if the package was delivered to a locker (delivery box).
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API Applications for more information.
- The Amazon Fulfillment role assigned to your developer profile.
- The Amazon Fulfillment role selected in the App registration page for your application.
Step 1. Get the fulfillment order to view the latest order details and locker details if present
Call the getFulfillmentOrder
operation.
Updated 8 days ago