Fulfillment Outbound Troubleshooting Guide

Understand Fulfillment Outbound errors and how to deal with them.

This guide lists error codes and messages returned by the Fulfillment Outbound API v2026-07-04.

Error response format

All error responses follow this structure:

{
  "errors": [
    {
      "code": "<ErrorCode>",
      "message": "<Error message>",
      "details": ""
    }
  ]
}

Error codes overview

CodeHTTP StatusDescription
InvalidInput400Request validation or business logic failure (most common code)
OrderAlreadyExists400A fulfillment order with the submitted orderId already exists
DeliverySLAUnavailable400No delivery option available for the given destination
PreviewDocumentExpired400The fulfillment preview has expired (getOrderPreview only)
Unauthorized403Authorization failure
InternalFailure500Internal service error (retryable)

The Fulfillment Outbound API uses InvalidInput as the error code for the majority of client errors. Specialized codes like DeliverySLAUnavailable are only used in specific scenarios.

Common errors that apply to all operations

The following errors can occur with any operation.

ScenarioHTTP StatusCodeMessage
Authorization failure (invalid credentials, missing permissions)403UnauthorizedAccess to requested resource is denied.
Transient internal service error500InternalFailureWe encountered an internal error. Please try again.

Example: Authorization failure

{
  "errors": [
    {
      "code": "Unauthorized",
      "message": "Access to requested resource is denied.",
      "details": ""
    }
  ]
}

Example: Internal service error (retryable)

{
  "errors": [
    {
      "code": "InternalFailure",
      "message": "We encountered an internal error. Please try again.",
      "details": ""
    }
  ]
}

createOrder

Input Validation Errors

These errors occur when the request body violates field constraints defined in the API model.

ScenarioCodeMessage
Missing required fieldInvalidInput1 validation error detected: Value null at '<fieldPath>' failed to satisfy constraint: Member must not be null
Field exceeds max lengthInvalidInput1 validation error detected: Value '<value>' at '<fieldPath>' failed to satisfy constraint: Member must have length less than or equal to <max>
Field below min lengthInvalidInput1 validation error detected: Value '' at '<fieldPath>' failed to satisfy constraint: Member must have length greater than or equal to <min>
Invalid enum valueInvalidInput1 validation error detected: Value '<value>' at '<fieldPath>' failed to satisfy constraint: Member must satisfy enum value set: [<valid values>]
Invalid numeric/pattern formatInvalidInput1 validation error detected: Value '<value>' at '<fieldPath>' failed to satisfy constraint: Member must satisfy regular expression pattern: <pattern>

Example: Missing orderId

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value null at 'orderId' failed to satisfy constraint: Member must not be null",
      "details": ""
    }
  ]
}

Example: Invalid serviceTiers

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value '[SUPER_FAST]' at 'fulfillmentConfiguration.serviceLevel.serviceTiers' failed to satisfy constraint: Member must satisfy enum value set: [EXPEDITED, PRIORITY, SCHEDULED, STANDARD]",
      "details": ""
    }
  ]
}

Example: Invalid fulfillmentAction

{
  "errors": [
    {
      "code": "OrderAlreadyExists",
      "message": "1 validation error detected: Value 'DELIVER' at 'fulfillmentConfiguration.action' failed to satisfy constraint: Member must satisfy enum value set: [SHIP, HOLD]",
      "details": ""
    }
  ]
}

Example: Invalid fulfillmentPolicy

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value 'FILL_SOME' at 'fulfillmentConfiguration.policy' failed to satisfy constraint: Member must satisfy enum value set: [FILL_ALL, FILL_ALL_AVAILABLE, FILL_OR_KILL]",
      "details": ""
    }
  ]
}

Example: orderId exceeds max length

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' at 'orderId' failed to satisfy constraint: Member must have length less than or equal to 40",
      "details": ""
    }
  ]
}

Example: Invalid currency code (must be uppercase 3 letters)

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value 'usd' at 'lineItems.1.member.product.perUnitDeclaredValue.currencyCode' failed to satisfy constraint: Member must satisfy regular expression pattern: [A-Z]{3}",
      "details": ""
    }
  ]
}

Example: Non-numeric amount.value

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value 'abc' at 'lineItems.1.member.amount.value' failed to satisfy constraint: Member must satisfy regular expression pattern: -?\\d{1,38}(\\.\\d+)?",
      "details": ""
    }
  ]
}

Business Logic Errors

