Fulfillment Inbound API v0 Use Case Guide
How to use the Fulfillment Inbound API
Warning!
All operations other than the following are deprecated and will be removed on December 20, 2024:
getLabels
getBillOfLading
getPrepInstructions
getShipments
getShipmentItemsByShipmentId
getShipmentItems
For continued programmatic access to Fulfillment Inbound, migrate to the Fulfillment Inbound v2024-03-20 API.
API Version: v0
What is the Fulfillment Inbound API?
The Selling Partner API for Fulfillment Inbound lets you create applications that create and update inbound shipments of inventory to Amazon's fulfillment network. You can also request lists of inbound shipments or inbound shipment items based on criteria that you specify. After your inventory has been received in the fulfillment network, Amazon can fulfill your orders regardless of whether you are selling on Amazon's retail website or through other retail channels. Refer to the Fulfillment Inbound API Reference for details about API operations and associated data types and schemas
Terminology
Case packed. Items in an inbound shipment are considered to be case packed when:
-
All items in a box have a matching SKU, condition, and have been previously packaged together by the manufacturer.
-
All boxes with the same item contain equal quantities of that item.
Amazon-partnered carrier. A carrier who has partnered with Amazon to provide discounted shipping rates. Only sellers in the US can use Amazon-partnered carriers for inbound shipments.
Non-Amazon-partnered carrier. A carrier who has not partnered with Amazon to provide discounted shipping rates.
Small parcel shipment. Units packed in individual boxes that are individually labeled for delivery.
Less Than Truckload/Full Truckload (LTL/FTL) shipment. Combines individual boxes on pallets for delivery. The truck might contain shipments to other destinations.
Fulfillment Inbound shipment workflow
The following diagram shows steps to ship inventory to Amazon's fulfillment network.
Tutorial: Ship inventory to Amazon’s Fulfillment Network
Amazon recommends this workflow to ship inventory to Amazon's fulfillment network. When in the fulfillment network, a seller's items can be used to fulfill orders on Amazon's retail website or through other sales channels.
Prerequisites
To complete this tutorial, you will need:
-
Authorization from the selling partner for whom you are making calls. Refer to Authorizing Selling Partner API applications for more information.
-
Approval for the Amazon Fulfillment role and the Product Listing role in your developer profile.
-
The Amazon Fulfillment role and Product Listing role selected in the App registration page for your application.
You can follow these steps to ship inventory to Amazon's fulfillment network:
Step 1. Get the eligibility preview for an item
With the FBA Inbound Eligibility API, you can build applications that let sellers get eligibility previews for items before shipping them to Amazon's fulfillment centers. With this API you can find out if an item is eligible for inbound shipment to Amazon's fulfillment centers in a specific marketplace. You can also find out if an item is eligible for using the manufacturer barcode for FBA inventory tracking. Sellers can use this information to inform their decisions about which items to ship to Amazon's fulfillment centers.
You can use the getItemEligibilityPreview
operation to get an eligibility preview for an item that you specify. You can specify the type of eligibility preview that you want (INBOUND
or COMMINGLING
). For INBOUND
previews, you can specify the marketplace in which you want to determine the item's eligibility.
Call the getItemEligibilityPreview
operation of the FBA Inbound Eligibility API, passing the following parameters:
Request
Query parameters:
Name | Description | Required |
---|---|---|
marketplaceIDs | The identifier for the marketplace in which you want to determine eligibility. Required only when program=INBOUND. Max count: 1 Type: < string > array | No |
asin | The ASIN of the item for which you want an eligibility preview. Type: string | Yes |
program | The program that you want to check eligibility against. Type: enum (Program) | Yes |
Request example
POST https://sellingpartnerapi-na.amazon.com/fba/inbound/v1/eligibility/itemPreview?asin=TEST_CASE_200
Response
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the getItemEligibilityPreview operation. Type: ItemEligibilityPreview |
errors | An unexpected condition occurred during the getItemEligibilityPreview operation. Type: ErrorList |
Ineligibility reasons
Each ineligibility reason is returned as an enum
, and is described in the IneligibilityReasonList
section of the API Reference.
Warning
It is possible for
ineligibilityReasonList
in your response to be null. To prevent a null exception, verify thatineligibilityReasonList
is not null before you dereference its value.
Response example
{
"payload": {
"asin": "TEST_ASIN",
"marketplaceId": "TEST_MARKETPLACE_ID",
"program": "INBOUND",
"isEligibleForProgram": true
}
}
Step 2. Create a listing and convert it to FBA
If a product already exists in the Amazon catalog, creating a listing can be as simple as associating a unique seller-defined SKU with the unique Amazon-defined ASIN (Amazon Standard Item Number) for the product. If a product does not yet exist in the Amazon catalog, creating a listing requires providing descriptive information about the product so Amazon can build a record and assign an ASIN to the product. You can create listings by submitting feeds using the Feeds API section. Refer to the following guidance for using XML or flat file feeds to create a listing and convert it to Fulfillment by Amazon (FBA).
Batteries and dangerous goods
Before you can convert a listing to FBA you need to provide additional information on any products that are batteries, contain or are sold with batteries, or might be considered dangerous goods. Any attempt to convert a listing to FBA without providing battery and dangerous goods information will fail.
Using XML feeds
You can create a listing and convert it to FBA by submitting XML feeds using the Feeds API section. Refer to Selling Partner Feeds API Use Case Guide.
To create a listing and convert it to FBA
-
Submit the Product Feed (
POST_PRODUCT_DATA
).If the product is in Amazon's catalog, the feed should include:
-
SKU
, containing the seller's unique SKU for the product. -
StandardProductID
, containing values that uniquely identify the product in Amazon's catalog. -
Battery and dangerous goods information, according to the guidance in Requirements for MWS Integrators (PDF).
OR
If the product is not yet in Amazon's catalog, the feed should include:
-
Elements that describe the product, according to the guidance in Create Products - Product Feed Schema.
-
Battery and dangerous goods information, according to the guidance in Requirements for MWS Integrators (PDF).
-
-
Submit the Inventory Feed (
POST_INVENTORY_AVAILABILITY_DATA
). The feed should include:-
FulfillmentCenterID
: Set toAMAZON_NA
,AMAZON_EU
,AMAZON_IN
, orAMAZON_JP
, depending on the seller's marketplace. -
Lookup
: set toFulfillmentNetwork
. -
SwitchFulfillmentTo
: set toAFN
.
-
Using flat file feeds
You can create a listing and convert it to FBA by submitting flat file feeds using the Feeds API section. Refer to Selling Partner Feeds API Use Case Guide.
To create a listing and convert it to FBA (if the product is in Amazon's catalog)
Submit the Flat File Inventory Loader Feed (POST_FLAT_FILE_INVLOADER_DATA
). Alternatively, you can submit the Flat File Listings Loader Feed (POST_FLAT_FILE_LISTINGS_DATA
). The feed should include:
-
SKU
: containing the seller's unique SKU for the product. -
product-id
andproduct-id-type
: containing values that uniquely identify the product in Amazon's catalog. -
fulfillment-center-id
: set toAMAZON_NA
,AMAZON_EU
,AMAZON_IN
, orAMAZON_JP
, depending on the seller's marketplace. -
Battery and dangerous goods information, according to the guidance in Requirements for MWS Integrators (PDF).
To create a listing and convert it to FBA (if the product is not yet in Amazon's catalog)
-
Submit an Inventory File Template. Refer to the Download an Inventory File tab of the Add Products via Upload page of Seller Central.
- Set the field values according to the instructions in the Inventory File Template.
-
Submit the Flat File Inventory Loader Feed (
POST_FLAT_FILE_INVLOADER_DATA
). Alternatively, you can submit the Flat File Listings Loader Feed (POST_FLAT_FILE_LISTINGS_DATA
). The feed should include:-
The
fulfillment-center-id
field, set toAMAZON_NA
,AMAZON_EU
,AMAZON_IN
, orAMAZON_JP
, depending on the seller's marketplace. -
Battery and dangerous goods information, according to the guidance in Requirements for MWS Integrators (PDF).
-
For more information about feed types, refer to Feed Type values.
Step 3. Create an inbound shipment plan
Create an inbound shipment plan by calling the createInboundShipmentPlan
operation of the Inbound Shipment API. An inbound shipment plan groups into discrete shipments the items that you want to send to Amazon's fulfillment network. For example, products that you prep yourself must be sent in a separate shipment from products that are prepped using the FBA Prep Service. Items that require special handling at an Amazon fulfillment center because of their size might need to be sent to a different fulfillment center than items that don't require special handling. By calling the createInboundShipmentPlan
operation, you provide Amazon with key information about the items that you want to send. Amazon uses this information to create a shipment plan for your items, which is returned after Amazon receives the createInboundShipmentPlan
operation. You use the shipment plan to group and send your items to the appropriate Amazon fulfillment centers.
Create listings for all inbound shipment plan items:
Amazon recommends that you create listings for all items that you want to include in an inbound shipment plan before calling the
createInboundShipmentPlan
operation. After you have created listings for the items that you want to include in the operation, include only theSellerSKU
andQuantity
request parameters when calling the operation. Do not include theASIN
orCondition
request parameters.The
createInboundShipmentPlan
operation can be skipped for India.
Label preparation preferences
A key input parameter that you include with the createInboundShipmentPlan
operation is LabelPrepPreference
. This parameter indicates your preference for label preparation for the items you are sending to Amazon's fulfillment network. The following are valid LabelPrepPreference
values:
-
SELLER_LABEL
: Indicates that for items that require item labels (items that are not stickerless, commingled inventory), you will label each item yourself. -
AMAZON_LABEL_ONLY
: Amazon attempts to label the items in the inbound shipment when labels are required. If Amazon determines that it does not have the information required to successfully label an item, that item is not included in the inbound shipment plan. -
AMAZON_LABEL_PREFERRED
: Amazon attempts to label the items in the inbound shipment when labels are required. If Amazon determines that it does not have the information required to successfully label an item, that item is included in the inbound shipment plan and the seller must label it.
Note:
Unless you are enrolled in the FBA Label Service,
SELLER_LABEL
is the only validLabelPrepPreference
value. For more information about the FBA Label Service, refer to the Seller Central Help for your marketplace.
Amazon returns the LabelPrepType
response element for each shipment in your shipment plan, which indicates the labeling requirements for the items in each shipment. The following are valid LabelPrepType
values:
-
NO_LABEL
: No item labeling is required for this inbound shipment because the items are stickerless, commingled inventory. This value cannot be returned unless your Fulfillment by Amazon (FBA) account has been configured by Amazon for stickerless, commingled inventory. For more information about stickerless, commingled inventory and how to configure your FBA account for it, refer to the Seller Central Help for your marketplace. -
SELLER_LABEL
: Items in this inbound shipment must be labeled by the seller before sending the shipment to Amazon's fulfillment network. -
AMAZON_LABEL
: Label preparation by Amazon is required for this inbound shipment.
Note:
AMAZON_LABEL
is available only if you are enrolled in the FBA Label Service. For more information about the FBA Label Service, refer to the Seller Central Help for your marketplace.
Call the createInboundShipmentPlan
operation of the Fulfillment Inbound API, passing the following parameters:
Request
Body parameters:
Name | Description | Required |
---|---|---|
ShipFromAddress | The address from which the inbound shipment will be sent. Type: Address | Yes |
LabelPrepPreference | The seller's preference for label preparation for an inbound shipment. Type: LabelPrepPreference | Yes |
ShipToCountryCode | The two-character country code for the country where the inbound shipment is to be sent. Note: Not required. Specifying both ShipToCountryCode and ShipToCountrySubdivisionCode returns an error. Values: ShipToCountryCode values for North America: CA – Canada MX - Mexico US - United States ShipToCountryCode values for MCI sellers in Europe: DE – Germany ES – Spain FR – France GB – United Kingdom IT – Italy Default: The country code for your home marketplace. Type: string | No |
ShipToCountrySubdivisionCode | The two-character country code, followed by a dash and then up to three characters that represent the subdivision of the country where the inbound shipment is to be sent. For example, "IN-MH ". In full ISO 3166-2 format. Note: Not required. Specifying both ShipToCountryCode and ShipToCountrySubdivisionCode returns an error. Type: string | No |
InboundShipmentPlanRequestItems | Item information for creating an inbound shipment plan. Submitted with a call to the createInboundShipmentPlan operation. Type: < InboundShipmentPlanRequestItem > array | Yes |
Request example
POST https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/plans
{
"ShipFromAddress": {
"Name": "Name",
"AddressLine1": "123 any st",
"AddressLine2": "AddressLine2",
"DistrictOrCounty": "Washtenaw",
"City": "Ann Arbor",
"StateOrProvinceCode": "MI",
"CountryCode": "US",
"PostalCode": "48188"
},
"LabelPrepPreference": "SELLER_LABEL",
"ShipToCountryCode": "ShipToCountryCode",
"ShipToCountrySubdivisionCode": "ShipToCountrySubdivisionCode",
"InboundShipmentPlanRequestItems": [
{
"SellerSKU": "SellerSKU",
"ASIN": "ASIN",
"Condition": "NewItem",
"Quantity": 1,
"QuantityInCase": 1,
"PrepDetailsList": [
{
"PrepInstruction": "Polybagging",
"PrepOwner": "AMAZON"
}
]
}
]
}
Response
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the createInboundShipmentPlan operation. Type: CreateInboundShipmentPlanResult |
errors | A list of error responses returned when a request is unsuccessful. Type: ErrorList |
Response example
{
"payload":
{
"InboundShipmentPlans": [
{
"ShipmentId": "ShipmentId",
"DestinationFulfillmentCenterId": "ABE2",
"ShipToAddress": {
"Name": "John Doe",
"AddressLine1": "123 any st",
"AddressLine2": "",
"DistrictOrCounty": "Wayne",
"City": "Detroit",
"StateOrProvinceCode": "MI",
"CountryCode": "US",
"PostalCode": "48110"
},
"LabelPrepType": "NO_LABEL",
"Items": [
{
"SellerSKU": "SellerSKU",
"FulfillmentNetworkSKU": "FulfillmentNetworkSKU",
"Quantity": 10,
"PrepDetailsList": [
{
"PrepInstruction": "Polybagging",
"PrepOwner": "AMAZON"
}
]
}
],
"EstimatedBoxContentsFee": {
"TotalUnits": 10,
"FeePerUnit": {
"CurrencyCode": "USD",
"Value": 10
},
"TotalFee": {
"CurrencyCode": "USD",
"Value": 10
}
}
}
]
}
}
Step 4. Prepare the items for shipping
To prepare your items for shipping, do the following:
-
Make sure each item that you are shipping conforms to Amazon's product packaging requirements. For more information, refer to Packaging and Prep Requirements in Seller Central Help. For more information about Amazon's product packaging requirements for your marketplace, refer to Seller Central URLs.
-
Group the items into separate shipments, one for each shipment in the shipment plan that was returned when you called the
createInboundShipmentPlan
operation. -
If you are sending items that require item labels, create and apply the item labels. For more information about when items require item labels, refer to Step 3. Create an inbound shipment plan.
Step 5. Create an inbound shipment
For each shipment returned by the createInboundShipmentPlan
operation, create an inbound shipment. You create an inbound shipment by calling the createInboundShipment
operation of the Fulfillment Inbound API. Each inbound shipment you create indicates to Amazon that a shipment of items is soon to arrive at a particular Amazon fulfillment center. Each inbound shipment includes a list of items contained in the shipment, as well as a destination fulfillment center identifier and your label preparation preferences for item labels. For more information about label preparation preferences, refer to Label preparation preferences.
Create an inbound shipment by calling the createInboundShipment
operation of the Fulfillment Inbound API, passing the following parameters:
Request
Path parameters:
Name | Description | Required |
---|---|---|
shipmentId | A shipment identifier originally returned by the createInboundShipmentPlan operation. Type: string | Yes |
Body parameters:
Name | Description | Required |
---|---|---|
InboundShipmentHeader | Inbound shipment information used to create and update inbound shipments. Type: InboundShipmentHeader | Yes |
InboundShipmentItems | A list of inbound shipment item information. Type: InboundShipmentItemList | Yes |
MarketplaceId | A marketplace identifier. Specifies the marketplace where the product would be stored. Type: string | Yes |
Response example
POST https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453
{
"InboundShipmentHeader": {
"ShipmentName": "43545345",
"ShipFromAddress": {
"Name": "35435345",
"AddressLine1": "123 any st",
"DistrictOrCounty": "Washtenaw",
"City": "Ann Arbor",
"StateOrProvinceCode": "Test",
"CountryCode": "US",
"PostalCode": "48103"
},
"DestinationFulfillmentCenterId": "AEB2",
"AreCasesRequired": true,
"ShipmentStatus": "WORKING",
"LabelPrepPreference": "SELLER_LABEL",
"IntendedBoxContentsSource": "NONE"
},
"InboundShipmentItems": [
{
"ShipmentId": "345453",
"SellerSKU": "34534545",
"FulfillmentNetworkSKU": "435435435",
"QuantityShipped": 0,
"QuantityReceived": 0,
"QuantityInCase": 0,
"ReleaseDate": "2020-04-23",
"PrepDetailsList": [
{
"PrepInstruction": "Polybagging",
"PrepOwner": "AMAZON"
}
]
}
],
"MarketplaceId": "MarketplaceId"
}
Response
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the createInboundShipment operation. Type: InboundShipmentResult |
Errors | A list of error responses returned when a request is unsuccessful. Type: ErrorList |
Response example
{
"ShipmentId": "345453"
}
Step 6. Use an Amazon-partnered carrier for your inbound shipments (optional)
Sellers in the EU region (the France, Germany, Italy, Spain, and UK marketplaces) and the US marketplace can take advantage of discounted shipping rates by using an Amazon-partnered carrier for their inbound shipments.
Prerequisites:
-
Before using an Amazon-partnered carrier for an inbound shipment, you must read the Seller Central Help about Amazon's Partnered Carrier Program to help ensure that you successfully follow the program instructions and guidelines (Europe) (US).
-
In the EU region, before using an Amazon-partnered carrier for an inbound shipment, you must first review and accept the terms and conditions of the carrier and the terms and conditions of Amazon's Partnered Carrier Program. You can do this on Seller Central. If you attempt to use Amazon Selling Partner APIs to create an inbound shipment using an Amazon-partnered carrier before accepting these terms and conditions, the service returns an error.
To use an Amazon-partnered carrier for an inbound shipment, begin by following the first five steps of Tutorial: Ship inventory to Amazon's Fulfillment Network. After you create an inbound shipment you can request that your shipment be shipped by an Amazon-partnered carrier.
InvalidInput
error for EU marketplacesIf a developer calls the
estimateTransport
operation to estimate shipping charges for Less than Truckload (LTL) Partnered Carrier Program (PCP) FBA Shipments in EU marketplaces, the following error will occur even if they have accepted the terms and conditions:
{ "code": "InvalidInput", "message": "Please accept the [null] terms and conditions in country: [GB]", "details": "" }
This error is returned because the Partnered Carrier Program is not enabled for the EU region (The example error shows GB, but it could show other EU marketplaces).
Refer to the following steps for creating and shipping an inbound shipment using an Amazon-partnered carrier:
Task 1. Submit carton content information
Submit carton content information using the FBA Inbound Shipment Carton Information Feed (POST_FBA_INBOUND_CARTON_CONTENTS
) of the Feeds API. For more information, refer to Step 8. Submit Carton Content Information.
Task 2. Submit the transportation information
Call the putTransportDetails
operation and specify either PartneredSmallParcelData
or PartneredLtlData
, depending on whether your inbound shipment is a Small Parcel or a Less Than Truckload/Full Truckload (LTL/FTL) shipment. This provides the information that an Amazon-partnered carrier needs to provide an estimate for shipping costs. It also provides information that an Amazon fulfillment center can use to forecast and plan for the arrival of your shipment.
Task 3. Request that an estimate is generated for the shipping costs
Call the estimateTransport
operation passing the following parameters, to request that an estimate be generated for an Amazon-partnered carrier to ship your inbound shipment:
Request
Path parameters:
Name | Description | Required |
---|---|---|
shipmentId | A shipment identifier originally returned by the createInboundShipmentPlan operation. Type: string | Yes |
Request example
POST https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/transport/estimate
Response
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the estimateTransport operation. Type: CommonTransportResult |
errors | A list of error responses returned when a result is unsuccessful. Type: ErrorList |
Response example
{
"payload": {
"TransportResult": {
"TransportStatus": "ESTIMATING"
}
}
}
Task 4. Get an estimate for the shipping cost
Call the getTransportDetails
operation to get an estimate for the cost to ship your shipment with an Amazon-partnered carrier. The estimate is returned in the PartneredEstimate
response element. Note that the estimate will not be returned until the TransportStatus
value of the inbound shipment is ESTIMATED
, CONFIRMING
, or CONFIRMED
. Because the getTransportDetails
operation returns TransportStatus
values, you can use this operation to monitor the progress of your inbound shipment. If a PartneredEstimate
value is not yet available, retry the operation later.
Call the getTransportDetails
operation of the Fulfillment Inbound API, passing the following parameters:
Request
Path parameters:
Name | Description | Required |
---|---|---|
shipmentId | A shipment identifier originally returned by the createInboundShipmentPlan operation. Type: string | Yes |
Request example
GET https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/transport
Response
A successful response includes the following elements:
Name | Description | Required |
---|---|---|
payload | The payload for the getTransportDetails operation. Type: GetTransportDetailsResult | Yes |
errors | A list of error responses returned when a request is unsuccessful. Type: ErrorList | No |
Response example
{
"payload": {
"TransportResult": {
"TransportStatus": "ESTIMATING"
}
}
}
Task 5. Confirm the transportation request
Call the confirmTransport
operation to accept the Amazon-partnered shipping estimate, agree to allow Amazon to charge your account for the shipping cost, and request that the Amazon-partnered carrier ship your inbound shipment.
Cancel the transportation request:
After confirming the transportation request, if you decide that you do not want the Amazon-partnered carrier to ship your inbound shipment, you can call the
VoidTransport
operation to cancel the transportation request. Note that for a Small Parcel shipment, you have 24 hours after confirming a transportation request to void it. For a Less Than Truckload/Full Truckload (LTL/FTL) shipment, you have one hour after confirming a transportation request to void it. After the grace period has expired your account will be charged for the shipping cost.
Call the confirmTransport
operation of the Fulfillment Inbound API, passing the following parameters:
Request
Path parameters:
Name | Description | Required |
---|---|---|
shipmentId | A shipment identifier originally returned by the createInboundShipmentPlan operation. Type: string | Yes |
Request example
POST https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/transport/confirm
Response
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the confirmTransport operation. Type: CommonTransportResult |
error | A list of error responses returned when a request is unsuccessful. Type: ErrorList |
Response example
{
"payload": {
"TransportResult": {
"TransportStatus": "CONFIRMING"
}
}
}
Call the VoidTransport
operation of the Fulfillment Inbound API, passing the following parameters:
Request
Path parameters:
Name | Description | Required |
---|---|---|
shipmentId | A shipment identifier originally returned by the createInboundShipmentPlan operation. Type: string | Yes |
Request example
POST https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/transport/void
Response
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the voidTransport operation. Type: CommonTransportResult |
errors | A list of error responses returned when a request is unsuccessful. Type: ErrorList |
Response example
{
"payload": {
"TransportResult": {
"TransportStatus": "VOIDING"
}
}
}
Task 6. Request package labels for your inbound shipment
Call the getLabels
operation to request unique shipping labels for your inbound shipments. For Amazon-partnered, Small Parcel shipments, this operation also returns carrier labels. For more information, refer to Step 9. Request shipping labels for your inbound shipment.
Note
To print labels for a specific box, provide the
boxID
(from thelistShipmentBoxes
response) as thePackageLabelsToPrint
value.
Task 7. Request pallet labels or bills of lading (LTL/FTL only)
For Less Than Truckload/Full Truckload (LTL/FTL) shipments, if you don’t create your own pallet labels or bills of lading, you can use either the getLabels
or the getBillOfLading
operation. For more information, refer to Step 10. Request pallet labels or bills of lading (LTL/FTL only).
Task 8. Send your shipments to Amazon's fulfillment network
You can do one of the following:
-
For Small Parcel shipments: Go to Step 11. Send your shipments to Amazon's fulfillment network.
-
For Less Than Truckload/Full Truckload (LTL/FTL) shipments: Follow the instructions in Seller Central Help for an LTL/FTL shipment using an Amazon-partnered carrier.
Step 7. Send shipment tracking numbers to Amazon
When you use an Amazon-partnered carrier for an inbound shipment, the carrier provides your shipment tracking numbers to Amazon as part of the process. However, even if you are not using an Amazon-partnered carrier for your inbound shipments, Amazon recommends that you send us the shipment tracking numbers for your inbound shipment. Providing this information helps Amazon process your inbound shipment at the Amazon fulfillment center faster and more accurately.
Call the putTransportDetails
operation and specify either PartneredSmallParcelData or PartneredLtlData, depending on whether your inbound shipment is a Small Parcel or a Less Than Truckload/Full Truckload (LTL/FTL) shipment. This provides the information that an Amazon-partnered carrier needs to provide an estimate for shipping costs. It also provides information that an Amazon fulfillment center can use to forecast and plan for the arrival of your shipment.
To send shipment tracking numbers to Amazon
-
Call the
putTransportDetails
operation from theFulfillment Inbound Shipment
API section. -
Include your shipment tracking numbers using the
TrackingId
parameter.
Call the putTransportDetails
operation of the Fulfillment Inbound Shipment API, passing the following parameters:
Request
Path parameters:
Name | Description | Required |
---|---|---|
shipmentId | A shipment identifier originally returned by the createInboundShipmentPlan operation. Type: string | Yes |
Body parameters:
Name | Description | Required |
---|---|---|
isPartnered | Indicates whether a putTransportDetails request is for an Amazon-partnered carrier. Type: Boolean | Yes |
ShipmentType | Specifies the carrier shipment type in a putTransportDetails request. Possible values: SP - Small Parcel, LTL - Less Than Truckload/Full Truckload (LTL/FTL). Enum: SP, LTL Type: string | Yes |
TransportDetails | Information required to create an Amazon-partnered carrier shipping estimate, or to alert the Amazon fulfillment center to the arrival of an inbound shipment by a non-Amazon-partnered carrier. Type: TransportDetailInput | Yes |
Request example
PUT https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/transport
{
"IsPartnered": true,
"ShipmentType": "SP",
"TransportDetails": {
"PartneredSmallParcelData": {
"PackageList": [
{
"Dimensions": {
"Length": 11,
"Width": 11,
"Height": 11,
"Unit": "inches"
},
"Weight": {
"Value": 11,
"Unit": "pounds"
}
}
],
"CarrierName": "string"
},
"NonPartneredSmallParcelData": {
"CarrierName": "USPS",
"PackageList": [
{
"TrackingId": "werwrwerwrwrer"
}
]
},
"PartneredLtlData": {
"Contact": {
"Name": "Test1",
"Phone": "234-343-3434",
"Email": "[email protected]",
"Fax": "234-343-3434"
},
"BoxCount": 1,
"SellerFreightClass": "50",
"FreightReadyDate": "2020-03-27",
"PalletList": [
{
"Dimensions": {
"Length": 13,
"Width": 13,
"Height": 13,
"Unit": "inches"
},
"Weight": {
"Value": 13,
"Unit": "pounds"
},
"IsStacked": true
}
],
"TotalWeight": {
"Value": 13,
"Unit": "pounds"
},
"SellerDeclaredValue": {
"CurrencyCode": "USD",
"Value": 20
}
},
"NonPartneredLtlData": {
"CarrierName": "USPS",
"ProNumber": "3746274"
}
}
}
Response
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the putTransportDetails operation. Type: CommonTransportResult |
errors | A list of error response returned when a request is unsuccessful. Type: ErrorList |
Response example
{
"payload": {
"TransportResult": {
"TransportStatus": "WORKING"
}
}
}
Getting the shipment status of non-Amazon-partnered Small Parcel shipments
After sending shipment tracking numbers for a non-Amazon-partnered Small Parcel shipment to Amazon, you can get the shipment status by calling the getTransportDetails
operation.
To get the shipment status of non-Amazon-partnered Small Parcel shipments
-
Call the
putTransportDetails
operation. This provides your shipment tracking numbers to Amazon. -
Call the
getTransportDetails
operation. Amazon returns shipment status in thePackageStatus
response element.
Step 8. Submit carton content information
Submit carton content information using the FBA Inbound Shipment Carton Information Feed (POST_FBA_INBOUND_CARTON_CONTENTS
) of the Feeds API section. For more information, refer to the XSD
for POST_FBA_INBOUND_CARTON_CONTENTS
.
While providing information about cartons, it is required to provide information about the items and quantities within the carton. If an item has an expiration, it is required to provide an expiration date in the Feed.
The order of the xml fields is important and should be maintained. ShipmentId
, NumCartons
, Carton
need to go in that order. Even sub fields of Carton
and Item
need to be in the correct order.
Restrictions:
-
Only one shipment per feed.
-
Maximum 200 items per carton.
For more information about this feed, refer to Feeds API v2020-09-04 reference. You can refer to the Feeds Use Case Guide for more information on how to submit a feed to Amazon.
Retain CartonId values:
Retain the
CartonId
values that you specify using this feed, as you will need these values to specify which package labels to print in Step 9. Request shipping labels for your inbound shipment. Also, retain a record of the correspondence between each package and itsCartonId
value. This is so that after you get your labels in Step 9, you will know which packages to put them on.
Step 9. Request shipping labels for your inbound shipment
Call the getLabels
operation to request unique shipping labels for your inbound shipments.
Submit the FBA Inbound Shipment Carton Information Feed:
Before calling the
getLabels
operation, use the Feeds API section to submit the FBA Inbound Shipment Carton Information Feed (refer to Step 8. Submit carton content information). This provides information to Amazon about the carton contents of your inbound shipment, which helps to ensure that your shipment is processed at the Amazon fulfillment center quickly and accurately. You must submit this feed before calling thegetLabels
operation, otherwise the operation returns theNoPackageContentInformation
error.
Each shipping label returned by the getLabels
operation should be affixed to the package in the shipment that it corresponds to, so the labels indicate the package contents. This helps to ensure that your shipment is processed at the Amazon fulfillment center quickly and accurately.
To get shipping labels on the right packages, do the following for each shipping label:
-
Get the Package ID, which is the string located directly under the bar code of the shipping label. This ID matches one of the
CartonId
values that you included in the FBA Inbound Shipment Carton Information Feed that you submitted in Step 8. Submit carton content information. -
Determine which package to affix the shipping label to using the record of the correspondence between
CartonId
values and packages that you created in Step 8. -
Affix the label to its corresponding package.
Information included on shipping labels
In all circumstances, the getLabels
operation returns shipping labels that include a unique bar code and Package ID (the string located directly under the bar code). Depending on the contents of the packages in your shipments, the labels can also include an ASIN and an expiration date.
Shipping labels include an ASIN and an expiration date in either of the following situations:
-
Every item in the shipment shares the same ASIN and expiration date.
-
The shipment includes multiple ASINs, but every package in the shipment contains items that share the same ASIN and expiration date.
Shipping labels include an ASIN and no expiration date in either of the following situations:
-
Every item in the shipment shares the same ASIN. The ASIN does not have an expiration date.
-
The shipment includes multiple ASINs, but every package in the shipment contains items that share the same ASIN. The ASINs do not have expiration dates.
Shipping labels do not include an ASIN or an expiration date when the shipment contains at least one package with items that do not share the same ASIN and expiration date.
Construct a unique barcode:
For Small Parcel shipments, the shipping label for each package should have a unique barcode. This helps ensure that your shipment is processed in a timely manner when it reaches Amazon's fulfillment network. To construct unique barcode values for each package in a shipment, do the following:
Start with the Shipment ID value and append "U" and "000001" to get the barcode value for the first package in the shipment.
To get the barcode values for each successive package in the shipment, (1) increment "000001" by one, and then (2) append "U" and the incremented number to the Shipment ID value. Do this for each package in the shipment. For example, If you have three packages in a shipment with a Shipment ID value of FBA1MMD8D0, your three barcode values would be FBA1MMD8D0U000001, FBA1MMD8D0U000002, and FBA1MMD8D0U000003. A box label identified with its own unique numerical identifier must follow the 6-digit number format after U, printed and affixed to each carton you send to a fulfillment center (for example, U000001, U000002, U000003).
Call the getLabels
operation of the Fulfillment Inbound API, passing the following parameters:
Request
Path parameters:
Name | Description | Required |
---|---|---|
shipmentId | A shipment identifier originally returned by the createInboundShipmentPlan operation. Type: string | Yes |
Query parameters:
Name | Description | Required |
---|---|---|
PageType | The page type to use to print the labels. Possible values: PackageLabel_Letter_2 , PackageLabel_Letter_4 , PackageLabel_Letter_6 , PackageLabel_Letter_6_CarrierLeft , PackageLabel_A4_2 , PackageLabel_A4_4 , PackageLabel_Plain_Paper , PackageLabel_Plain_Paper_CarrierBottom . Type: enum (PageType ) | Yes |
LabelType | The type of labels requested. Possible values: DEFAULT , UNIQUE , PALLET . Type: enum (LabelType ) | Yes |
NumberOfPackages | The number of packages in the shipment. Type: int | No |
PackageLabelsToPrint | A list of identifiers that specify packages for which you want package labels printed. Must match CartonId values previously passed using the FBA Inbound Shipment Carton Information Feed. If not, the operation returns the IncorrectPackageIdentifier error code Type: array | No |
NumberOfPallets | The number of pallets in the shipment. This returns four identical labels for each pallet. Type: int | No |
Request example
PUT https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/labels?PageType=PackageLabel_Letter_2&LabelType=DEFAULT
Response
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the getLabels operation. Type: LabelDownloadURL |
errors | A list of error responses returned when a request is unsuccessful. Type: ErrorList |
Response example
{
"payload": {
"DownloadURL": "http://bill-of.lading.url.com"
}
}
Step 10. Request pallet labels or bills of lading (LTL/FTL only)
For Less Than Truckload/Full Truckload (LTL/FTL) shipments, if you don’t create your own pallet labels or bills of lading, you can use the following operations:
GetLabels
- Returns labels for the outside of the shrink-wrapped pallets of your inbound shipment.
GetBillOfLading
- Returns a bill of lading for your inbound shipment.
Call the GetBillOfLading
operation of the Fulfillment Inbound API, passing the following parameters:
Request
Path parameters:
Name | Description | Required |
---|---|---|
shipmentId | A shipment identifier originally returned by the createInboundShipmentPlan operation. Type: string | Yes |
Request example
GET https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/billOfLading
Response
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the getBillOfLading operation Type: BillOfLadingDownloadURL |
errors | A list of error responses returned when a request is unsuccessful. Type: ErrorList |
Response example
{
"payload": {
"DownloadURL": "http://bill-of.lading.url.com"
}
}
Step 11. Send your shipments to Amazon's fulfillment network
Send your shipments to Amazon's fulfillment network using an Amazon-Partnered carrier or a non-Amazon-Partnered carrier that is registered with Amazon. For more information about sending shipments to Amazon's fulfillment network, refer to the Seller Central Help for your marketplace. For more information on how to use Amazon partnered carrier for inbound shipments refer to Step 6. Use an Amazon-partnered carrier for your inbound shipments (optional).
Step 12. Mark your shipments as shipped
After sending a shipment to Amazon's fulfillment network, you should call the updateInboundShipment
operation of the Inbound Shipment API section. Include the ShipmentId
that you used when you called the createInboundShipment
operation for that shipment. Also include the ShipmentStatus
request parameter with its value set to *SHIPPED*
. For more information about the Inbound Shipment API section, refer to the Fulfillment Inbound Shipment
API Reference. For code samples for calling the updateInboundShipment
operation, refer to the Client Library links on the Amazon Marketplace Web Service (Amazon MWS) portal for your region.
Note
Before the shipment arrives at the fulfillment center, you can edit the number of units in a shipment by up to five percent or six units per SKU per shipment, whichever is greater. You can also remove units from a shipment, up to six units per SKU per shipment. You can’t remove all SKUs in a shipment. A shipment cannot be empty. If you need to make changes beyond these limits, you must cancel the inbound plan and create a new one.
Call the updateInboundShipment
operation of the Inbound Shipment API, passing the following parameters:
Request
Path parameters:
Name | Description | Required |
---|---|---|
shipmentId | A shipment identifier originally returned by the createInboundShipmentPlan operation. Type: string | Yes |
Body parameters:
Name | Description | Required |
---|---|---|
body | The request schema for an inbound shipment. Type: InboundShipmentRequest | Yes |
Request example
PUT https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/FBA15DJCQ1ZF
{
"MarketplaceId": "ATVPDKIKX0DER",
"InboundShipmentHeader": {
"ShipmentName": "Shipment for FBA15DJCQ1ZF",
"ShipFromAddress": {
"Name": "Shirley Rodriguez",
"AddressLine1": "123 any st",
"AddressLine2": "",
"DistrictOrCounty": "Washtenaw",
"City": "Ann Arbor",
"StateOrProvinceCode": "CO",
"CountryCode": "US",
"PostalCode": "48104"
},
"DestinationFulfillmentCenterId": "ABE2",
"ShipmentStatus": "WORKING",
"LabelPrepPreference": "SELLER_LABEL"
},
"InboundShipmentItems": [
{
"SellerSKU": "PSMM-TEST-SKU-Apr-03_21_17_20-0379",
"QuantityShipped": 1
}
]
}
Request
A successful response includes the following elements:
Name | Description |
---|---|
payload | The payload for the updateInboundShipment operation Type: InboundShipmentResult |
errors | A list of error responses returned when a request is unsuccessful. Type: ErrorList |
Response example
{
"ShipmentId": "FBA15DJCQ1ZF"
}
Updated 20 days ago