Create an inbound shipment
Learn how to create an inbound shipment with or without carton-level information.
There are two methods for creating shipments to send your inventory to Amazon's fulfillment network:
- With carton information: Use this option when you have all your carton details ready.
- Without carton information: Use this option when you need to add carton details at a later time.
Both methods allow you to send your products to Amazon's fulfillment network, giving you flexibility based on when your packaging information is available.
Prerequisites
To complete this tutorial, you need:
- Authorization from the selling partner for whom you are making calls. For more information, refer to Authorizing Selling Partner API applications.
- 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.
- Product listings created in your seller account.
Workflow
View the workflow diagram when carton info is known
View the workflow diagram when carton info is unknown
Create an inbound plan
Note
This process applies to Less than truckload (LTL) and Small Parcel Delivery (SPD) shipments when carton-level information is available.
Call the createInboundPlan operation to create an inbound plan, which represents a collection of inbound shipments containing items you intend to send to Amazon's fulfillment network. When you call the createInboundPlan operation, you must specify:
- The address from which the inbound shipments are sent.
- The marketplace from where the product is shipped.
- A summary of the items you intend to send.
- Contact information (needed for partnered carriers for LTL shipments).
The item summary must include MSKU, quantity, and an indication of who will prepare and label the item. AMAZON_LABEL is available only when you are enrolled in the FBA Label Service. For more information about the FBA Label Service, refer to the Seller Central Help.
Ensure each item you're shipping conforms to Amazon's product packaging requirements. For more information, refer to Packaging and Prep Requirements. For more information about Amazon's product packaging requirements for your marketplace, refer to Seller Central URLs. You can set the prepCategory for SKUs on Send to Amazon one-by-one or up to 25 at a time. This is a one-time activity per SKU that carries over to all future inbound plans.
Note
Multiple expiration dates per SKU on a single inbound plan are not supported. To send a SKU with multiple expiration dates to the fulfillment network, you must create multiple plans.
Optionally, you can include each item's expiration date and manufacturing lot code. A successful response includes an inboundPlanId that uniquely identifies the inbound plan, synonymous with the concept of workflow ID, which is generated on Send to Amazon.
Note
createInboundPlangenerates initial shipment IDs for the shipments within each inbound plan. These IDs are different from theshipmentConfirmationIDsthat are generated with theconfirmPlacementOptionoperation. TheshipmentConfirmationIDis the identifier that appears on labels (for example,FBA1234ABCD). Both of these types of shipment IDs can be retrieved with thegetShipmentoperation.
Check the status of a call
Use getInboundOperationStatus to get the status of an operation. To call the getInboundOperationStatus, you must pass the operationId, which is a Universal Unique Identifier (UUID) for the operation.
The response returns the request status and any non-blocking errors. Non-blocking errors are warnings that can be ignored (for example, when the address is suspected to be wrong, but progression is allowed anyway).
Determine which SKUs can be packed together
Important
As of February 20, 2025, partial shipment splits are not available on the Send to Amazon workflow for standard-sized products. Partial shipment splits remain available for large products. For more information, refer to 2025 FBA inbound placement service fee.
This step determines which items can be packed together. Some items cannot be packed together because they have different handling requirements or must go to different fulfillment centers. For more information on the placement options, refer to the Product packaging requirements.
To determine which SKUs can be physically packed together, use the following operations:
A packingGroup represents SKUs that can be packed together, while SKUs with different requirements go into separate packing groups. For example, SKUs that are classified as dangerous goods cannot be packed with other SKUs, because dangerous goods SKUs are shipped to special fulfillment centers that can receive them safely. Other factors that determine which SKUs can and cannot be packed together include SKU weights and dimensions, prep and labelling requirements, and barcode requirements.
The PackingOptions object represents the set of options for how items are mapped to packing groups. Each PackingOption includes PackingGroups that contain lists of SKUs. Each of these options can have discounts or fees associated with them. Also, each option can be limited to a subset of all possible shipping modes. These packing operations allows you to review and select an option.
Generate packing options
Call the generatePackingOptions operation.
List packing options
Call the listPackingOptions operation to review a list of the packing options. Packing options contain sets of pack groups that you can choose, along with additional information that can help you choose between these options. Additional information includes fees/discounts associated with each option, shipping modes supported by each option, packing modes supported by each option, package weights supported by each option, and the expiration date of each option.
List items in each packing option
Call the listPackingGroupItems operation.
Select a packing option
Call the confirmPackingOption operation.
Provide box content information
Important
If you do not call
setPackingInformation, there may be defects in the receiving process and fees for manual processing. For more information, refer to FBA manual processing fee.
Important
Starting January 1, 2026, the prep and item label services will no longer be available for FBA in the US marketplace. You must prep and label all products before they send them to the Amazon fulfillment network in the US.
Call the setPackingInformation operation to provide information related to the items that are packed into each box. Providing this information ensures that the shipment splits generated in the subsequent steps are accurate. If no box information is provided at this step, the shipment splits generated in the next steps are based only on the unit information passed to Amazon as part of createInboundPlan. When you call the setPackingInformation operation, you must pass the following information for each box you intend to send:
- The package grouping ID of every shipment.
- Box content information source.
- Box contents (items, item quantities, prep/label owners for each item).
- Box information (dimensions, weight, and quantity of boxes).
Call the getInboundOperationStatus to determine the operation status. A successful response includes the operationId.
Note
If you provide box packing information using
setPackingInformation, then generate placement options, and then edit the box packing information usingsetPackingInformation, then you must callgeneratePlacementOptionsagain prior to callingconfirmPlacementOption. If you input your box packing information usingsetPackingInformationand then decide that you want to discard this information entirely, you need to start a new inbound plan withcreateInboundPlan. Discarding packing information is not currently supported.
Box content information source indicates how you intend to provide box content information, which could be through one of three options:
- Populating the contents field (
BOX_CONTENT_PROVIDED). - Paying Amazon a fee to enter this information during the receiving process (
MANUAL_PROCESS). - Affixing 2D barcodes to the boxes (
BARCODE_2D).
You must provide box dimensions, box weight, and the quantity of each box. When boxAttribute is set to BARCODE_2D or MANUAL_PROCESS:
- You don't need to provide SKUs and quantities.
- You must leave
itemsempty (provide anullvalue).
A successful response includes the operationId that can be used to determine the status of the operation using getInboundOperationStatus.
Note
If you know the carton-level shipment information, pass in the
PackingGroupIdand omit theShipmentId. Otherwise, includeShipmentIdand omitPackingGroupId.
Generate and view options for destination fulfillment centers
Important
As of February 20, 2025, partial shipment splits are not available on the Send to Amazon workflow for standard-sized products. Partial shipment splits remain available for large products. For more information, refer to 2025 FBA inbound placement service fee.
Call the generatePlacementOptions, listPlacementOptions, and getShipment operations.
Important
You cannot provide packing information using Send to Amazon after confirming placement options. You cannot access API-created shipments on Send to Amazon during this step.
The placementOptions object represents the set of available placement options for an inbound plan, where each placement option describes the destination fulfilment centers and shipping options for each item in your inbound plan. These options help reduce receiving time and make items available for sale faster. Refer to Seller Central Help for more details.
Note
This operation generates initial shipment IDs for the shipments within each inbound plan. These IDs are different from the
shipmentConfirmationIDsthatconfirmPlacementOptiongenerates. TheshipmentConfirmationIDis the ID that is present on labels (for example,FBA1234ABCD). You can retrieve both of these shipment ID types with thegetShipmentoperation.
Some of your placements options can include multiple destinations. Each option can include fees or discounts determined by an algorithm during shipment creation, not calculated using set rates. The algorithm for the rebate value and the ship-to location uses multiple factors to optimize your shipments, including expected volume, the availability of carrier appointments, and fulfillment speed. The rebate that your shipment is eligible for is provided during shipment creation.
Note
When you call the
generatePlacementOptionsoperation without inputting box content information, Amazon provides placement options that are optimized for unit-level data (because Amazon does not yet have box data). These options can differ from the placement options that are generated after you provide box content information usingsetPackingInformation.
Call the listPlacementOptions operation to view the options for shipment splits. This operation returns available placement options, which include:
- A placement option ID
- The option status (
offeredoraccepted) - Any fees/discounts associated with this option
- The expiration date of the option
- The shipment IDs associated with each option
Call the generatePlacementOptions operation to regenerate placement options when they expire. The placement option ID is required to generate transportation options with generateTransportationOptions, while shipment IDs are used to understand the contents of each shipment using the getShipment operation.
Use the getShipment operation to review shipment contents within an inbound plan. To call the getShipment operation, you need to pass the inbound plan ID and shipment ID. A successful response includes placement option ID, shipment confirmed ID (that is, the ID that shows up on labels, created after confirmPlacementOption), shipment ID (that is, identifier for a shipment prior to the confirmPlacementOption operation), Amazon reference ID (identifier for scheduling fulfillment center appointments for truck deliveries), selected transportation option ID, name, source, destination FC, ship date, estimated delivery date, status, tracking details, pallet information, contact information, destination region, and FC appointment details.
List shipment items
Call the listShipmentItems operation to view a paginated list of items in a shipment. Use this information to understand which items are in each shipment split when you haven't provided carton-level information upfront. To call this API, you must pass the shipment ID. A successful response contains a paginated list of the products the user previously entered using the createInboundPlan operation. The response contains the prep instructions for their ASINs, such as prep type and owner. This allows users to conveniently check what items and prep requirements are in a given shipment. The response lists the product’s MSKU, ASIN, FNSKU, Manufacturer Code, quantity, and expiration date if needed. This can be used to generate a pick list which you can use to pull certain items from their inventory and group them into a shipment. You can then use the listShipmentBoxes operation to create a pack list that specifies which items go in which boxes.
Input transportation data and generate transportation options
Generate transportation options with the generateTransportationOptions operation. A transportation option represents the list of shipping mode and carrier options that are available for each shipment within each placement option. When you call the generateTransportationOptions operation, you must pass the following information:
- Placement option ID
- Shipment ID
- Ready-to-ship date
- Ship-from address
Generate delivery window options
Call generateDeliveryWindowOptions with the shipmentID of the shipment for which you intend to generate delivery windows.
Important
You must confirm transportation options for all shipment types. For non-partnered shipments, you must also specify a delivery window.
Delivery windows are periods during which you can deliver your shipment to the destination fulfillment center. Non-partnered carrier require you to specify a delivery window of seven days for domestic shipments or 14 days for international shipments. The window is used to provide a shipment's expected arrival date and time at an Amazon fulfillment center. An available delivery window option is necessary for shipments that don't have an appointment slot with a fulfillment center. For example, shipments through non-partnered carriers need a confirmed delivery window.
Review shipment splits and transportation options
Review shipment and transportation options using the following operations:
The listPlacementOptions operation returns available placement options, which includes a placement option ID, the status of the option (that is, offered or accepted), any fees/discounts associated with this option, the expiration date of the option, and the shipment IDs associated with each option.
To call listTransportationOptions, you must pass the placement option ID and shipment ID for which you want to view transportation options. If transportation options are not available for a placement option, call listTransportationOptions again for an alternative placement option. A successful response includes all available transportation quotes for all available ship modes and carrier options. Shipping modes include:
- Ground small parcel
- Less-than-truckload freight
- Full truckload freight (palletized)
- Full truckload freight (non-palletized)
- Less than container load ocean
- Full container load ocean
- Air small parcel
- Air small parcel express
Carrier options include Amazon-partnered and non-partnered carriers. Each quote includes:
- Cost
- A void window (the period where you can cancel a shipment and receive a refund for your transportation quote)
- Expiration
In regions where fulfillment center appointments are mandatory (for example, India), Amazon provides available appointment slots.
Where the Partnered Carrier Program (PCP) is available, you can take advantage of discounted rates by using an Amazon-partnered carrier for your inbound shipments. To use an Amazon-partnered carrier for an inbound shipment, select the transportation option where shippingSolution is AMAZON_PARTNERED_CARRIER.
Note
Before using an Amazon-partnered carrier for an inbound shipment, refer to the Amazon's PCP to ensure that you follow the program instructions and guidelines for Europe and US.
In the EU region, you must first review and accept the terms and conditions of the carrier and the terms and conditions of Amazon's PCP. You can do this on Seller Central. If you attempt to use Amazon Selling Partner APIs to create an inbound shipment by using an Amazon-partnered carrier before accepting these terms and conditions, the service returns an error.
If you don't want to participate in the PCP, you can view Choose your own carrier transportation options and available shipping modes.
Amazon filters out partnered carrier transportation options in certain situations. For example, if there is a partnered carrier transportation option at a lower price for a placement option that has identical shipment splits, then Amazon filters out the more expensive transportation option. If you plan to use a partnered carrier, call listTransportationOptions for each placement option to see the available partnered carrier options.
Note
You can include a mix of Small Parcel Delivery (SPD) and Less than truckload (LTL) shipments in one inbound plan. You can also include a mix of PCP and non-PCP shipments in one inbound plan if:
- The different carrier selections are assigned to different shipping modes (for example SPD and LTL).
- All shipments in the inbound plan are eligible for PCP.
For example, you can create an inbound plan with one PCP SPD shipment and one non-PCP LTL shipment, assuming that all shipments within the inbound plan are eligible for PCP.
For more information about PCP eligibility, refer to the PCP help page.
Use the listDeliveryWindowOptions operation to review available delivery window options for each shipment. To make this call, you must the shipmentID. A successful response provides the startDate and endDate for each available delivery window and the level of congestion (availabilityType) for each option.
Important
You must confirm transportation options for all shipment types. For non-Amazon partnered shipments, you must also specify a delivery window.
Each option has an expiration date (validUntil). You must confirm the delivery before this date. If you don't confirm the window by the validUntil date, you must generate a new window using listDeliveryWindowOptions.
Use the getShipment operation to review shipment details within an inbound plan. To call getShipment, you need to pass the inbound plan ID and shipment ID. A successful response includes the following:
- Placement option ID
- Shipment confirmed ID (the ID that shows up on labels)
- Shipment ID (the identifier for a shipment prior to the
confirmPlacementOptionoperation) - Amazon reference ID (identifier for scheduling fulfillment center appointments for truck deliveries)
- Selected transportation option ID
- Name
- Source
- Destination FC
- Ship date
- Estimated delivery date
- Status
- Tracking details
- Pallet information
- Contact information
- Destination region
- FC appointment details
Note
If you select a partnered carrier, that is,
destinationTypeisAMAZON_OPTIMIZED, then the destination fulfillment center address may differ from the actual address, or this field may be empty.
Select shipping option
Use the confirmPlacementOption operation. Use this operation to select the placement option and create confirmed shipment IDs within the inbound plan. The shipmentConfirmationID is the shipment identifier that appears on labels (for example, FBA1234ABCD). This ID differs from the initial shipment ID generated by createInboundPlan. This option cannot be reversed after it is selected. To call confirmPlacementOption, you must pass the inbound plan ID and the selected placement option ID.
Note
Transportation quotes are only returned for PCP-associated options. Expiry date and void window are only returned for transportation options that are confirmed with
confirmTransportationOptions.
Note
createInboundPlangenerates initial shipment IDs for the shipments in each inbound plan. These IDs are different from theshipmentConfirmationIDsthatconfirmPlacementOptiongenerates. TheshipmentConfirmationIDis the identifier that is present on labels (for example,FBA1234ABCD). You can retrieve both types of shipment IDs with thegetShipmentoperation.
Select transportation options
Call the confirmDeliveryWindowOptions operation. To call this operation, pass the shipmentID and deliveryWindowOptionId (provided by listDeliveryWindowOptions).
You must confirm a placement option for the shipment before you call this operation. After you confirm the delivery window, new delivery window options cannot be generated. However, you can update the selected delivery window option before shipment closure. For all transportation options that have the program DELIVERY_WINDOW_REQUIRED, you must confirm a delivery window before you confirm the transportation option. If you need to update your delivery window after you confirm the transportation option, you can call confirmDeliveryWindow.
Important
For non-partnered carrier shipments, you must confirm the anticipated delivery window using the
confirmTransportationOptionsoperation before you book your fulfillment center appointment.You must ask your non-partnered carrier to book an fulfillment center appointment that is within the anticipated delivery window. If the fulfillment center appointment date does not fall within the delivery window, you can call the
confirmDeliveryWindowto select another delivery window that does contain the fulfillment center appointment date.
Use the confirmTransportationOptions operation to select transportation options for each shipment. For Amazon-partnered transportation options, this operation confirms that you 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 the inbound shipment. Prior to this call, you must confirm a placement option for your inbound plan. To call confirmTransportationOptions, you must pass the shipment ID, select the transportation option ID, contact information (needed for partnered carriers for LTL shipments), and estimated delivery date. The estimated delivery date (delivery window) is a requirement for non-partnered carrier options and should not be populated for partnered carrier options. After a transportation option is confirmed, new transportation options cannot be generated or confirmed for an inbound plan.
Cancel a shipment
If you confirm the transportation request, then decide that you don't want the Amazon-partnered carrier to ship the inbound shipment, you can call cancelInboundPlan to cancel the transportation request.
You can void Small parcel shipment requests within 24 hours of confirmation. For Less than truckload / Full Truckload (LTL/FTL) shipments, you have one hour after confirming a transportation request to void the request. After these time periods expire, your account is charged for the shipping cost.
Print labels
Call the getLabels operation to generate unique shipping labels. 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.
Warning
The value of
shipmentIdin thegetLabelsrequest must be theshipmentId(from v0) or theshipmentConfirmationId(from v2024-03-20). Do not use theshipmentIdfrom v2024-03-20.
To print labels for a specific box, specify the boxID from the listShipmentBoxes response as the
PackageLabelsToPrint value.
Retrieving carton labels with getLabels does not change the shipment status to ready_to_ship. For a shipment status to become ready_to_ship, you must generate labels on Send to Amazon.
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
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:
Append
Uand000001in the shipment ID to get the barcode value for the first package in the shipment.To get the barcode values for each successive package in the shipment, increment the trailing numerical value of the previous package by one. For example, If you have three packages in a shipment with a Shipment ID value of
FBA1MMD8D0, your three barcode values would beFBA1MMD8D0U000001,FBA1MMD8D0U000002, andFBA1MMD8D0U000003. 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).
Send your shipments to Amazon's fulfillment network
Ship your packages using either an Amazon-partnered or non-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.
As you prepare your shipment, you can retrieve all of the box-level information that you have entered for an inbound plan with the listInboundPlanBoxes operation.
Providing tracking information
After sending a shipment to Amazon's fulfillment network using a non-partnered carrier, you must share the tracking ID using the updateShipmentTrackingDetails operation. To call this operation, you must pass the shipment ID and tracking details for your less-than-truckload or small parcel shipment. For less-than-truckload shipments, you must provide a Carrier Shipment Reference (PRO) number (also known as Freight Bill number) and optionally provide a Bill of Lading (BOL) number. For small parcel shipments, you must provide an array of box IDs and associated tracking IDs.
Updated about 5 hours ago
