HomeDocumentationCode SamplesAPI ReferenceAnnouncementsModelsRelease NotesFAQGitHubVideos
Developer HubAPI StatusSupport
Documentation
Developer HubAPI StatusSupport

Fulfillment Inbound API v2024-03-20 Code Samples

Code samples to aid with integration to the Fulfillment Inbound API v 2024-03-20.

Learn how to integrate Amazon's Fulfillment Inbound API with the Send-to-Amazon (STA) interface on Seller Central. This guide includes essential workflow steps, Postman collections, sample code, and insights for managing Fulfillment By Amazon (FBA) shipments across various workflows.

Use cases supported

The Fulfillment Inbound v2024 API supports several ways to create shipments:

  1. Small Parcel Delivery (SPD) with an Amazon-partnered carrier (PCP): Sellers can create inbound shipments using Amazon's partnered carriers for small parcel deliveries (that is, individual boxes).
  2. Small Parcel Delivery (SPD) with a non-partnered carrier (nPCP): Sellers can use non-partnered carriers (that is, their own transportation carriers) for small parcel deliveries. Sellers can choose their preferred shipping carriers and still have access to the benefits of FBA.
  3. Pallets (LTL/FTL) with an Amazon-partnered carrier (PCP): For larger shipments, sellers can create pallet deliveries using Amazon's partnered carriers. This method is ideal for bulk shipments that require less-than-truckload (LTL) or full-truckload (FTL) services.
  4. Pallets (LTL/FTL) with non-partnered carriers (nPCP): Sellers have greater control over the logistics of larger shipments by using their own non-partnered carriers.
  5. Pallet deliveries with the Pack Later option: Sellers can create pallet deliveries even when carton or box packing information isn’t provided upfront. This “Pack Later” flexibility enables sellers to finalize packing details later.
  6. Retrieve inbound plan details: Sellers can retrieve detailed information about their inbound plans through GET operations, which allows them to track and manage their shipments.

Postman collections

To help test operations, you can use Postman collections. These Postman collections include requests and responses that you can use to experiment with various endpoints and functionalities.

  1. Small Parcel Delivery (SPD) with an Amazon-partnered carrier (PCP)
  2. Small Parcel Delivery (SPD) with a non-partnered carrier (nPCP)
  3. Pallets (LTL/FTL) with an Amazon-partnered carrier (PCP)
  4. Pallets (LTL/FTL) with non-partnered carriers (nPCP)
  5. Pallet deliveries with the Pack Later option
  6. Retrieve inbound plan details

Sample code application

The Fulfillment Inbound Sample Solution Code App includes detailed code samples and all the necessary resources to deploy a fully functional SP-API application that uses the Fulfillment Inbound API v2024-03-20. You can adjust the code to fit your specific requirements.

For guidance on use cases 1-4, refer to the following tutorials. Before you follow these tutorials, complete the necessary setup and pre-requisites outlined in the use case guide to access the Fulfillment Inbound API.

Tutorial 1: Inbound shipments with an Amazon-partnered carrier (PCP)

Learn how to inbound Small Parcel Deliveries (SPD) or pallets (LTL/FTL) with an Amazon-partnered transportation carrier using the Fulfillment Inbound API.

Diagram of partnered carrier workflow

Step 1. Create an inbound plan

Operation

Parameters

  • destinationMarketplaces: Target marketplaces for shipment.
  • sourceAddress: Address from which items are shipped.
  • items:
    • prepOwner: Preparation owner.
    • labelOwner: Labeling owner.
    • msku: Merchant SKU.
    • itemQuantity: Quantity of items.

Response

  • Includes inboundPlanId and operationId to check the status of inbound plan creation.

📘

Note

POST operations are asynchronous. Check the status of a POST operation by passing its operationId to getInboundOperationStatus.

Step 2. Generate packing options

Operation

Parameters

  • inboundPlanId: Use the inbound plan ID created in Step 1.

