Tutorial: Create a shipment with a non-partnered carrier

Inbound small parcel deliveries or pallets with non-partnered carriers

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

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.

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.

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.


OSZAR »