ScenarioCodeMessage
SKU does not exist or is not resolvableInvalidInput1 error(s) is/are present: the SellerSKU for Item Id: <lineItemId> is invalid.
SKU is blocked or ineligibleInvalidInput1 error(s) is/are present: the SellerSKU for Item Id: <lineItemId> is invalid.
No inventory available for SKUInvalidInput1 error(s) is/are present: No inventory available for Items.SellerFulfillmentOrderItemId: <lineItemId>.
Duplicate orderIdOrderAlreadyExistsA fulfillment order with orderId <orderId> already exists.
Seller not registered for fulfillmentInvalidInput1 error(s) is/are present: Seller is not registered for Basic fulfillment.
Seller account blocked (payment issue)InvalidInput1 error(s) is/are present: Seller is blocked pending payment method.
Seller account suspendedInvalidInput1 error(s) is/are present: Seller is blocked or suspended from selling in the target marketplace.
Destination address is invalidInvalidInput1 error(s) is/are present: The provided address is not valid.
No delivery SLA for destination/speedDeliverySLAUnavailableDelivery SLA is not available for given destination address. This may mean we are unable to meet the provided shippingSpeedCategory.
International shipment missing declared value or over limitInvalidInput1 error(s) is/are present: Export order is missing a declared value or exceeds $2500
International shipment not allowedInvalidInput1 error(s) is/are present: Delivery SLA is not available for given foreign destination address. If you have signed up for exports, please review your current export or international shipping option.
Hazmat item not supportedInvalidInput1 error(s) is/are present: Hazmat items are not supported
Packing slip timestamp invalidInvalidInputPacking slip timestamp is not in valid ISO 8601 format.

Example: SKU does not exist

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 error(s) is/are present: the SellerSKU for Item Id: item1 is invalid.",
      "details": ""
    }
  ]
}

Example: No inventory available

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 error(s) is/are present: No inventory available for Items.SellerFulfillmentOrderItemId: item1.",
      "details": ""
    }
  ]
}

Example: Duplicate orderId

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "A fulfillment order with orderId my-order-123 already exists",
      "details": ""
    }
  ]
}

Example: Delivery SLA unavailable

{
  "errors": [
    {
      "code": "DeliverySLAUnavailable",
      "message": "Delivery SLA is not available for given destination address. This may mean we are unable to meet the provided shippingSpeedCategory.",
      "details": ""
    }
  ]
}

getOrderPreview

Input Validation Errors

ScenarioCodeMessage
Invalid delivery service levelInvalidInput1 validation error detected: Value '[<value>]' at 'serviceTiers' failed to satisfy constraint: Member must satisfy constraint: [Member must satisfy enum value set: [EXPEDITED, STANDARD]]
Missing destinationInvalidInput1 validation error detected: Value null at 'destination' failed to satisfy constraint: Member must not be null

Example: Invalid deliveryServiceLevel in list

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value '[SUPER_FAST]' at 'serviceTiers' failed to satisfy constraint: Member must satisfy constraint: [Member must satisfy enum value set: [EXPEDITED, STANDARD]]",
      "details": ""
    }
  ]
}

Example: Missing destination

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value null at 'destination' failed to satisfy constraint: Member must not be null",
      "details": ""
    }
  ]
}

Business Logic Errors

ScenarioCodeMessage
SKU does not existInvalidInput1 error(s) is/are present: Value <sku> for parameter Items.SellerSKU is invalid. Reason: InvalidValue.
No inventory available for SKUInvalidInput1 error(s) is/are present: No inventory available for Items.SellerFulfillmentOrderItemId: <lineItemId>.
Seller not registered for fulfillmentInvalidInput1 error(s) is/are present: Seller is not registered for Basic fulfillment.
Destination address invalidInvalidInput1 error(s) is/are present: The provided address is not valid.
No delivery SLA for destination/speedDeliverySLAUnavailableDelivery SLA is not available for given destination address. This may mean we are unable to meet the provided shippingSpeedCategory.
Preview expiredPreviewDocumentExpiredThe fulfillment preview has expired and can no longer be used to create an order.

Example: SKU not found (getOrderPreview format)

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 error(s) is/are present: Value NONEXISTENT-SKU-XYZ-999 for parameter Items.SellerSKU is invalid. Reason: InvalidValue.",
      "details": ""
    }
  ]
}

getOffers

Input Validation Errors

ScenarioCodeMessage
Missing origin.countryCodeInvalidInput1 validation error detected: Value '' at 'origin.countryCode' failed to satisfy constraint: Member must have length greater than or equal to 2
Missing amazonSkuInvalidInputValue required for parameter lineItem.productIdentifier.amazonSku
Unsupported origin countryInvalidInputRequest has unsupported parameter value: {origin.countryCode=<value>}