Response

  • operationId: An ID that you can use to check the status of packing options generation.

Step 3. List packing options

Operation

Parameters

  • inboundPlanId: Input the inbound plan ID.

Response

  • Includes available packingOptions. Each packing option is represented by a packingOptionId.
  • Each packing option contains one or more packingGroups, identified by packingGroupId. Each packing group includes a list of SKUs that should be packed together.

To view the SKU items in a packing group, call listPackingGroupItems with the packing group's packingGroupId.

📘

Note

Choose only one packing option (packingOptionId).

Response example

{
  "packingOptions": [
    {
      "packingGroups": [
        "pg1xxxxxxxxxxxxxxxxxxx",
        "pg2yyyyyyyyyyyyyyyyyyy"
      ],
      "fees": [x],
      "discounts": [x],
      "packingOptionId": "poxxxxxxxxxxxxxxxxxxxx",
      "supportedShippingConfigurations": [x],
      "status": "xxxxxx"
    }
  ],
  "pagination": {}
}

Step 4. Confirm packing option

Operation

Parameters

  • inboundPlanId: The ID of the inbound plan.
  • packingOptionId: The chosen packing option ID. You can only confirm one option per inbound plan.

Response

  • operationId: An ID that you can use to check the status of the packing confirmation.

Step 5. Set packing information

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • packingGroupId: ID for each packing group within the chosen packing option.
  • boxes: Includes box contents source, box dimensions (weight and quantity), items with prep info, and item quantities matching the inbound plan.

Response

  • operationId: An ID that you can use to check the status of the API call.

Request example

{
  "packageGroupings": [
    {
      "boxes": [
        {
          "contentInformationSource": "BOX_CONTENT_PROVIDED",
          "dimensions": {
            "height": 10,
            "length": 10,
            "unitOfMeasurement": "IN",
            "width": 10
          },
          "quantity": 1,
          "weight": {
            "unit": "LB",
            "value": 2
          },
          "items": [
            {
              "labelOwner": "AMAZON",
              "msku": "SKU12345",
              "prepOwner": "AMAZON",
              "quantity": 1
            }
          ]
        }
      ],
      "packingGroupId": "pg1xxxxxxxxxxxxxxxxxxx"
    },
    {
      "boxes": [
        {
          "contentInformationSource": "BOX_CONTENT_PROVIDED",
          "dimensions": {
            "height": 10,
            "length": 10,
            "unitOfMeasurement": "IN",
            "width": 10
          },
          "quantity": 1,
          "weight": {
            "unit": "LB",
            "value": 1
          },
          "items": [
            {
              "labelOwner": "SELLER",
              "msku": "SKU67890",
              "prepOwner": "SELLER",
              "quantity": 1
            }
          ]
        }
      ],
      "packingGroupId": "pg2yyyyyyyyyyyyyyyyyyy"
    }
  ]
}

Step 6. Generate placement options

Operation

generatePlacementOptions

Parameters

  • inboundPlanId: ID of the inbound plan.

Response

  • operationId: An ID that you can use to check the status of placement options generation.

Step 7. List placement options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.

Response

  • Includes available placementOptions, each represented by a placementOptionId.
  • Each placementOptionId includes one or more shipmentIds and details on fees or discounts.

📘

Note

Choose only one placement option (placementOptionId).

Response example

"placementOptions": [
  {
    "fees": [
      {
        "description": "Placement service fee represents service to inbound with minimal shipment splits and destinations of skus",
        "type": "FEE",
        "value": {
          "amount": 1.10,
          "code": "USD"
        },
        "target": "Placement Services"
      }
    ],
    "shipmentIds": [
      "shxxxxxxxxxxxxxxx",
      "shxxxxxxxxxxxxxxx"
    ],
    "discounts": [],
    "expiration": "yyyy-mm-ddT00:00:00.00Z",
    "placementOptionId": "plxxxxxxxxxxxxxxx",
    "status": "OFFERED"
  }
]

