Fulfillment Inbound API v0 Use Case Guide

How to use the Fulfillment Inbound 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 diagram below shows steps to ship inventory to Amazon's fulfillment network.

Fulfillment Inbound Shipment Workflow

Tutorial: Ship inventory to Amazon’s Fulfillment Network

Amazon recommends this workflow to ship inventory to Amazon's fulfillment network. Once 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 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.

getItemEligibilityPreview

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

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. See 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 may 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. See 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:

  1. 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. See Selling Partner Feeds API Use Case Guide.

To create a listing and convert it to FBA (if the product is in Amazon's catalog)

  1. 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. See 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, see 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 of the 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 createInboundShipmentPlan 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, see 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, see the Seller Central Help 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, see the Seller Central Help for your marketplace.

createInboundShipmentPlan

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, see Packaging and Prep Requirements in Seller Central Help. For more information about Amazon's product packaging requirements for your marketplace, see 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, see 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, see Label preparation preferences.

createInboundShipment

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 the Tutorial 1. Shipping 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.

See 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, please 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 to request that an estimate be generated for an Amazon-partnered carrier to ship your inbound shipment.

estimateTransport

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.

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.

confirmTransport

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"
    }
  }
}

voidTransport

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, please refer to Step 9. Request shipping labels for your inbound shipment.

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, please 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 the 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

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

  2. Include your shipment tracking numbers using the TrackingId parameter.

putTransportDetails

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 for your non-Amazon-partnered Small Parcel shipment

  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.

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

getTransportDetails

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"
    }
  }
}

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, see 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, see 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. Request shipping labels for your inbound shipment, you will know which packages to put them on.

Step 9. Request shipping labels for your inbound shipment

Call the getLabels with 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 (see 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 below 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. Submit carton content information.

  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 below 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, etc.)

getLabels

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.

getBillOfLading

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, see 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, see the Fulfillment Inbound Shipment API Reference. For code samples for calling the updateInboundShipment operation, see the Client Library links on the Amazon Marketplace Web Service (Amazon MWS) portal for your region.

updateInboundShipment

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"
}