HomeDocumentationCode SamplesAnnouncementsModelsRelease NotesFAQGitHubVideos
Developer HubAPI StatusSupport
Documentation
Developer HubAPI StatusSupport

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.

The Fulfillment Inbound Shipment Workflow.

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:

NameDescriptionRequired
marketplaceIDsThe identifier for the marketplace in which you want to determine eligibility. Required only when program=INBOUND. Max count: 1 Type: < string > arrayNo
asinThe ASIN of the item for which you want an eligibility preview. Type: stringYes
programThe 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:

NameDescription
payloadThe payload for the getItemEligibilityPreview operation. Type: ItemEligibilityPreview
errorsAn 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 that ineligibilityReasonList 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

  1. 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:

  2. Submit the Inventory Feed (POST_INVENTORY_AVAILABILITY_DATA). The feed should include:

    • FulfillmentCenterID: Set to AMAZON_NA, AMAZON_EU, AMAZON_IN, or AMAZON_JP, depending on the seller's marketplace.

    • Lookup: set to FulfillmentNetwork.

    • SwitchFulfillmentTo: set to AFN.

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 and product-id-type: containing values that uniquely identify the product in Amazon's catalog.

  • fulfillment-center-id: set to AMAZON_NA, AMAZON_EU, AMAZON_IN, or AMAZON_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)

  1. 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.
  2. 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 to AMAZON_NA, AMAZON_EU, AMAZON_IN, or AMAZON_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 the SellerSKU and Quantity request parameters when calling the operation. Do not include the ASIN or Condition 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 valid LabelPrepPreference 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:

NameDescriptionRequired
ShipFromAddressThe address from which the inbound shipment will be sent. Type: AddressYes
LabelPrepPreferenceThe seller's preference for label preparation for an inbound shipment. Type: LabelPrepPreferenceYes
ShipToCountryCodeThe 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: stringNo
ShipToCountrySubdivisionCodeThe 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: stringNo
InboundShipmentPlanRequestItemsItem information for creating an inbound shipment plan. Submitted with a call to the createInboundShipmentPlan operation. Type: < InboundShipmentPlanRequestItem > arrayYes

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:

NameDescription
payloadThe payload for the createInboundShipmentPlan operation. Type: CreateInboundShipmentPlanResult
errorsA 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:

  1. 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.

  2. Group the items into separate shipments, one for each shipment in the shipment plan that was returned when you called the createInboundShipmentPlan operation.

  3. 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:

NameDescriptionRequired
shipmentIdA shipment identifier originally returned by the createInboundShipmentPlan operation. Type: stringYes

Body parameters:

NameDescriptionRequired
InboundShipmentHeaderInbound shipment information used to create and update inbound shipments. Type: InboundShipmentHeaderYes
InboundShipmentItemsA list of inbound shipment item information. Type: InboundShipmentItemListYes
MarketplaceIdA marketplace identifier. Specifies the marketplace where the product would be stored. Type: stringYes

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:

NameDescription
payloadThe payload for the createInboundShipment operation. Type: InboundShipmentResult
ErrorsA 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 marketplaces

If 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:

NameDescriptionRequired
shipmentIdA shipment identifier originally returned by the createInboundShipmentPlan operation. Type: stringYes

Request example

POST https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/transport/estimate

Response

A successful response includes the following elements:

NameDescription
payloadThe payload for the estimateTransport operation. Type: CommonTransportResult
errorsA 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:

NameDescriptionRequired
shipmentIdA shipment identifier originally returned by the createInboundShipmentPlan operation. Type: stringYes

Request example

GET https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/transport

Response

A successful response includes the following elements:

NameDescriptionRequired
payloadThe payload for the getTransportDetails operation. Type: GetTransportDetailsResultYes
errorsA list of error responses returned when a request is unsuccessful. Type: ErrorListNo

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:

NameDescriptionRequired
shipmentIdA shipment identifier originally returned by the createInboundShipmentPlan operation. Type: stringYes

Request example

POST https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/transport/confirm

Response

A successful response includes the following elements:

NameDescription
payloadThe payload for the confirmTransport operation. Type: CommonTransportResult
errorA 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:

NameDescriptionRequired
shipmentIdA shipment identifier originally returned by the createInboundShipmentPlan operation. Type: stringYes

Request example

POST https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/transport/void

Response

A successful response includes the following elements:

NameDescription
payloadThe payload for the voidTransport operation. Type: CommonTransportResult
errorsA 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 the listShipmentBoxes response) as the PackageLabelsToPrint 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:

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

  1. Call the putTransportDetails operation from the Fulfillment Inbound Shipment API section.

  2. 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:

NameDescriptionRequired
shipmentIdA shipment identifier originally returned by the createInboundShipmentPlan operation. Type: stringYes

Body parameters:

NameDescriptionRequired
isPartneredIndicates whether a putTransportDetails request is for an Amazon-partnered carrier. Type: BooleanYes
ShipmentTypeSpecifies 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: stringYes
TransportDetailsInformation 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: TransportDetailInputYes

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:

NameDescription
payloadThe payload for the putTransportDetails operation. Type: CommonTransportResult
errorsA 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

  1. Call the putTransportDetails operation. This provides your shipment tracking numbers to Amazon.

  2. Call the getTransportDetails operation. Amazon returns shipment status in the PackageStatus 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:

  1. Only one shipment per feed.

  2. 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 its CartonId 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 the getLabels operation, otherwise the operation returns the NoPackageContentInformation 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:

  1. 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.

  2. 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.

  3. 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:

  1. Start with the Shipment ID value and append "U" and "000001" to get the barcode value for the first package in the shipment.

  2. 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:

NameDescriptionRequired
shipmentIdA shipment identifier originally returned by the createInboundShipmentPlan operation. Type: stringYes

Query parameters:

NameDescriptionRequired
PageTypeThe 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
LabelTypeThe type of labels requested. Possible values: DEFAULT, UNIQUE, PALLET. Type: enum (LabelType)Yes
NumberOfPackagesThe number of packages in the shipment. Type: intNo
PackageLabelsToPrintA 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
NumberOfPalletsThe number of pallets in the shipment. This returns four identical labels for each pallet. Type: intNo

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:

NameDescription
payloadThe payload for the getLabels operation. Type: LabelDownloadURL
errorsA 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:

NameDescriptionRequired
shipmentIdA shipment identifier originally returned by the createInboundShipmentPlan operation. Type: stringYes

Request example

GET https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/345453/billOfLading

Response

A successful response includes the following elements:

NameDescription
payloadThe payload for the getBillOfLading operation Type: BillOfLadingDownloadURL
errorsA 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:

NameDescriptionRequired
shipmentIdA shipment identifier originally returned by the createInboundShipmentPlan operation. Type: stringYes

Body parameters:

NameDescriptionRequired
bodyThe request schema for an inbound shipment. Type: InboundShipmentRequestYes

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:

NameDescription
payloadThe payload for the updateInboundShipment operation Type: InboundShipmentResult
errorsA list of error responses returned when a request is unsuccessful. Type: ErrorList

Response example

{
	 "ShipmentId": "FBA15DJCQ1ZF"
}