The following code sample demonstrates how to choose the least expensive placementOption. Customize this code to fit your own selection criteria.

Step 8. Generate transportation options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • placementOptionId: The chosen placement option ID.
  • shipmentTransportationConfigurations: Configuration details including:
    • shipmentId: Each shipment ID within the chosen placement option. Include all shipment IDs within the selected placement option.
    • readyToShipWindow: Start date for when shipments are ready for delivery.
    • freightInformation (only if you want to ship pallets): The declared value and freight class.
    • pallets (only if you want to ship pallets): Information about the pallets being shipped, including quantity, dimensions, weight, and stackability.

Response

  • Includes an operationId that you can use to check the status of transportation options generation.

Request example for small parcel delivery

{
  "placementOptionId": "plxxxxxxxxxxxxxxxxxxxx",
  "shipmentTransportationConfigurations": [
    {
      "readyToShipWindow": {
        "start": "yyyy-mm-ddT00:00:00Z"
      },
      "shipmentId": "sh1xxxxxxxxxxxxxxx"
    },
    {
      "readyToShipWindow": {
        "start": "yyyy-mm-T00:00:00Z"
      },
      "shipmentId": "sh2xxxxxxxxxxxxxx"
    }
  ]
}

Request example for pallet (LTL/FTL) delivery

{
  "placementOptionId": "plxxxxxxxxxxxxxxxxxxxx",
  "shipmentTransportationConfigurations": [
    {
      "readyToShipWindow": {
        "start": "yyyy-mm-ddT00:00:00Z"
      },
      "shipmentId": "shxxxxxxxxxxxxxxxx",
      "freightInformation": {
        "declaredValue": {
          "amount": 200,
          "code": "USD"
        },
        "freightClass": "FC_XX"
      },
      "pallets": [
        {
          "quantity": 1,
          "dimensions": {
            "height": 48,
            "length": 48,
            "unitOfMeasurement": "IN",
            "width": 40
          },
          "stackability": "STACKABLE",
          "weight": {
            "unit": "LB",
            "value": 600
          }
        }
      ]
    }
  ]
}

Step 7. List transportation options

Operation

Parameters

  • inboundPlanId: The ID of the inbound plan.
  • placementOptionId: The ID of the chosen placement option.

Response

  • Includes different available transportationOptions, each represented by transportationOptionId per shipmentId. Each transportation option contains details about:
    • carrier: Identifies the carrier.
    • shippingMode: Identifies the shipment type (for example, Small Parcel Delivery or pallets).
    • shippingSolution: Identifies whether the carrier is Amazon Partnered or your own transportation carrier.
    • preconditions: Conditions that must be met to provide the delivery window. Only applicable to your own carrier options.

📘

Note

If you have multiple shipmentIds from listPlacementOptions, choose a transportationOptionId for each shipmentId.

To ship using the Amazon Partnered Carrier in this tutorial, you must select the transportationOption based on your shipment type:

  • For small parcel deliveries, choose the option where shippingMode is GROUND_SMALL_PARCEL.
  • For pallet shipments, choose the option where shippingMode is FREIGHT_LTL.

In both cases, ensure that shippingSolution is AMAZON_PARTNERED_CARRIER.

Response example for small parcel delivery

"transportationOptions": [
  {
    "carrier": {
      "name": "United States Postal Service",
      "alphaCode": "USPS"
    },
    "preconditions": [
      "CONFIRMED_DELIVERY_WINDOW"
    ],
    "shipmentId": "shxxxxxxxxxxxxxx",
    "shippingMode": "GROUND_SMALL_PARCEL",
    "transportationOptionId": "toxxxxxxxxxxxxxx",
    "shippingSolution": "USE_YOUR_OWN_CARRIER"
  },
  {
    "carrier": {
      "name": "UPS",
      "alphaCode": "UPSN"
    },
    "quote": {
      "cost": {
        "amount": 19.6,
        "code": "USD"
      }
    },
    "preconditions": [],
    "shipmentId": "shxxxxxxxxxxxxxx",
    "shippingMode": "GROUND_SMALL_PARCEL",
    "transportationOptionId": "toxxxxxxxxxxxxxx",
    "shippingSolution": "AMAZON_PARTNERED_CARRIER"
  }
]