Business Logic Errors

ScenarioCodeMessage
SKU does not existInvalidInput1 error(s) is/are present: the SellerSKU for Item Id: <lineItemId> is invalid.
No inventory availableInvalidInput1 error(s) is/are present: No inventory available for Items.SellerFulfillmentOrderItemId: <lineItemId>.
No delivery SLA for destinationDeliverySLAUnavailableDelivery SLA is not available for given destination address. This may mean we are unable to meet the provided shippingSpeedCategory.

Example: Missing amazonSku

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "Value required for parameter lineItem.productIdentifier.amazonSku",
      "details": ""
    }
  ]
}

Example: Unsupported country

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "Request has unsupported parameter value: {origin.countryCode=ZZ}",
      "details": ""
    }
  ]
}

Example: Missing origin.countryCode

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value '' at 'origin.countryCode' failed to satisfy constraint: Member must have length greater than or equal to 2",
      "details": ""
    }
  ]
}

getOrder

Query Parameter Errors

ScenarioCodeMessage
Invalid shipments enum valueInvalidInput1 validation error detected: Value '<value>' at 'shipments' failed to satisfy constraint: Member must satisfy enum value set: [INCLUDE, EXCLUDE]

Business Logic Errors

ScenarioCodeMessage
Order not foundInvalidInputUnable to get order details for the provided sellerFulfillmentOrderId

Example: Invalid shipments query parameter

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value 'MAYBE' at 'shipments' failed to satisfy constraint: Member must satisfy enum value set: [INCLUDE, EXCLUDE]",
      "details": ""
    }
  ]
}

Example: Order not found

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "Unable to get order details for the provided sellerFulfillmentOrderId",
      "details": ""
    }
  ]
}

updateOrder

Input Validation Errors

Same model-level constraint validations as createOrder for shared fields.

Business Logic Errors

ScenarioCodeMessage
Order not foundInvalidInputUnable to get order details for the provided sellerFulfillmentOrderId
Invalid serviceTiers valueInvalidInput1 validation error detected: Value '<value>' at 'fulfillmentConfiguration.serviceLevel.serviceTiers' failed to satisfy constraint: Member must satisfy enum value set: [EXPEDITED, PRIORITY, SCHEDULED, STANDARD]
Invalid action valueInvalidInput1 validation error detected: Value '<value>' at 'fulfillmentConfiguration.action' failed to satisfy constraint: Member must satisfy enum value set: [SHIP, HOLD]
SKU does not existInvalidInput1 error(s) is/are present: the SellerSKU for Item Id: <lineItemId> is invalid.
No inventory availableInvalidInput1 error(s) is/are present: No inventory available for Items.SellerFulfillmentOrderItemId: <lineItemId>.

cancelOrder

Business Logic Errors

ScenarioCodeMessage
Order not found / cancel before createInvalidInput1 error(s) is/are present: Value <orderId> for parameter SellerFulfillmentOrderId is invalid. Reason: CancelBeforeCreate.
Order already complete or unfulfillableInvalidInputThis order is already complete

Example: Order not found (cancel before create)

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 error(s) is/are present: Value NONEXISTENT-ORDER-XYZ-999 for parameter SellerFulfillmentOrderId is invalid. Reason: CancelBeforeCreate.",
      "details": ""
    }
  ]
}

Example: Order already complete (non-cancellable)

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "This order is already complete",
      "details": ""
    }
  ]
}

updateOrderStatus

Business Logic Errors

ScenarioCodeMessage
Invalid status valueInvalidInputInvalid status: <value>. Valid values are: PROCESSING, COMPLETE, COMPLETE_PARTIAL, UNFULFILLABLE, CANCELLED
Order not foundInvalidInputUnable to get order details for the provided sellerFulfillmentOrderId

Example: Invalid status

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "Invalid status: INVALID_STATUS. Valid values are: PROCESSING, COMPLETE, COMPLETE_PARTIAL, UNFULFILLABLE, CANCELLED",
      "details": ""
    }
  ]
}

updatePackage

Business Logic Errors

ScenarioCodeMessage
Package or order not foundInvalidInputUnable to get order details for the provided sellerFulfillmentOrderId

listOrders

Query Parameter Errors

