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
| Code | HTTP Status | Description |
|---|---|---|
InvalidInput | 400 | Request validation or business logic failure (most common code) |
OrderAlreadyExists | 400 | A fulfillment order with the submitted orderId already exists |
DeliverySLAUnavailable | 400 | No delivery option available for the given destination |
PreviewDocumentExpired | 400 | The fulfillment preview has expired (getOrderPreview only) |
Unauthorized | 403 | Authorization failure |
InternalFailure | 500 | Internal 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.
| Scenario | HTTP Status | Code | Message |
|---|---|---|---|
| Authorization failure (invalid credentials, missing permissions) | 403 | Unauthorized | Access to requested resource is denied. |
| Transient internal service error | 500 | InternalFailure | We 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
createOrderInput Validation Errors
These errors occur when the request body violates field constraints defined in the API model.
| Scenario | Code | Message |
|---|---|---|
| Missing required field | InvalidInput | 1 validation error detected: Value null at '<fieldPath>' failed to satisfy constraint: Member must not be null |
| Field exceeds max length | InvalidInput | 1 validation error detected: Value '<value>' at '<fieldPath>' failed to satisfy constraint: Member must have length less than or equal to <max> |
| Field below min length | InvalidInput | 1 validation error detected: Value '' at '<fieldPath>' failed to satisfy constraint: Member must have length greater than or equal to <min> |
| Invalid enum value | InvalidInput | 1 validation error detected: Value '<value>' at '<fieldPath>' failed to satisfy constraint: Member must satisfy enum value set: [<valid values>] |
| Invalid numeric/pattern format | InvalidInput | 1 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
| Scenario | Code | Message |
|---|---|---|
| SKU does not exist or is not resolvable | InvalidInput | 1 error(s) is/are present: the SellerSKU for Item Id: <lineItemId> is invalid. |
| SKU is blocked or ineligible | InvalidInput | 1 error(s) is/are present: the SellerSKU for Item Id: <lineItemId> is invalid. |
| No inventory available for SKU | InvalidInput | 1 error(s) is/are present: No inventory available for Items.SellerFulfillmentOrderItemId: <lineItemId>. |
| Duplicate orderId | OrderAlreadyExists | A fulfillment order with orderId <orderId> already exists. |
| Seller not registered for fulfillment | InvalidInput | 1 error(s) is/are present: Seller is not registered for Basic fulfillment. |
| Seller account blocked (payment issue) | InvalidInput | 1 error(s) is/are present: Seller is blocked pending payment method. |
| Seller account suspended | InvalidInput | 1 error(s) is/are present: Seller is blocked or suspended from selling in the target marketplace. |
| Destination address is invalid | InvalidInput | 1 error(s) is/are present: The provided address is not valid. |
| No delivery SLA for destination/speed | DeliverySLAUnavailable | Delivery 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 limit | InvalidInput | 1 error(s) is/are present: Export order is missing a declared value or exceeds $2500 |
| International shipment not allowed | InvalidInput | 1 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 supported | InvalidInput | 1 error(s) is/are present: Hazmat items are not supported |
| Packing slip timestamp invalid | InvalidInput | Packing 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
getOrderPreviewInput Validation Errors
| Scenario | Code | Message |
|---|---|---|
| Invalid delivery service level | InvalidInput | 1 validation error detected: Value '[<value>]' at 'serviceTiers' failed to satisfy constraint: Member must satisfy constraint: [Member must satisfy enum value set: [EXPEDITED, STANDARD]] |
| Missing destination | InvalidInput | 1 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
| Scenario | Code | Message |
|---|---|---|
| SKU does not exist | InvalidInput | 1 error(s) is/are present: Value <sku> for parameter Items.SellerSKU is invalid. Reason: InvalidValue. |
| No inventory available for SKU | InvalidInput | 1 error(s) is/are present: No inventory available for Items.SellerFulfillmentOrderItemId: <lineItemId>. |
| Seller not registered for fulfillment | InvalidInput | 1 error(s) is/are present: Seller is not registered for Basic fulfillment. |
| Destination address invalid | InvalidInput | 1 error(s) is/are present: The provided address is not valid. |
| No delivery SLA for destination/speed | DeliverySLAUnavailable | Delivery SLA is not available for given destination address. This may mean we are unable to meet the provided shippingSpeedCategory. |
| Preview expired | PreviewDocumentExpired | The 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
getOffersInput Validation Errors
| Scenario | Code | Message |
|---|---|---|
| Missing origin.countryCode | InvalidInput | 1 validation error detected: Value '' at 'origin.countryCode' failed to satisfy constraint: Member must have length greater than or equal to 2 |
| Missing amazonSku | InvalidInput | Value required for parameter lineItem.productIdentifier.amazonSku |
| Unsupported origin country | InvalidInput | Request has unsupported parameter value: {origin.countryCode=<value>} |
Business Logic Errors
| Scenario | Code | Message |
|---|---|---|
| SKU does not exist | InvalidInput | 1 error(s) is/are present: the SellerSKU for Item Id: <lineItemId> is invalid. |
| No inventory available | InvalidInput | 1 error(s) is/are present: No inventory available for Items.SellerFulfillmentOrderItemId: <lineItemId>. |
| No delivery SLA for destination | DeliverySLAUnavailable | Delivery 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
getOrderQuery Parameter Errors
| Scenario | Code | Message |
|---|---|---|
Invalid shipments enum value | InvalidInput | 1 validation error detected: Value '<value>' at 'shipments' failed to satisfy constraint: Member must satisfy enum value set: [INCLUDE, EXCLUDE] |
Business Logic Errors
| Scenario | Code | Message |
|---|---|---|
| Order not found | InvalidInput | Unable 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
updateOrderInput Validation Errors
Same model-level constraint validations as createOrder for shared fields.
Business Logic Errors
| Scenario | Code | Message |
|---|---|---|
| Order not found | InvalidInput | Unable to get order details for the provided sellerFulfillmentOrderId |
| Invalid serviceTiers value | InvalidInput | 1 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 value | InvalidInput | 1 validation error detected: Value '<value>' at 'fulfillmentConfiguration.action' failed to satisfy constraint: Member must satisfy enum value set: [SHIP, HOLD] |
| SKU does not exist | InvalidInput | 1 error(s) is/are present: the SellerSKU for Item Id: <lineItemId> is invalid. |
| No inventory available | InvalidInput | 1 error(s) is/are present: No inventory available for Items.SellerFulfillmentOrderItemId: <lineItemId>. |
cancelOrder
cancelOrderBusiness Logic Errors
| Scenario | Code | Message |
|---|---|---|
| Order not found / cancel before create | InvalidInput | 1 error(s) is/are present: Value <orderId> for parameter SellerFulfillmentOrderId is invalid. Reason: CancelBeforeCreate. |
| Order already complete or unfulfillable | InvalidInput | This 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
updateOrderStatusBusiness Logic Errors
| Scenario | Code | Message |
|---|---|---|
| Invalid status value | InvalidInput | Invalid status: <value>. Valid values are: PROCESSING, COMPLETE, COMPLETE_PARTIAL, UNFULFILLABLE, CANCELLED |
| Order not found | InvalidInput | Unable 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
updatePackageBusiness Logic Errors
| Scenario | Code | Message |
|---|---|---|
| Package or order not found | InvalidInput | Unable to get order details for the provided sellerFulfillmentOrderId |
listOrders
listOrdersQuery Parameter Errors
| Scenario | Code | Message |
|---|---|---|
Invalid updatedAfter format | InvalidInput | Invalid Input |
Invalid shipments enum value | InvalidInput | 1 validation error detected: Value '<value>' at 'shipments' failed to satisfy constraint: Member must satisfy enum value set: [INCLUDE, EXCLUDE] |
Invalid pageToken | InvalidInput | Unable 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
constraintsarray on every200 OKresponse. 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"
}
]
}
| Field | Required | Description |
|---|---|---|
message | Yes | Human-readable explanation. Suitable for display to sellers. |
type | Yes | Constraint category. Indicates what failed (for example, DeliverySLAUnavailable). |
code | Yes | Error classification. Indicates how it failed (for example, ValidationError). |
details | No | Array 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 eachofferResult, scoped to a specific item.
Known Constraint Types
DeliverySLAUnavailable
DeliverySLAUnavailableThe requested service tier cannot be fulfilled for this preview or offer.
| Field | Value |
|---|---|
type | DeliverySLAUnavailable |
code | ValidationError |
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:
| Scenario | What 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 destination | The 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 options | Some service configurations (for example, UNBRANDED packaging) restrict which fulfillment centers can fulfill the order. Removing optional service constraints may restore availability. |
ItemQuantityNotAvailable
ItemQuantityNotAvailableThe requested quantity for an item exceeds available inventory in the fulfillment network.
| Field | Value |
|---|---|
type | ValidationError |
code | ItemQuantityNotAvailable |
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:
| Scenario | What to do |
|---|---|
| Requested quantity is too high | Reduce 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 constrained | Inventory 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 fulfilled | Offers 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 FBA | Inventory 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
constraintson every200 OKresponse, even whenplannedShipmentsorofferResultscontain offers. - Do not hard-code
type/codevalues; the service may add new constraint codes at any time. Handle unknown codes gracefully by falling back to displayingmessage. - Use
detailsfor programmatic recovery. For example, ifdeliveryServiceLevel: "EXPEDITED"is constrained, retry with"STANDARD". - Do not rely on
type/codeordering. Always inspect both fields. The semantic meaning of a constraint is determined by readingtypeandcodetogether, as their roles can differ across constraint types.
Valid Enum Values Reference
| Field | Valid Values |
|---|---|
serviceTiers | STANDARD, EXPEDITED (additional values may be available depending on marketplace) |
fulfillmentConfiguration.action | SHIP, HOLD |
fulfillmentConfiguration.policy | FILL_OR_KILL, FILL_ALL, FILL_ALL_AVAILABLE |
shipments (query param) | INCLUDE, EXCLUDE |
services.packaging.packagingOption | UNBRANDED, ANY |
services.packaging.overbox | REQUIRED, NOT_REQUIRED |
services.additional.blockAMZL | REQUIRED, NOT_REQUIRED |
lineItems[i].amount.value | Numeric string matching -?\d{1,38}(\.\d+)? |
perUnitDeclaredValue.currencyCode | 3-character uppercase ISO currency code (for example USD) matching [A-Z]{3} |
perUnitDeclaredValue.amount | Numeric 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 Status | Code | Retry? | Notes |
|---|---|---|---|
| 400 | Any | No | Fix the request and resubmit |
| 403 | Unauthorized | No | Verify credentials and permissions |
| 429 | QuotaExceeded | Yes | Rate limit exceeded. Back off and retry; respect x-amzn-RateLimit-Limit header. Refer to Fulfillment Outbound API Rate Limits. |
| 500 | InternalFailure | Yes | Use exponential backoff (recommended: start at 1s, max 30s) |
Updated about 9 hours ago