Response example for pallet delivery

{
  "carrier": {
    "name": "XXXXX",
    "alphaCode": "ABCD"
  },
  "carrierAppointment": {
    "startTime": "2024-10-11T00:00Z",
    "endTime": "2024-10-11T23:59Z"
  },
  "quote": {
    "cost": {
      "amount": 326.54,
      "code": "USD"
    },
    "expiration": "2024-10-09T22:40Z"
  },
  "preconditions": [],
  "shipmentId": "shxxxxxxxxxxxxxx",
  "shippingMode": "FREIGHT_LTL",
  "transportationOptionId": "toxxxxxxxxxxxxxx",
  "shippingSolution": "AMAZON_PARTNERED_CARRIER"
}

Step 8. Get shipment

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • shipmentId: ID of the shipment for which to retrieve details.

Response

  • Includes the source address from which the shipment originates.
  • Includes the destination warehouse address for the shipment.
  • Includes the current status of the shipment.

📘

Note

If you are not satisfied with the chosen options, you can regenerate and select another placement option or transportation option before final confirmation.

Step 9. Confirm placement option

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • placementOptionId: The chosen placement option ID to confirm.

Response

  • operationId: An ID that you can use to check the status of the placement confirmation.

📘

Note

You can only confirm one placement option per inbound plan.

Step 10. Confirm transportation options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • transportationSelections: A list of selected transportation options for each shipment, including:
    • shipmentId: The ID of the shipment.
    • transportationOptionId: The chosen transportation option ID for that shipment.

Response

  • operationId: An ID that you can use to check the status of the transportation confirmation.

Important considerations

If your inbound plan includes multiple shipments:

  • For small parcel deliveries, ensure that all shipments use the same carrier.
  • For pallet deliveries, you can choose different carriers for each shipment.

Sample request

{
  "transportationSelections": [
    {
      "shipmentId": "sh1xxxxxxxxxxxxxxxxxxx",
      "transportationOptionId": "to1xxxxxxxxxxxxxxxxxxx"
    },
    {
      "shipmentId": "sh2xxxxxxxxxxxxxxxxxxx",
      "transportationOptionId": "to2xxxxxxxxxxxxxxxxxxx"
    }
  ]
}

Step 11. Get shipment

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • shipmentId: ID of the shipment.

Response

  • Includes the following details of shipment:
    • sourceAddress: The origin address of the shipment.
    • destinationWarehouseAddress: The address of the destination warehouse.
    • amazonReferenceId: Amazon's reference ID for the shipment.
    • selectedTransportationOptionId: The chosen transportation option ID.
    • placementOptionId: The ID of the chosen placement option.
    • shipmentConfirmationId: The ID confirming the shipment.
    • trackingDetails: Information regarding the shipment tracking.
    • status: The current status of the shipment.

📘

Note

If your inbound plan includes multiple shipment IDs, call getShipment for each shipment ID.

Step 12. Get labels

Operation

Parameters

  • shipmentConfirmationId: The ID that confirms the shipment, retrieved from the getShipment response.
  • PageType: Specifies the type of page for the labels.
  • LabelType: Specifies the type of label to retrieve.

For Pallet Shipments:

  • NumberOfPallets: The total number of pallets included in the shipment.
  • PageSize: The size of the label pages to retrieve.

Response

  • Includes a URL that you can use to download the labels associated with each shipment ID within your inbound plan.

📘

Note

Call getLabels for each shipment ID and provide the necessary parameters based on whether the shipment is a small parcel delivery or involves pallets.

[Only for Pallet Shipments] Step 13. Get bill of lading