ScenarioCodeMessage
Invalid updatedAfter formatInvalidInputInvalid Input
Invalid shipments enum valueInvalidInput1 validation error detected: Value '<value>' at 'shipments' failed to satisfy constraint: Member must satisfy enum value set: [INCLUDE, EXCLUDE]
Invalid pageTokenInvalidInputUnable to get order summary info for ListAllFulfillmentOrdersByNextTokenRequest...

Example: Invalid updatedAfter date format

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "Invalid Input",
      "details": ""
    }
  ]
}

Example: Invalid shipments enum value

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "1 validation error detected: Value 'MAYBE' at 'shipments' failed to satisfy constraint: Member must satisfy enum value set: [INCLUDE, EXCLUDE]",
      "details": ""
    }
  ]
}

Example: Invalid pageToken

{
  "errors": [
    {
      "code": "InvalidInput",
      "message": "Unable to get order summary info for ListAllFulfillmentOrdersByNextTokenRequest(...). Received error message: ",
      "details": ""
    }
  ]
}

This operation returns an empty list rather than an error when no orders match the filter criteria.

Constraint Violations (Partial Failures)

Constraints are not errors. The API returns 200 OK even when constraints are present. They are informational signals indicating fulfillment limitations, such as why certain service tiers, items, or configurations are unavailable for the requested order. A response may include both fulfillable offers and constraints simultaneously.

📘

Note

Always check for a constraints array on every 200 OK response. A successful HTTP status does not guarantee all requested items or tiers are available for fulfillment.

Constraint Schema

Each constraint object has the following structure:

{
  "message": "string: human-readable description",
  "type": "string: constraint classification",
  "code": "string: machine-readable constraint code",
  "details": [
    {
      "type": "string: detail key",
      "value": "string: detail value"
    }
  ]
}
FieldRequiredDescription
messageYesHuman-readable explanation. Suitable for display to sellers.
typeYesConstraint category. Indicates what failed (for example, DeliverySLAUnavailable).
codeYesError classification. Indicates how it failed (for example, ValidationError).
detailsNoArray of key-value pairs providing specific context (for example, which SKU or service tier triggered the constraint). Use for programmatic recovery.

Where Constraints Appear

Constraints appear at different levels depending on the operation:

  • getOrderPreview: Constraints appear at the response root, applying to the overall preview request.
  • getOffers: Constraints appear inside each offerResult, scoped to a specific item.

Known Constraint Types

DeliverySLAUnavailable

The requested service tier cannot be fulfilled for this preview or offer.

FieldValue
typeDeliverySLAUnavailable
codeValidationError
message"{ServiceTier} is not fulfillable for this Preview."

Example: Standard speed unavailable (getOrderPreview)

{
  "message": "Standard is not fulfillable for this Preview.",
  "type": "DeliverySLAUnavailable",
  "code": "ValidationError"
}

Example: with details (getOffers, per-item)

{
  "message": "Delivery service level agreement unavailable for EXPEDITED shipping",
  "type": "DeliverySLAUnavailable",
  "code": "ValidationError",
  "details": [
    { "type": "deliveryServiceLevel", "value": "EXPEDITED" }
  ]
}

Troubleshooting:

ScenarioWhat to do
Single tier unavailable (for example, only Expedited/Priority constrained)Use a slower tier. Standard is likely available. Check plannedShipments[].offers[] (or offerResults[].offers[]) for available tiers.
All tiers constrained (plannedShipments: [])The item cannot be fulfilled to this destination from current inventory. Verify the SKU has available inventory in Seller Central → Manage FBA Inventory, or programmatically with the getInventorySummaries operation. Confirm the destination address is within a serviceable region.
Recurring constraint for a specific destinationThe fulfillment center(s) stocking this item may not have carrier routes supporting faster delivery to this region. Consider splitting the order or adjusting delivery expectations.
Constraint appears after changing packaging/service optionsSome service configurations (for example, UNBRANDED packaging) restrict which fulfillment centers can fulfill the order. Removing optional service constraints may restore availability.

ItemQuantityNotAvailable

The requested quantity for an item exceeds available inventory in the fulfillment network.

FieldValue
typeValidationError
codeItemQuantityNotAvailable
message"There is not enough quantity of item {identifier}."

Example:

{
  "message": "There is not enough quantity of item xyz.",
  "type": "ValidationError",
  "code": "ItemQuantityNotAvailable",
  "details": [
    { "type": "amazonSku", "value": "SKU-123" }
  ]
}

Troubleshooting:

