Fulfillment Outbound API Migration Guide
Learn how to migrate from Fulfillment Outbound v2020-07-01 to Fulfillment Outbound v2026-07-04.
The Fulfillment Outbound v2026-07-04 introduces new capabilities, including new authorization paradigms with partner account credentials and channel-based feature configuration. If you have built integrations with the previous version of the API, you can migrate to the new version by taking note of the similarities and differences between the two versions.
The new Fulfillment Outbound API v2026-07-04 gives you item-level control over packaging, carrier preferences, and fulfillment policies built on a flexible schema to support new shipping speeds. You benefit from granular sandbox controls to simulate split-shipment scenarios and a dedicated tracking API that delivers real-time milestone updates. If you have already built integrations using the previous version of the Fulfillment Outbound API, you can continue to use the same features by taking note of the similarities and differences between the two versions.
What's New
- Granular dynamic sandbox controls: The new
updatePackageoperation allows you to simulate granular package delivery states in the Sandbox (Delivered, Delayed, In Transit etc) for orders with multiple shipments. - Dedicated API and notification for shipment tracking: Introduced a new
getShipmentTrackingoperation that supports grantless authorization, batch tracking requests, and multiple tracking number formats, as well as a newSHIPMENT_TRACKING_MILESTONE_CHANGEDnotification to receive real-time in-transit updates. - Multi-SKU support delivery offers: Use the
getOffersoperation with multiple products to fetch delivery options that include an estimated delivery date in a single call. - Asynchronous processing support: the
createOrderoperation may process orders asynchronously (202 Accepted) for maximum reliability. This includes the newINVALIDorder status. - API schema updates: URIs, parameters, and structure have been updated to make it easier for you to work with the API. These changes make it easier to understand how features work and improve backward compatibility.
Key Changes
- Base path changed:
/fba/outbound/2020-07-01to/fulfillment/outbound/2026-07-04 - A new Amazon Shipment Tracking API is available with enhanced capabilities that include grantless authorization, batch tracking requests, and real-time milestone notifications. The
getPackageTrackingDetailsoperation is superseded bygetShipmentTracking. Note that the tracking event codes have changed. - Deprecated operations that are still supported in previous API version:
- The
getFeaturesandgetFeatureSKUoperations are deprecated. Refer to the documentation for supported feature constraints and services. - The
getFeatureInventoryoperation is deprecated. Use thegetOrderPreviewoperation to check if products are fulfillable before placing a fulfillment order. - The
createFulfillmentReturnandlistReturnReasonCodesoperations are deprecated.
- The
This guide will detail the changes for each operation.
Updated operations
| v2020-07-01 | v2026-07-04 |
|---|---|
deliveryOffersPOST /fba/outbound/2020-07-01/deliveryOffers | getOffersPOST /fulfillment/outbound/2026-07-04/offers |
getFulfillmentPreviewPOST /fba/outbound/2020-07-01/fulfillmentOrders/preview | getOrderPreviewPOST /fulfillment/outbound/2026-07-04/previews |
createFulfillmentOrderPOST /fba/outbound/2020-07-01/fulfillmentOrders | createOrderPOST /fulfillment/outbound/2026-07-04/orders |
listAllFulfillmentOrdersPOST /fba/outbound/2020-07-01/fulfillmentOrders | listOrdersGET /fulfillment/outbound/2026-07-04/orders |
getFulfillmentOrderGET /fba/outbound/2020-07-01/fulfillmentOrders/{sellerFulfillmentOrderId} | getOrderGET /fulfillment/outbound/2026-07-04/orders/{orderId} |
updateFulfillmentOrderPUT /fba/outbound/2020-07-01/fulfillmentOrders/{sellerFulfillmentOrderId} | updateOrderPUT /fulfillment/outbound/2026-07-04/orders/{orderId} |
submitFulfillmentOrderStatusUpdatePUT /fba/outbound/2020-07-01/fulfillmentOrders/{sellerFulfillmentOrderId}/status | updateOrderStatusPUT /fulfillment/outbound/2026-07-04/orders/{orderId}/status |
cancelFulfillmentOrderPUT /fba/outbound/2020-07-01/fulfillmentOrders/{sellerFulfillmentOrderId}/cancel | cancelOrderPUT /fulfillment/outbound/2026-07-04/orders/{orderId}/cancel |
deliveryOffers to getOffers
deliveryOffers to getOffersParameters and structure:
| Location | v2020-07-01 | v2026-07-04 |
|---|---|---|
| Path | /deliveryOffers | /offers |
| Body | -- | fulfillmentConfiguration.serviceLevel.serviceTiers |
| Body | Single product + amount | items array (multiple SKUs; no amount needed) |
| Response | payload wrapper | no wrapper: object returned directly |
| Response | Flat offers array | offerResults array, one entry per item |
| Response | expiresAt | expiryTime |
| Response | dateRange.earliest | deliveryInterval.startTime |
| Response | dateRange.latest | deliveryInterval.endTime |
| Response | policy.message | deprecated |
v2020-07-01 sample request:
POST /fba/outbound/2020-07-01/deliveryOffers
Content-Type: application/json
{
"product": {
"productIdentifier": { "merchantSku": "SKU1" },
"amount": { "unitOfMeasure": "Eaches", "value": "1.0" }
},
"terms": {
"origin": { "countryCode": "US" },
"destination": { "ipAddress": "192.168.0.1" }
}
}v2026-07-04 sample request:
POST /fulfillment/outbound/2026-07-04/offers
Content-Type: application/json
{
"fulfillmentConfiguration": {
"serviceLevel": { "serviceTiers": ["STANDARD"] }
},
"origin": { "countryCode": "US" },
"destination": { "ipAddress": "192.168.0.1" },
"items": [
{ "productIdentifier": { "amazonSku": "SKU1" } },
{ "productIdentifier": { "amazonSku": "SKU2" } }
]
}v2020-07-01 sample response:
{
"payload": {
"deliveryOffers": [{
"expiresAt": "2025-08-08T00:29:07.351Z",
"dateRange": {
"earliest": "2025-08-08T00:29:07.351Z",
"latest": "2025-08-08T00:29:07.351Z"
},
"policy": {
"message": {
"text": "Standard Delivery Sunday, Sep 14",
"locale": "en-US"
}
}
}]
}
}v2026-07-04 sample response:
{
"offerResults": [
{
"item": { "productIdentifier": { "amazonSku": "SKU1" } },
"offers": [{
"fulfillmentConfiguration": {
"serviceLevel": {
"serviceTier": "STANDARD",
"deliveryInterval": { "startTime": "2026-07-11T12:00:00Z", "endTime": "2026-07-12T23:59:00Z" }
}
},
"expiryTime": "2026-07-09T20:00:00Z"
}]
},
{
"item": { "productIdentifier": { "amazonSku": "SKU2" } },
"offers": [],
"constraints": [{ "code": "ItemQuantityNotAvailable", "type": "ValidationError", "message": "SKU2 is out of stock." }]
}
]
}getFulfillmentPreview to getOrderPreview
getFulfillmentPreview to getOrderPreviewParameters and structure:
| Location | v2020-07-01 | v2026-07-04 |
|---|---|---|
| Path | /fulfillmentOrders/preview | /previews |
| Body | shippingSpeedCategories | fulfillmentConfiguration.serviceLevel.serviceTiers |
| Body | address | destination.deliveryAddress |
| Body | featureConstraints | fulfillmentConfiguration.services |
| Body | marketplaceId | origin.countryCode |
| Body | items | lineItems |
| Body | includeDeliveryWindows | deprecated |
| Body | -- | excludeEstimatedFees (true/false exclude fee estimates) |
| Response | payload wrapper | no wrapper; object returned directly |
| Response | fulfillmentPreviews | plannedShipments |
| Response | fulfillmentPreviewShipments | offers |
| Response | earliestArrivalDate / latestArrivalDate | offers[].fulfillmentConfiguration.serviceLevel.deliveryInterval |
| Response | earliestShipDate / latestShipDate | offers[].fulfillmentConfiguration.serviceLevel.shipInterval |
| Response | estimatedFees[] with name | estimatedPrice.rollupPrices[] with type |
v2020-07-01 sample request:
POST /fba/outbound/2020-07-01/fulfillmentOrders/preview
Content-Type: application/json
{
"marketplaceId": "ATVPDKIKX0DER",
"address": {
"name": "Shopper Name",
"addressLine1": "1000 Winthrop Ave N",
"addressLine2": "Floor 19",
"city": "Seattle",
"districtOrCounty": "None",
"countryCode": "US",
"phone": "123-456-7890",
"postalCode": "98103",
"stateOrRegion": "WA"
},
"items": [{
"sellerSku": "SKU1",
"quantity": 1,
"perUnitDeclaredValue": {
"currencyCode": "USD",
"value": "10.98"
},
"sellerFulfillmentOrderItemId": "item1"
}],
"shippingSpeedCategories": ["Expedited"],
"featureConstraints": [{ "featureName": "BLANK_BOX", "featureFulfillmentPolicy": "Required" },
{"featureName": "CHANNEL.TIKTOK", "featureFulfillmentPolicy": "Required"}]
}v2026-07-04 sample request:
POST /fulfillment/outbound/2026-07-04/previews
Content-Type: application/json
{
"channel": "SHOPIFY",
"fulfillmentConfiguration": {
"serviceLevel": {
"serviceTiers": ["EXPEDITED"]
},
"services": {
"packaging": {
"packagingOption": "UNBRANDED"
}
}
},
"destination": {
"deliveryAddress": {
"name": "Shopper Name",
"addressLine1": "1000 Winthrop Ave N",
"addressLine2": "Floor 19",
"city": "Seattle",
"districtOrCounty": "None",
"countryCode": "US",
"phone": "123-456-7890",
"postalCode": "98103",
"stateOrRegion": "WA"
}
},
"origin": {
"countryCode": "US"
},
"excludeEstimatedFees": true,
"lineItems": [{
"product": {
"productIdentifier": {
"amazonSku": "SKU1"
},
"perUnitDeclaredValue": {
"currencyCode": "USD",
"amount": "10.00"
}
},
"amount": {
"unit": "EACHES",
"value": "1"
}
}]
}v2020-07-01 sample response:
{
"payload": {
"fulfillmentPreviews": [{
"estimatedFees": [
{ "amount": { "currencyCode": "USD", "value": "0.0" }, "name": "FBAPerOrderFulfillmentFee" },
{ "amount": { "currencyCode": "USD", "value": "0.0" }, "name": "FBATransportationFee" },
{ "amount": { "currencyCode": "USD", "value": "12.5" }, "name": "FBAPerUnitFulfillmentFee" }
],
"estimatedShippingWeight": { "unit": "POUNDS", "value": "0.789" },
"featureConstraints": [{ "featureFulfillmentPolicy": "Required", "featureName": "BLANK_BOX" }],
"fulfillmentPreviewShipments": [{
"earliestArrivalDate": "2025-09-15T07:00:00Z",
"earliestShipDate": "2025-09-13T07:00:00Z",
"fulfillmentPreviewItems": [{
"estimatedShippingWeight": { "unit": "POUNDS", "value": "0.789" },
"quantity": 1,
"sellerFulfillmentOrderItemId": "Item1",
"sellerSku": "SKU1",
"shippingWeightCalculationMethod": "Package"
}],
"latestArrivalDate": "2025-09-16T06:59:59Z",
"latestShipDate": "2025-09-14T06:59:59Z"
}],
"isFulfillable": true,
"marketplaceId": "ATVPDKIKX0DER",
"shippingSpeedCategory": "Expedited",
"unfulfillablePreviewItems": []
}]
}
}v2026-07-04 sample response:
{
"plannedShipments": [{
"estimatedShippingWeight": {
"unit": "POUNDS",
"value": "0.789"
},
"items": [{ "productIdentifier": { "amazonSku": "SKU1" }, "amount": { "unit": "EACHES", "value": "1" } }],
"offers": [{
"fulfillmentConfiguration": {
"serviceLevel": {
"serviceTier": "EXPEDITED",
"deliveryInterval": {
"startTime": "2025-09-15T07:00:00Z",
"endTime": "2025-09-16T06:59:59Z"
},
"shipInterval": {
"startTime": "2025-09-13T07:00:00Z",
"endTime": "2025-09-14T06:59:59Z"
}
},
"services": {
"packaging": { "packagingOption": "UNBRANDED" }
}
},
"estimatedPrice": {
"rollupPrices": [
{ "type": "FBAPerOrderFulfillmentFee", "value": { "currencyCode": "USD", "amount": "0.0" } },
{ "type": "FBATransportationFee", "value": { "currencyCode": "USD", "amount": "0.0" } },
{ "type": "FBAPerUnitFulfillmentFee", "value": { "currencyCode": "USD", "amount": "12.5" } }
],
"totalPrice": { "currencyCode": "USD", "amount": "12.5" }
}
}]
}]
}createFulfillmentOrder to createOrder
createFulfillmentOrder to createOrderParameters and structure:
| Location | v2020-07-01 | v2026-07-04 |
|---|---|---|
| Path | /fulfillmentOrders | /orders |
| Body | sellerFulfillmentOrderId | orderId |
| Body | shippingSpeedCategory: "STANDARD" | fulfillmentConfiguration.serviceLevel.serviceTiers: ["STANDARD"] |
| Body | fulfillmentAction: "SHIP" | fulfillmentConfiguration.action: "SHIP" |
| Body | fulfillmentPolicy: "FillAllAvailable" | fulfillmentConfiguration.policy: "FILL_ALL_AVAILABLE" |
| Body | destinationAddress | destination.deliveryAddress |
| Body | marketplaceId | origin.countryCode |
| Body | items | lineItems |
| Body | featureConstraints | fulfillmentConfiguration.services |
| Body | deliveryPreferences | destination.deliveryNotes / destination.dropOffLocation |
| Body | codSettings | fulfillmentConfiguration.services.delivery.paymentOnDelivery |
| Body | featureConstraints.featureName | channel (new) |
| Body.items | sellerSKU | product.productIdentifier.amazonSku |
| Body.items | sellerFulfillmentOrderItemId | lineItemId |
| Body.items | quantity | amount.value (with amount.unit: "EACHES") |
v2020-07-01 sample request:
POST /fba/outbound/2020-07-01/fulfillmentOrders
Content-Type: application/json
{
"sellerFulfillmentOrderId": "ABC123",
"shippingSpeedCategory": "Standard",
"fulfillmentAction": "Ship",
"fulfillmentPolicy": "FillAllAvailable",
"destinationAddress": {
"name": "Recipient Name", "addressLine1": "1000 Winthrop Ave N",
"city": "Seattle", "countryCode": "US",
"postalCode": "98103", "stateOrRegion": "WA", "email": "[email protected]"
},
"marketplaceId": "ATVPDKIKX0DER",
"items": [{ "sellerFulfillmentOrderItemId": "item1", "sellerSKU": "SKU1", "quantity": 2 }],
"featureConstraints": [{ "featureName": "BLANK_BOX", "featureFulfillmentPolicy": "Required" },
{"featureName": "CHANNEL.TIKTOK", "featureFulfillmentPolicy": "Required"}]
}v2026-07-04 sample request:
POST /fulfillment/outbound/2026-07-04/orders
Content-Type: application/json
{
"orderId": "ABC123",
"channel": "SHOPIFY",
"fulfillmentConfiguration": {
"serviceLevel": { "serviceTiers": ["STANDARD"] },
"action": "SHIP",
"policy": "FILL_ALL_AVAILABLE",
"services": {
"packaging": { "packagingOption": "UNBRANDED" }
}
},
"destination": {
"deliveryAddress": {
"name": "Recipient Name", "addressLine1": "1000 Winthrop Ave N",
"city": "Seattle", "countryCode": "US",
"postalCode": "98103", "stateOrRegion": "WA", "email": "[email protected]"
}
},
"origin": { "countryCode": "US" },
"lineItems": [{
"lineItemId": "item1",
"product": { "productIdentifier": { "amazonSku": "SKU1" } },
"amount": { "unit": "EACHES", "value": "2.0" }
}]
}listAllFulfillmentOrders to listOrders
listAllFulfillmentOrders to listOrdersParameters and structure:
| Location | v2020-07-01 | v2026-07-04 |
|---|---|---|
| Path | /fulfillmentOrders | /orders |
| Query Params | queryStartDate | updatedAfter |
| Query Params | nextToken | pageToken |
| Query Params | -- | shipments=EXCLUDE/INCLUDE |
| Response | payload wrapper | no wrapper; object returned directly |
| Response | nextToken | pagination.nextToken |
v2020-07-01 sample response:
{
"payload": {
"fulfillmentOrders": [{
"sellerFulfillmentOrderId": "ORDER1",
"marketplaceId": "31060",
"shippingSpeedCategory": "Expedited",
"destinationAddress": {
"name": "Recipient Name",
"addressLine1": "1000 Winthrop Ave N",
"addressLine2": "Floor 19",
"city": "Seattle",
"countryCode": "US",
"phone": "123-456-7890",
"postalCode": "98103",
"stateOrRegion": "WA"
},
"fulfillmentPolicy": "FillAllAvailable",
"receivedDate": "2025-09-02T17:34:18Z",
"fulfillmentOrderStatus": "Unfulfillable",
"statusUpdatedDate": "2025-09-03T18:13:44Z",
"featureConstraints": [{
"featureName": "BLANK_BOX",
"featureFulfillmentPolicy": "Required"
}]
}],
"nextToken": "nextPageToken"
}
}v2026-07-04 sample response:
{
"orders": [{
"fulfillmentConfiguration": {
"serviceLevel": { "serviceTiers": ["EXPEDITED"] },
"action": "SHIP",
"policy": "FILL_ALL_AVAILABLE"
},
"destination": {
"deliveryAddress": {
"name": "Recipient Name",
"addressLine1": "1000 Winthrop Ave N",
"addressLine2": "Floor 19",
"city": "Seattle",
"countryCode": "US",
"phone": "123-456-7890",
"postalCode": "98103",
"stateOrRegion": "WA"
}
},
"orderId": "ORDER1",
"origin": { "countryCode": "US" },
"receiveTime": "2025-09-02T17:34:18Z",
"status": "UNFULFILLABLE",
"statusUpdateTime": "2025-09-03T18:13:44Z"
}],
"pagination": {
"nextToken": "nextPageToken"
}
}getFulfillmentOrder to getOrder
getFulfillmentOrder to getOrderParameters and structure:
| Location | v2020-07-01 | v2026-07-04 |
|---|---|---|
| Path | /fulfillmentOrders/{sellerFulfillmentOrderId} | /orders/{orderId} |
| Query Params | -- | shipments=EXCLUDE/INCLUDE |
| Response | payload wrapper | no wrapper; object returned directly |
| Response | fulfillmentOrderStatus | status |
| Response | statusUpdatedDate | statusUpdateTime |
| Response | receivedDate | receiveTime |
| Response | fulfillmentShipments | shipments |
| Response | fulfillmentShipmentPackage | packages |
| Response | packageNumber: "1" | packageId: "PKG-abc123def456" |
| Response | -- | packages[].status (new) |
| Response | serialNumber | unitIdentifiers |
| Response | fulfillmentCenterId (e.g., "PAE2") | amazonFacility.facilityId + amazonFacility.address (name, addressLine1, city, stateOrRegion, postalCode, countryCode) |
| Response | carrierCode + trackingNumber | tracking.carrier (carrierCode, trackingNumber, trackingUrl) + tracking.amazon (trackingNumber, trackingUrl) |
| Response | deliveryPhotoUrl | tracking.proofOfDelivery.deliveryPhotoUrl |
| Response | deliveryInformation.dropOffLocation | tracking.dropOffLocation |
v2020-07-01 sample response:
{
"payload": {
"fulfillmentOrder": {
"sellerFulfillmentOrderId": "ABC123",
"marketplaceId": "ATVPDKIKX0DER",
"shippingSpeedCategory": "Expedited",
"destinationAddress": {
"name": "Recipient Name", "addressLine1": "1000 Winthrop Ave N",
"city": "Seattle", "countryCode": "US",
"postalCode": "98103", "stateOrRegion": "WA"
},
"fulfillmentAction": "Ship",
"fulfillmentPolicy": "FillAllAvailable",
"receivedDate": "2025-08-28T23:39:38Z",
"fulfillmentOrderStatus": "Complete",
"statusUpdatedDate": "2025-08-29T08:29:05Z"
},
"fulfillmentOrderItems": [{
"sellerFulfillmentOrderItemId": "item1", "sellerSku": "SKU1",
"quantity": "2", "cancelledQuantity": "0", "unfulfillableQuantity": "0",
"estimatedShipDate": "2025-08-30T06:59:59Z",
"estimatedArrivalDate": "2025-08-31T06:59:59Z"
}],
"fulfillmentShipments": [{
"amazonShipmentId": "shipmentID",
"fulfillmentCenterId": "PSP1",
"fulfillmentShipmentStatus": "SHIPPED",
"shippingDate": "2025-08-29T08:23:44Z",
"estimatedArrivalDate": "2025-08-31T06:59:59Z",
"fulfillmentShipmentItem": [{
"sellerSku": "SKU1", "sellerFulfillmentOrderItemId": "item1",
"quantity": "2", "packageNumber": "1341598491"
}],
"fulfillmentShipmentPackage": [{
"packageNumber": "1341598491",
"carrierCode": "Amazon Logistics",
"trackingNumber": "TBA32397232322",
"estimatedArrivalDate": "2025-08-30T03:00:00Z"
}]
}]
}
}v2026-07-04 sample response:
{
"order": {
"orderId": "ABC123",
"receiveTime": "2025-08-28T23:39:38Z",
"fulfillmentConfiguration": {
"serviceLevel": { "serviceTiers": ["EXPEDITED"] },
"action": "SHIP",
"policy": "FILL_ALL_AVAILABLE"
},
"status": "COMPLETE",
"statusUpdateTime": "2025-08-29T08:29:05Z",
"destination": {
"deliveryAddress": {
"name": "Recipient Name", "addressLine1": "1000 Winthrop Ave N",
"city": "Seattle", "countryCode": "US",
"postalCode": "98103", "stateOrRegion": "WA"
}
},
"lineItems": [{
"lineItemId": "item1",
"product": { "productIdentifier": { "amazonSku": "SKU1" } },
"amount": { "unit": "EACHES", "value": "1" },
"cancelledAmount": { "unit": "EACHES", "value": "0" },
"unfulfillableAmount": { "unit": "EACHES", "value": "0" }
}],
"shipments": [{
"amazonShipmentId": "shipmentID",
"amazonFacility": {
"facilityId": "PSP1",
"address": {
"name": "PSP1", "addressLine1": "1010 W 4th Street",
"postalCode": "92223-2684", "countryCode": "US",
"stateOrRegion": "CA", "city": "BEAUMONT"
}
},
"status": "SHIPPED",
"shipTime": "2025-08-29T08:23:44Z",
"deliveryTime": "2025-08-31T06:59:59Z",
"items": [{
"productIdentifier": { "amazonSku": "SKU1" },
"lineItemId": "item1",
"amount": { "value": "2", "unit": "EACHES" }
}],
"packages": [{
"packageId": "PKG-abc123def456",
"status": "IN_TRANSIT",
"tracking": {
"carrier": {
"carrierCode": "Amazon Logistics",
"trackingNumber": "TBA32397232322",
"trackingUrl": "https://www.swiship.com/track?id=TBA32397232322"
}
},
"deliveryTime": "2025-08-29T20:00:00Z"
}]
}]
}
}updateFulfillmentOrder to updateOrder
updateFulfillmentOrder to updateOrderParameters and structure:
| Location | v2020-07-01 | v2026-07-04 | Notes |
|---|---|---|---|
| Path | /fulfillmentOrders/{sellerFulfillmentOrderId} | /orders/{orderId} | None |
| Body Params | Full order object with fulfillmentAction | fulfillmentConfiguration.action | Only fulfillmentConfiguration.action is needed in v2026-07-04 |
| Response | 200 OK (empty body) | 202 Accepted (empty body) | None |
v2020-07-01 sample request:
PUT /fba/outbound/2020-07-01/fulfillmentOrders/{sellerFulfillmentOrderId}
Content-Type: application/json
{
"sellerFulfillmentOrderId": "ABC123",
"shippingSpeedCategory": "Standard",
"fulfillmentAction": "Ship",
"fulfillmentPolicy": "FillAllAvailable",
"destinationAddress": {
"name": "Recipient Name",
"addressLine1": "1000 Winthrop Ave N",
"addressLine2": "Floor 19",
"city": "Seattle",
"stateOrRegion": "WA",
"postalCode": "98103",
"countryCode": "US",
"phone": "123-456-7890"
},
"items": [{ "sellerFulfillmentOrderItemId": "item1", "sellerSKU": "SKU1", "quantity": 2 }],
"featureConstraints": [{ "featureName": "BLANK_BOX", "featureFulfillmentPolicy": "Required" }]
}v2026-07-04 sample request:
PUT /fulfillment/outbound/2026-07-04/orders/{orderId}
Content-Type: application/json
{
"fulfillmentConfiguration": {
"action": "SHIP"
}
}Sample response:
HTTP/1.1 202 AcceptedsubmitFulfillmentOrderStatusUpdate to updateOrderStatus (sandbox only)
submitFulfillmentOrderStatusUpdate to updateOrderStatus (sandbox only)Parameters and structure:
| Location | v2020-07-01 | v2026-07-04 |
|---|---|---|
| Path | /fulfillmentOrders/{sellerFulfillmentOrderId}/status | /orders/{orderId}/status |
| Body Params | fulfillmentOrderStatus | status |
v2020-07-01 sample request:
PUT /fba/outbound/2020-07-01/fulfillmentOrders/{sellerFulfillmentOrderId}/status
Content-Type: application/json
{
"fulfillmentOrderStatus": "New"
}Sample response:
HTTP/1.1 200 OKv2026-07-04 sample request:
PUT /fulfillment/outbound/2026-07-04/orders/{orderId}/status
Content-Type: application/json
{
"status": "PROCESSING"
}Sample response:
HTTP/1.1 200 OKcancelFulfillmentOrder to cancelOrder
cancelFulfillmentOrder to cancelOrderParameters and structure:
| Location | v2020-07-01 | v2026-07-04 |
|---|---|---|
| Path | /fulfillmentOrders/{sellerFulfillmentOrderId}/cancel | /orders/{orderId}/cancel |
| Response | 200 OK (empty body) | 202 Accepted (empty body) |
v2020-07-01 sample request:
PUT /fba/outbound/2020-07-01/fulfillmentOrders/{sellerFulfillmentOrderId}/cancel
Content-Type: application/jsonv2026-07-04 sample request:
PUT /fulfillment/outbound/2026-07-04/orders/{orderId}/cancel
Content-Type: application/jsonSample response:
HTTP/1.1 202 AcceptedNew sandbox-only operation updatePackage
updatePackageupdatePackage is new in v2026-07-04 and has no equivalent in v2020-07-01. Use it to simulate granular package delivery states in the dynamic sandbox environment. Unlike updateOrderStatus, which sets order-level status, updatePackage lets you advance individual packages through their delivery lifecycle independently, which is useful for testing multi-shipment order scenarios. Supported statuses: IN_TRANSIT, OUT_FOR_DELIVERY, DELIVERED, DELAYED, UNDELIVERABLE. This operation must be directed to a sandbox endpoint.
Endpoint: PUT /fulfillment/outbound/2026-07-04/orders/{orderId}/packages/{packageId}/status
Sample request:
PUT /fulfillment/outbound/2026-07-04/orders/{orderId}/packages/{packageId}/status
Content-Type: application/json
{
"status": "IN_TRANSIT"
}Error Handling Changes
Both v2020-07-01 and v2026-07-04 return errors in an errors array with code and message fields. However, there are important structural and behavioral differences that require updates to integrate.
Key differences
| Aspect | v2020-07-01 | v2026-07-04 |
|---|---|---|
| 400 message source | Nested object ($inputRoot.Error.Message) | Flat JSON ($inputRoot.message) |
details field on 400 errors | Not included | Included. Provides field-level validation feedback |
| HTTP 500 error code | Returns NotFound | Returns InternalFailure |
| New HTTP status codes | - | 413 (Payload Too Large), 415 (Unsupported Media Type) |
400 error structure
In v2020-07-01, error messages embed backend-specific codes directly in the message string:
{
"errors": [{
"code": "InvalidInput",
"message": "Value for parameter SellerFulfillmentOrderId is invalid: QuantityUnavailable"
}]
}In v2026-07-04, the message is generic and the details field provides structured, field-level validation information that your integration can parse programmatically:
{
"errors": [{
"code": "InvalidInput",
"message": "Validation failed for the request.",
"details": "lineItems[0].amount.value must be greater than 0; destination.deliveryAddress.countryCode is required"
}]
}Required updates
- Stop parsing error messages for backend-specific codes: Codes like
QuantityUnavailableno longer appear in message text - Start consuming the
detailsfield on 400 errors: v2026-07-04 provides structured field-level validation info - Retry on
HTTP 500by status code, not error code: v2020-07-01 returnedNotFoundon 500; v2026-07-04 correctly returnsInternalFailure - Handle
413and415gracefully: New HTTP status codes added in v2026-07-04
Updated 3 days ago