Operation

Parameters

  • shipmentConfirmationId: The ID that confirms the shipment, retrieved from getShipment response.

Response

  • Includes a URL that you can use to download the bill of lading associated with the Less Than Truckload (LTL) or Full Truckload (FTL) pallet shipment.

This process completes the creation of your inbound plan, and sends your SKUs as either individual boxes (small parcel delivery) or pallets (LTL/FTL) using the Amazon Partnered Carrier. You can verify this inbound plan through the Seller Central Send to Amazon UI.

Tutorial 2: Inbound shipments with a non-partnered carrier

Learn how to inbound Small Parcel Deliveries (SPD) or pallets (LTL/FTL) with a non-partnered carrier using the Fulfillment Inbound API.

Diagram of non-partnered carrier workflow

There are Postman collections for Amazon Partnered Small Parcel or Pallet Shipment Deliveries:

As a supplement to this guide, the FBA Inbound Sample Solution Code App provides all required resources to deploy a fully functional SP-API application that implements the new Fulfillment Inbound API v2024-03-20.

Step 1. Create an inbound plan

Operation

Parameters

  • destinationMarketplaces: List of marketplaces where the items are sent.
  • sourceAddress: The address from which the items are shipped.
  • items: A list of items to include in the inbound plan. Each item should have the following attributes:
    • prepOwner: The one responsible for prepping the item.
    • labelOwner: The one responsible for the labeling process.
    • msku: The Merchant Stock Keeping Unit (SKU) for the item.
    • quantity: The quantity of items to ship.

Response

  • operationId: An ID that you can use to check the status of the inbound plan creation.
  • inboundPlanId: An ID that uniquely identifies the inbound plan.

📘

Note

POST operations are asynchronous. Check the status of a POST operation by passing its operationId to getInboundOperationStatus.

Step 2. Generate packing options

Operation

Parameters

  • inboundPlanId: Use the inbound plan ID created in Step 1.

Response

  • operationId: An ID that you can use to check the status of packing options generation.

Step 3. List packing options

Operation

Parameters

  • inboundPlanId: The inbound plan ID.

Response

  • Includes available packingOptions. Each packingOption has a packingOptionId.
  • Each packing option contains one or more packingGroups, identified by packingGroupId. Each packing group includes a list of SKUs that should be packed together.

To view SKU items per packingGroupId, call listPackingGroupItems.

📘

Note

Choose only one packing option (packingOptionId).

Response example

{
  "packingOptions": [
    {
      "packingGroups": [
        "pgxxxxxxxxxxxxxxxxxxxx"
      ],
      "fees": [x],
      "discounts": [x],
      "packingOptionId": "poxxxxxxxxxxxxxxxxxxxx",
      "supportedShippingConfigurations": [x],
      "status": "xxxxxx"
    }
  ],
  "pagination": {}
}

Step 4. Confirm packing option

Operation

Parameters

  • inboundPlanId: The ID of the inbound plan.
  • packingOptionId: The chosen packing option ID. You can only confirm one option per inbound plan.

Response

  • operationId: An ID that you can use to check the status of the packing confirmation.

Step 5. Set packing information

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • packingGroupId: ID for each packing group within the chosen packing option.
  • boxes: Includes box contents source, box dimensions (weight and quantity), items with prep info, and item quantities that match the inbound plan.

Response

  • operationId: An ID that you can use to check the status of the API call.

Step 6. Generate placement options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.

Response

  • operationId: An ID that you can use to check the status of placement options generation.

Step 7. List placement options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.

Response

  • Includes available placementOptions, each represented by a placementOptionId.
  • Each placementOptionId includes one or more shipmentIds and details on fees or discounts.

📘

Note

Choose only one placement option (placementOptionId).

Response example