ScenarioWhat to do
Requested quantity is too highReduce amount.value in the request. Verify available inventory in Seller Central → Manage FBA Inventory, or programmatically with the getInventorySummaries operation.
Item shows "in stock" in Seller Central but still constrainedInventory may be reserved for other orders, in transfer between fulfillment centers, or in "unfulfillable" status (damaged, expired). Check the Inventory Health report for disposition breakdown.
Partial availability. Some quantity can be fulfilledOffers may still be returned for a subset of the requested quantity. Check plannedShipments; the constraint means some quantity could not be committed, but partial fulfillment may be offered.
Recently shipped inventory to FBAInventory in "receiving" status is not yet available for MCF. Wait until items show as "fulfillable" in inventory reports.

Response Patterns

All tiers available (no constraints)

{
  "plannedShipments": [
    {
      "items": [
        "..."
      ],
      "offers": [
        {
          "fulfillmentConfiguration": {
            "serviceLevel": {
              "serviceTier": "STANDARD"
            }
          }
        },
        {
          "fulfillmentConfiguration": {
            "serviceLevel": {
              "serviceTier": "EXPEDITED"
            }
          }
        },
        {
          "fulfillmentConfiguration": {
            "serviceLevel": {
              "serviceTier": "PRIORITY"
            }
          }
        }
      ]
    }
  ]
}

Partial availability (offers + constraints)

Standard is available; Expedited and Priority are constrained:

{
  "plannedShipments": [
    {
      "items": [
        "..."
      ],
      "offers": [
        {
          "fulfillmentConfiguration": {
            "serviceLevel": {
              "serviceTier": "STANDARD"
            }
          }
        }
      ]
    }
  ],
  "constraints": [
    {
      "message": "Expedited is not fulfillable for this Preview.",
      "type": "DeliverySLAUnavailable",
      "code": "ValidationError"
    },
    {
      "message": "Priority is not fulfillable for this Preview.",
      "type": "DeliverySLAUnavailable",
      "code": "ValidationError"
    }
  ]
}

No availability (constraints only)

No tiers can be fulfilled; plannedShipments is empty:

{
  "plannedShipments": [],
  "constraints": [
    {
      "message": "Expedited is not fulfillable for this Preview.",
      "type": "DeliverySLAUnavailable",
      "code": "ValidationError"
    },
    {
      "message": "Priority is not fulfillable for this Preview.",
      "type": "DeliverySLAUnavailable",
      "code": "ValidationError"
    },
    {
      "message": "Standard is not fulfillable for this Preview.",
      "type": "DeliverySLAUnavailable",
      "code": "ValidationError"
    }
  ]
}

An empty plannedShipments array combined with a non-empty constraints array means the order is fully unfulfillable. Display the constraint messages and guide the seller to check inventory and destination address.

Integration Guidance

  • Always check for constraints on every 200 OK response, even when plannedShipments or offerResults contain offers.
  • Do not hard-code type/code values; the service may add new constraint codes at any time. Handle unknown codes gracefully by falling back to displaying message.
  • Use details for programmatic recovery. For example, if deliveryServiceLevel: "EXPEDITED" is constrained, retry with "STANDARD".
  • Do not rely on type/code ordering. Always inspect both fields. The semantic meaning of a constraint is determined by reading type and code together, as their roles can differ across constraint types.

Valid Enum Values Reference

FieldValid Values
serviceTiersSTANDARD, EXPEDITED (additional values may be available depending on marketplace)
fulfillmentConfiguration.actionSHIP, HOLD
fulfillmentConfiguration.policyFILL_OR_KILL, FILL_ALL, FILL_ALL_AVAILABLE
shipments (query param)INCLUDE, EXCLUDE
services.packaging.packagingOptionUNBRANDED, ANY
services.packaging.overboxREQUIRED, NOT_REQUIRED
services.additional.blockAMZLREQUIRED, NOT_REQUIRED
lineItems[i].amount.valueNumeric string matching -?\d{1,38}(\.\d+)?
perUnitDeclaredValue.currencyCode3-character uppercase ISO currency code (for example USD) matching [A-Z]{3}
perUnitDeclaredValue.amountNumeric string matching -?\d{1,18}(\.\d{1,2})?
updatedAfter (query param)ISO 8601 date-time string (for example 2025-01-01T00:00:00Z)

Retry Guidance

HTTP StatusCodeRetry?Notes
400AnyNoFix the request and resubmit
403UnauthorizedNoVerify credentials and permissions
429QuotaExceededYesRate limit exceeded. Back off and retry; respect x-amzn-RateLimit-Limit header. Refer to Fulfillment Outbound API Rate Limits.
500InternalFailureYesUse exponential backoff (recommended: start at 1s, max 30s)

Did this page help you?