"placementOptions": [
  {
    "fees": [
      {
        "description": "Placement service fee represents service to inbound with minimal shipment splits and destinations of skus",
        "type": "FEE",
        "value": {
          "amount": 1.10,
          "code": "USD"
        },
        "target": "Placement Services"
      }
    ],
    "shipmentIds": [
      "shxxxxxxxxxxxxxxx"
    ],
    "discounts": [],
    "expiration": "yyyy-mm-ddT00:00:00.00Z",
    "placementOptionId": "plxxxxxxxxxxxxxxx",
    "status": "OFFERED"
  }
]

The following code sample shows how to calculate and choose the least expensive placementOption. You can modify the code to have your own selection criteria.

Step 8. Generate transportation options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • placementOptionId: Chosen placement option ID.
  • shipmentTransportationConfigurations: Configuration details, which include:
    • shipmentId: Each shipment ID within the chosen placement option. Include all shipment IDs within the selected placement option.
    • readyToShipWindow: Start date for when shipments are ready for delivery.
    • freightInformation (only if you want to ship pallets): Declared value and freight class.
    • pallets (only if you want to ship pallets): Information about the shipped pallets, including quantity, dimensions, weight, and stackability.

Response

  • operationId: An ID that you can use to check the status of transportation options generation.

Request example for small parcel delivery

{
  "placementOptionId": "plxxxxxxxxxxxxxxxxxxxx",
  "shipmentTransportationConfigurations": [
    {
      "readyToShipWindow": {
        "start": "yyyy-mm-ddT00:00:00Z"
      },
      "shipmentId": "shxxxxxxxxxxxxxxxxxxxx",
      "contactInformation": {
        "name": "xxxxxxxx",
        "phoneNumber": "1234567890",
        "email": "[email protected]"
      }
    }
  ]
}

Request example for pallet delivery

{
  "placementOptionId": "plxxxxxxxxxxxxxxxxxxxx",
  "shipmentTransportationConfigurations": [
    {
      "readyToShipWindow": {
        "start": "yyyy-mm-ddT00:00:00Z"
      },
      "shipmentId": "shxxxxxxxxxxxxxxxx",
      "contactInformation": {
        "name": "TestName",
        "phoneNumber": "1234567890",
        "email": "[email protected]"
      },
      "freightInformation": {
        "declaredValue": {
          "amount": 200,
          "code": "USD"
        },
        "freightClass": "FC_XX"
      },
      "pallets": [
        {
          "quantity": 1,
          "dimensions": {
            "height": 48,
            "length": 48,
            "unitOfMeasurement": "IN",
            "width": 40
          },
          "stackability": "STACKABLE",
          "weight": {
            "unit": "LB",
            "value": 600
          }
        }
      ]
    }
  ]
}

Step 9. List transportation options

Operation

Parameters

  • inboundPlanId: The ID of the inbound plan.
  • placementOptionId: The ID of the chosen placement option.

Response

  • Includes different available transportationOptions, each represented by transportationOptionId per shipmentId. Each transportation option contains details about:
    • carrier: The carrier.
    • shippingMode: The shipment type (for example, Small Parcel Delivery vs. pallets).
    • shippingSolution: The shipping solution. Identifies whether the carrier is Amazon Partnered or your own transportation carrier.
    • preconditions: Conditions that must be met to provide the delivery window. Only applicable to your own carrier options.

📘

Note

If you have multiple shipmentIds from listPlacementOptions, choose a transportationOptionId for each shipmentId.

To ship using a non-partnered carrier, you must select the transportationOption based on your shipment type:

  • For small parcel deliveries, choose the option where shippingMode is GROUND_SMALL_PARCEL.
  • For pallet shipments, choose the option where shippingMode is FREIGHT_LTL.
  • In both cases, ensure that shippingSolution is USE_YOUR_OWN_CARRIER.
  • preconditions lists the requirements for confirming the delivery windows. You must generate, list, and confirm a delivery window for each shipment that you send using your own carrier. Follow the tutorial for detailed steps.

Response example for small parcel delivery

"transportationOptions": [
  {
    "carrier": {
      "name": "United States Postal Service",
      "alphaCode": "USPS"
    },
    "preconditions": [
      "CONFIRMED_DELIVERY_WINDOW"
    ],
    "shipmentId": "shxxxxxxxxxxxxxx",
    "shippingMode": "GROUND_SMALL_PARCEL",
    "transportationOptionId": "toxxxxxxxxxxxxxx",
    "shippingSolution": "USE_YOUR_OWN_CARRIER"
  },
  {
    "carrier": {
      "name": "UPS",
      "alphaCode": "UPSN"
    },
    "quote": {
      "cost": {
        "amount": 19.6,
        "code": "USD"
      }
    },
    "preconditions": [],
    "shipmentId": "shxxxxxxxxxxxxxx",
    "shippingMode": "GROUND_SMALL_PARCEL",
    "transportationOptionId": "toxxxxxxxxxxxxxx",
    "shippingSolution": "AMAZON_PARTNERED_CARRIER"
  }
]

Response example for pallet delivery

{
  "carrier": {
    "name": "XXXX",
    "alphaCode": "ABCD"
  },
  "preconditions": [
    "CONFIRMED_DELIVERY_WINDOW"
  ],
  "shipmentId": "shxxxxxxxxxxxxxx",
  "shippingMode": "FREIGHT_LTL",
  "transportationOptionId": "toxxxxxxxxxxxxxx",
  "shippingSolution": "USE_YOUR_OWN_CARRIER"
}

Step 10. Generate delivery window options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • shipmentId: ID of the specific shipment for which to generate delivery windows.

Response

  • operationId: An ID that you can use to check the status of the delivery window options generation.

📘

Note

You must generate delivery windows for all shipmentIds within the inbound plan.

Step 11. List Delivery Window Options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • shipmentId: ID of the specific shipment for which to retrieve delivery window options.

Response

  • Includes a list of available deliveryWindowOptions, each represented by a deliveryWindowOptionId.
  • Each option includes startDate and endDate that indicate the time frame during which the shipment must arrive.

📘

Note

You must schedule your shipment delivery within 45 days for domestic shipments and 75 days for international shipments. These time frames are reflected in the available delivery window options endDate. For non-partnered carriers, sellers must specify a delivery window of 7 days for domestic shipments or 14 days for international shipments.

Response example

{
  "deliveryWindowOptions": [
    {
      "availabilityType": "AVAILABLE",
      "endDate": "yyyy-mm-ddT00:00Z",
      "validUntil": "yyyy-mm-ddT00:00Z",
      "deliveryWindowOptionId": "dwxxxxxxxxxxxxxxxxxxxx",
      "startDate": "yyyy-mm-ddT00:00Z"
    }
  ]
}

The following code sample shows how to choose the delivery window option with the latest endDate. You can modify the code to have your own selection criteria.

Step 12. Get shipment

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • shipmentId: ID of the specific shipment for which to retrieve details.

Response

  • Includes the details related to the contents of the specified shipment, including:
    • Source address: The address from which the shipment originates.
    • Destination warehouse address: The address of the chosen destination warehouse.
    • Status: The current status of the shipment.

📘

Note

Before you confirm the placement and transportation options, call getShipment for each shipmentId to ensure all details are satisfactory. If you are not satisfied with your chosen options, you have the option to re-generate and select another placement option or transportation option.

Step 13. Confirm placement option

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • placementOptionId: The chosen placement option ID to confirm.

Response

  • operationId: An ID that you can use to check the status of the placement confirmation.

📘

Note

You can only confirm one placement option per inbound plan.

Step 14. Confirm delivery window options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • shipmentId: ID of the specific shipment for which the delivery window option is being confirmed.
  • deliveryWindowOptionId: ID of the chosen delivery window option.

Response

  • operationId: An ID that you can use to check the status of the delivery window confirmation.

📘

Note

You must confirm delivery windows for every shipmentId in the inbound plan. You can only confirm one delivery window option per shipment for the inbound plan.

Step 15. Confirm transportation options

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • transportationSelections: A list of selected transportation options for each shipment, including:
    • shipmentId: The ID of the shipment.
    • transportationOptionId: The chosen transportation option ID for that shipment.

Response

  • operationId: An ID that you can use to check the status of the transportation confirmation.

Request example

{
  "transportationSelections": [
    {
      "shipmentId": "shxxxxxxxxxxxxxxxxxxxx",
      "transportationOptionId": "toxxxxxxxxxxxxxxxxxxxx"
    }
  ]
}

Step 16. Get shipment

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • shipmentId: The ID of the shipment.

Response

  • Includes the details of shipment, including:
    • sourceAddress: The origin address of the shipment.
    • destinationWarehouseAddress: The address of the destination warehouse.
    • amazonReferenceId: Amazon's reference ID for the shipment.
    • selectedTransportationOptionId: The chosen transportation option ID.
    • placementOptionId: The ID of the chosen placement option.
    • shipmentConfirmationId: The ID that confirms the shipment.
    • trackingDetails: Information regarding the shipment tracking.
    • status: The current status of the shipment.

📘

Note

If your inbound plan includes multiple shipment IDs, call getShipment for each shipment ID.

Step 17. Get labels

Operation

Parameters

  • shipmentConfirmationId: The ID confirming the shipment, retrieved from the getShipment response.
  • PageType: Specifies the type of page for the labels.
  • LabelType: Specifies the type of label to retrieve.

For Pallet Shipments:

  • NumberOfPallets: The total number of pallets included in the shipment.
  • PageSize: Specifies the size of the label pages to retrieve.

Response

  • Includes a URL that you can use to download the labels associated with each shipment ID within your inbound plan.

📘

Note

Call getLabels for each shipment ID and provide the necessary parameters based on whether the shipment is a small parcel delivery or involves pallets.

Step 18. List inbound plan boxes

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.

Response

  • Includes a list of box package-level information for the specified inbound plan, including box-level information including box IDs, package IDs, box weights, quantities, dimensions, items etc.

Step 19. [Only for pallet shipments] List inbound plan pallets

Call listInboundPlanPallets to retrieve the list of pallet packages per inbound plan. Input should include the inboundPlanId and the response includes all the pallet level information including packageId, dimensions, stackability, etc.

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.

Response

  • Includes a list of pallet package information for the specified inbound plan, including the package ID, dimensions, stackability, etc.

Step 20. Update shipment tracking details

Operation

Parameters

  • inboundPlanId: ID of the inbound plan.
  • shipmentId: ID of the shipment.
  • trackingDetails: Details for updating tracking information based on shipment type.
    • For Small Parcel Delivery (SPD):
      • spdTrackingItems: A list that includes:
        • boxId: The unique identifier for each box obtained from the listInboundPlanBoxes API.
        • trackingId: The tracking ID provided by your carrier for each box.
        • You must update the tracking IDs for all of the boxes within your inbound plan.
    • For pallet (LTL/FTL) delivery:
      • ltlTrackingDetail: Details that include the freightBillNumber that your carrier provides for the pallet shipment.

Response

  • operationId: An ID that you can use to check the status of the tracking details update.

Request example for small parcel delivery

{
  "trackingDetails": {
    "spdTrackingDetail": {
      "spdTrackingItems": [
        {
          "boxId": "FBAxxxxxxxxxxxxxxx",
          "trackingId": "{{trackingId}}"
        }
      ]
    }
  }
}

Request example for pallet delivery

{
  "trackingDetails": {
    "ltlTrackingDetail": {
      "freightBillNumber": [
        "{{freightBillNumber}}"
      ]
    }
  }
}

This tutorial creates an inbound plan and sends your SKUs as individual boxes (small parcel delivery) or pallets (LTL/FTL) using your own transportation carrier. You can verify this inbound plan on Seller Central with Send to Amazon.