improved

Launch Announcement: Amazon Shipping Error Code Enhancement - Phase 2 (WW)

In September 2026, Amazon Shipping will introduce descriptive, text-based error codes in the code field and unique message values across GetRatesV2 and OneClickShipment APIs worldwide.

Summary

Phase 2 builds on the Phase 1 enhancement (May 2026) which standardised the details field. Phase 2 now enhances the code and message fields:

FieldPhase 1 (Current)Phase 2 (New)
codeGeneric values (InvalidInput, InternalFailure)Descriptive UPPER_SNAKE_CASE (e.g., CREDIT_LIMIT_ENFORCED)
messageGeneric text (Invalid input.)Unique per error scenario (e.g., Insufficient credit balance on the account.)
detailsActionable guidance + EECUnchanged — remains as delivered in Phase 1
APITotal Error CodesCode Field ImprovedNew Codes AddedHTTP Status Codes
GetRatesV234+All24 (DG) and 7 (Service Validations)200 (ineligibility), 400, 403, 500
OneClickShipment50+All24 (DG) + 7 (Service Validations)400, 403, 422, 500

What is Changing?

Phase 1 enhanced the details field with actionable messages and numeric identifiers (EECs). The code field remained generic (InvalidInput for all 4xx, InternalFailure for 5xx).

Phase 2 introduces:

  1. Descriptive code values — The code field now contains a self-describing UPPER_SNAKE_CASE identifier (e.g., SHIP_DATE_IN_PAST, NO_PICKUP_SLOTS_AVAILABLE). Developers can programmatically match on specific error scenarios without parsing the details string.

  2. Unique message per error — Each error returns a concise, factual description in the message field. This replaces the generic "Invalid input." text.

  3. details field unchanged — The actionable guidance and EEC suffix introduced in Phase 1 remain exactly as-is. No changes to details.

  4. New error codes added — 24 Dangerous Goods (DG) validation codes, 7 New service codes, and additional coverage scenarios.

Response Structure — Phase 2 (errors[x])

{
  "errors": [{
    "code": "SHIP_DATE_IN_PAST",
    "message": "Ship date is in the past.",
    "details": "Ship date is in the past. Please select a future date. (D-505)"
  }]
}

Response Structure — Phase 2 (GetRatesV2 Ineligibility)

{
  "payload": {
    "rates": [...],
    "ineligibleRates": [{
      "serviceId": "SWA-UK-PRIME-PREM",
      "serviceName": "Amazon Shipping One Day",
      "carrierId": "AMZN_UK",
      "carrierName": "Amazon Shipping",
      "ineligibilityReasons": [{
        "code": "NO_PICKUP_SLOTS_AVAILABLE",
        "message": "No pickup slots available for the selected date. Please adjust pickup time or select a different date. (S-503)"
      }]
    }]
  }
}

Note: For GetRatesV2 ineligibility reasons (HTTP 200), the schema remains two fields (code + message).
Only the code value changes from generic enum values (e.g., NoSlotsFound) to descriptive UPPER_SNAKE_CASE (e.g., NO_PICKUP_SLOTS_AVAILABLE).
The message field continues to carry actionable guidance + EEC suffix as delivered in Phase 1.

Which Marketplaces Are Affected?

This change applies to all marketplaces worldwide: US, UK, FR, IT, ES, IN.

Who is Affected?

Developers who integrate with the Amazon Shipping V2 API (GetRatesV2 and OneClickShipment) are affected. This is particularly relevant for applications that:

  • Match on the code field value for programmatic error routing (e.g., if code == "InvalidInput")
  • Display or log the message or details fields to end users or internal systems
  • Parse ineligibleRates[x].ineligibilityReasons[x].code for rate-shopping logic

What Action is Required?

Required (if matching on code):

  • If your integration matches on code == "InvalidInput" or code == "InternalFailure", you must update your logic before the deprecation period ends. Options:
    • Match on specific new codes (e.g., SHIP_DATE_IN_PAST)
    • Implement a fallback/wildcard pattern that handles unknown code values gracefully

Recommended:

  • Use the new descriptive code values for programmatic error routing and alerting
  • Update any logging or dashboards that reference the code field
  • Review the complete error code tables below for the full set of new values

Not Required:

  • No changes to details field parsing — it remains identical to Phase 1
  • No changes to authentication, endpoint URLs, or request payloads
  • The three-field response schema (code, message, details) remains the same

Fallback Template

  • When our error code mapping layer recognizes the error scenario → the response returns the descriptive Phase 2 code and message
  • When the error is not mapped in our layer (e.g., an edge case or new error) → the fallback template still applies, and the response will contain the generic fallback values
Scenariocode valuemessage value
Error mapped in Phase 2 layerDescriptive (e.g., CREDIT_LIMIT_ENFORCED)Unique per scenario
Error NOT mapped (Fallback Template)Generic (e.g., InvalidInput, InternalFailure)Generic text

Recommendation: Design your error handling to recognize specific Phase 2 codes, but always include a default/else branch for unrecognized code values. This ensures resilience against both unmapped errors and future code additions.

Error Code Reference — GetRatesV2 API

Endpoint: POST /shipping/v2/shipments/rates

200 — Ineligibility Reasons (Ineligible Rates)

These are returned within a successful HTTP 200 response as part of the ineligibleRates array. They indicate why a specific rate/service is not available.

#EECPhase 2 codemessage (unchanged from Phase 1)
1S-503NO_PICKUP_SLOTS_AVAILABLENo pickup slots available for the selected date. Please adjust pickup time or select a different date. (S-503)
2S-400NO_ELIGIBLE_PROMISENo shipping service meets the delivery promise for this shipment. Please adjust ship date or select a different service. (S-400)
3A-306NO_SERVICE_FOR_DESTINATIONNo shipping services available for the recipient address. Please verify the delivery address. (A-306)
4S-410NO_RATE_AVAILABLENo rate available for this shipment configuration. Please verify shipment details. (S-410)
5S-301COVERAGE_OR_VAS_UNAVAILABLENo coverage or requested value-added service is unavailable for this route. (S-301)
6A-406DESTINATION_COUNTRY_NOT_SUPPORTEDDestination country is not supported for shipping. Please verify the delivery address. (A-406)
7A-305ROUTE_NOT_FOUNDNo shipping route found for the recipient address. Please verify the delivery address. (A-305)
8S-200MISSES_DELIVERY_PROMISEDelivery promise cannot be met via Amazon Shipping. Please use a different carrier or adjust ship date. (S-200)
9S-502PICKUP_BEFORE_ACCOUNT_STARTPickup date is before the account's start date. Please select a later date. (S-502)

400 — Input Errors

#EECPhase 2 codePhase 2 messagePhase 2 details (unchanged from Phase 1)
1D-701PACKAGE_REFERENCE_ID_INVALIDPackage client reference ID is invalid.Invalid packageClientReferenceId. Please refer to API documentation. (D-701)
2D-702CURRENCY_CODE_INVALIDCurrency code is invalid or not supported.Invalid currency code. Please refer to API documentation for supported currency codes. (D-702)
3D-703ITEMS_WEIGHT_OVER_PACKAGE_WEIGHTTotal items weight exceeds the declared package weight.Total items weight exceeds package weight. Please refer to API documentation for allowable limits. (D-703)
4D-704SHIP_TO_ADDRESS_INVALIDDelivery address is invalid or incomplete.Invalid shipTo address. Please verify the address fields. (D-704)
5D-705RATE_ID_INVALID_OR_EXPIREDRate ID is invalid or has expired.Rate ID is invalid or expired. Please fetch a new rate. (D-705)
6D-505SHIP_DATE_IN_PASTShip date is in the past.Ship date is in the past. Please select a future date. (D-505)
7D-504SHIP_DATE_TOO_FAR_IN_FUTUREShip date is too far in the future.Ship date is too far in the future. Please select a closer date. (D-504)
8D-400PACKAGE_DIMENSIONS_INVALIDPackage dimensions exceed allowable limits.Package dimensions exceed the allowable limits. Please refer to API documentation for allowable limits. (D-400)
9D-411PACKAGE_DIMENSIONS_OVER_CARRIER_LIMITPackage dimensions exceed the carrier's limit.Package dimensions exceed allowed limits. Please refer to API documentation for allowable limits. (D-411)
10D-412PACKAGE_WEIGHT_OVER_CARRIER_LIMITPackage weight exceeds the carrier's limit.Package weight exceeds allowed limit. Please refer to API documentation for allowable limits. (D-412)
11S-302VAS_COMBINATION_INCOMPATIBLESelected value-added services are incompatible.Incompatible value-added services selected. Please cross check the VAS combinations and choose only one VAS per label. (S-302)
12S-304SHIPMENT_INELIGIBLE_FOR_VASShipment does not meet VAS eligibility criteria.Shipment does not meet VAS eligibility criteria. Please adjust shipment attributes or remove VAS. (S-304)
13S-404ACCOUNT_NOT_ENABLED_FOR_DGAccount is not onboarded for dangerous goods.Account not onboarded for dangerous goods. Please activate DG for your shipping account or contact support. (S-404)
14S-405DG_NOT_SUPPORTED_FOR_DESTINATIONDangerous goods not supported for this destination.Dangerous goods shipments are not supported for this destination address or postcode. (S-405)
15A-302PICKUP_ADDRESS_NOT_REGISTEREDPickup address is not registered.Pickup address not registered. Please register your address or contact your account manager or support. (A-302)
16A-900PICKUP_NOT_AVAILABLE_AT_LOCATIONPickup is not available at this address.Pickup not available at this address. Register the new warehouse address or use an available pickup address. (A-900)
17S-406HS_CODE_INVALID_OR_MISSINGHS code is invalid or missing.Invalid HS code or no HS code provided. Please refer to API documentation. (S-406)
18S-407ITEM_VALUE_INVALID_OR_MISSINGItem value is invalid or missing.Invalid Item value or no Item value provided. Please refer to API documentation. (S-407)
19S-408ITEM_DESCRIPTION_INVALID_OR_MISSINGItem description is invalid or missing.Invalid Item description or no Item description provided. Please refer to API documentation. (S-408)
20S-700SHIPMENT_CANNOT_BE_PROCESSEDShipment cannot be processed at this time.We apologize for the inconvenience. We are unable to process this shipment. (Code: S-700)
21D-711SERVICE_ID_NOT_AVAILABLEService id is not available for use in service selection.Service Id is not available for use in serviceSelection. Please verify the service Id is supported for this API. (D-711)

403 — Authentication Errors

#EECPhase 2 codePhase 2 messagePhase 2 details (unchanged from Phase 1)
1A-101ACCESS_DENIEDAccess denied for this account.Access denied for this account. Please contact support. (A-101)

500 — Server-Side Errors

#EECPhase 2 codePhase 2 messagePhase 2 details (unchanged from Phase 1)
1S-900INTERNAL_SERVICE_ERRORAn internal service error occurred.Internal service error. Please contact support for assistance. (S-900)

Error Code Reference — OneClickShipment API

Endpoint: POST /shipping/v2/oneClickShipment

Response Structure — Phase 2

{
  "errors": [{
    "code": "CREDIT_LIMIT_ENFORCED",
    "message": "Insufficient credit balance on the account.",
    "details": "Insufficient credit balance. Please add funds to your account or contact your account manager or support. (A-303)"
  }]
}

400 — Input Errors

# Phase 2codePhase 2messagePhase 2 details
(unchanged from Phase 1)
1PACKAGE_REFERENCE_ID_INVALIDPackage client reference ID is invalid.Invalid packageClientReferenceId. Please refer to API documentation. (D-701)
2CURRENCY_CODE_INVALIDCurrency code is invalid or not supported.Invalid currency code. Please refer to API documentation for supported currency codes. (D-702)
3ITEMS_WEIGHT_OVER_PACKAGE_WEIGHTTotal items weight exceeds the declared package weight.Total items weight exceeds package weight. Please refer to API documentation for allowable limits. (D-703)
4SHIP_TO_ADDRESS_INVALIDDelivery address is invalid or incomplete.Invalid shipTo address. Please verify the address fields. (D-704)
5RATE_ID_INVALID_OR_EXPIREDRate ID is invalid or has expired.Rate ID is invalid or expired. Please fetch a new rate. (D-705)
6SHIP_DATE_IN_PASTShip date is in the past.Ship date is in the past. Please select a future date. (D-505)
7SHIP_DATE_TOO_FAR_IN_FUTUREShip date is too far in the future.Ship date is too far in the future. Please select a closer date. (D-504)
8PACKAGE_DIMENSIONS_INVALIDPackage dimensions exceed allowable limits.Package dimensions exceed the allowable limits. Please refer to API documentation for allowable limits. (D-400)
9PACKAGE_DIMENSIONS_OVER_CARRIER_LIMITPackage dimensions exceed the carrier's limit.Package dimensions exceed allowed limits. Please refer to API documentation for allowable limits. (D-411)
10PACKAGE_WEIGHT_OVER_CARRIER_LIMITPackage weight exceeds the carrier's limit.Package weight exceeds allowed limit. Please refer to API documentation for allowable limits. (D-412)
11VAS_COMBINATION_INCOMPATIBLESelected value-added services are incompatible.Incompatible value-added services selected. Please cross check the VAS combinations and choose only one VAS per label. (S-302)
12SHIPMENT_INELIGIBLE_FOR_VASShipment does not meet VAS eligibility criteria.Shipment does not meet VAS eligibility criteria. Please adjust shipment attributes or remove VAS. (S-304)
13ACCOUNT_NOT_ENABLED_FOR_DGAccount is not onboarded for dangerous goods.Account not onboarded for dangerous goods. Please activate DG for your shipping account or contact support. (S-404)
14PICKUP_ADDRESS_NOT_REGISTEREDPickup address is not registered.Pickup address not registered. Please register your address or contact your account manager or support. (A-302)
15PICKUP_NOT_AVAILABLE_AT_LOCATIONPickup is not available at this address.Pickup not available at this address. Register the new warehouse address or use an available pickup address. (A-900)
16HS_CODE_INVALID_OR_MISSINGHS code is invalid or missing for this destination.Invalid HS code or no HS code provided. Please refer to API documentation. (S-406)
17ITEM_VALUE_INVALID_OR_MISSINGItem value is invalid or missing.Invalid Item value or no Item value provided. Please refer to API documentation. (S-407)
18ITEM_DESCRIPTION_INVALID_OR_MISSINGItem description is invalid or missing.Invalid Item description or no Item description provided. Please refer to API documentation. (S-408)
19SHIPMENT_CANNOT_BE_PROCESSEDShipment cannot be processed at this time.We apologize for the inconvenience. We are unable to process this shipment. (Code: S-700)
20SERVICE_ID_UNRECOGNISEDUnrecognised serviceId in serviceSelection.Unrecognised serviceId in serviceSelection. Please check the serviceId value and retry. (D-710)
21SERVICE_ID_NOT_AVAILABLEService id is not available for use in service selection.Service Id is not available for use in serviceSelection. Please verify the service Id is supported for this API. (D-711)

403 — Authentication Errors

# Phase 2codePhase 2messagePhase 2 details
(unchanged from Phase 1)
1ACCESS_DENIEDAccess denied for this account.Access denied for this account. Please contact support. (A-101)

422 — Valid Syntax, Unprocessable

# Phase 2codePhase 2messagePhase 2 details
(unchanged from Phase 1)
1VAS_NOT_AVAILABLE_IN_REGIONRequested VAS is not available in this region.Requested VAS not available in this region. Please remove VAS. (S-303)
2ACCOUNT_NOT_ACTIVE_FOR_MFNAccount is not active for MFN shipments.Account not active for MFN shipments. Please complete MFN onboarding or contact support. (A-102)
3ACCOUNT_NOT_ACTIVE_FOR_OFF_AMAZONAccount is not active for Off-Amazon shipments.Account not active for OFF-Amazon shipments. Please complete OFF-Amazon onboarding or contact support. (A-103)
4INTEGRATOR_ACCOUNT_LINKAGE_INVALIDIntegrator-shipper account relationship is invalid.Invalid integrator-shipper account relationship. Please verify account setup or contact support. (S-600)
5APPLICATION_NOT_CONFIGURED_FOR_PICKUPApplication is not configured for pickup scheduling.Application not configured for pickups. Please contact support to complete setup. (S-601)
6PICKUP_BEFORE_ACCOUNT_STARTPickup date is before the account's start date.Pickup date is before your account's start date. Please select a later pickup date or contact support. (S-502)
7ACCOUNT_PAUSEDAccount is currently paused.Account is paused. Please wait for pause period to end or contact support to resume. (S-501)
8ACCOUNT_SUSPENDEDAccount is suspended.Account is suspended. Please visit Amazon Shipping website for account status or contact support. (S-500)
9PICKUP_ADDRESS_MISMATCHPickup address does not match the registered address.Pickup address does not match registered address. Please verify your pickup address or contact your account manager. (A-301)
10CREDIT_LIMIT_ENFORCEDInsufficient credit balance on the account.Insufficient credit balance. Please add funds to your account or contact your account manager or support. (A-303)
11ACCOUNT_NOT_AUTHORIZED_FOR_SHIPMENT_TYPEAccount is not authorized for this shipment type.Account not authorized for this shipment type. Please contact support to update permissions. (A-500)
12ACCOUNT_NOT_AUTHORIZED_FOR_CREDIT_INVOICINGAccount is not authorized for credit-based invoicing.Account not authorized for credit-based invoicing. Please review payment preferences or contact support. (A-600)
13ACCOUNT_NOT_ACTIVEAccount is not active or not fully onboarded.Account not active or not fully onboarded. Please check account status or contact support. (A-700)
14ACCOUNT_OFFBOARDEDAccount has been offboarded.Account has been offboarded. Please re-onboard or contact support to restore access. (A-104)
15PICKUP_ADDRESS_NOT_REGISTERED_WITH_SYSTEMPickup address is not registered in the system.Pickup address not registered with us. Please register your address or contact your account manager or support. (A-304)
16ORIGIN_POSTAL_CODE_NOT_SUPPORTEDOrigin postal code is outside the pickup service area.Origin postal code outside pickup service area. Please use a supported location or contact support. (A-800)
17NO_RATE_AVAILABLENo rate available for this shipment configuration.No rate available for this shipment. Service may expand. Please retry later or use a different carrier. (S-410)
18NO_PICKUP_SLOTS_AVAILABLENo pickup slots available for the requested time.No pickup slots available. Please adjust pickup time. (S-503)
19MISSES_DELIVERY_PROMISEDelivery promise cannot be met via Amazon Shipping.Cannot meet delivery promise via Amazon Shipping. Please use a different carrier for this order. (S-200)
20NO_ELIGIBLE_PROMISENo shipping service meets the delivery promise.No shipping service meets the delivery promise for this shipment. Please adjust ship date or select a different service. (S-400)
21NO_SERVICE_FOR_DESTINATIONNo shipping services available for the recipient address.No shipping services available for recipient address. Please verify address or contact support. (A-306)
22COVERAGE_OR_VAS_UNAVAILABLENo coverage or requested VAS is unavailable.No coverage or requested VAS unavailable. Please remove VAS. (S-301)
23ROUTE_NOT_FOUNDNo shipping route found for the recipient address.No shipping service for recipient address. Please verify address or contact support. (A-305)
24DESTINATION_COUNTRY_NOT_SUPPORTEDDestination country is not supported for shipping.Destination country not supported. Please check API documentation for supported countries or contact support. (A-406)
25DG_NOT_SUPPORTED_FOR_DESTINATIONDangerous goods not supported for this destination.Dangerous goods shipments are not supported for this destination address or postcode. (S-405)
26DG_NOT_SUPPORTED_FOR_C_RETURNDangerous goods not supported for C-Return shipments.Dangerous goods shipments are not supported for Customer Return shipments. (S-409)
27SHIPMENT_CANNOT_BE_PROCESSEDShipment cannot be processed at this time.We apologize for the inconvenience. We are unable to process this shipment. (Code: S-700)
28SHIPPING_ZONE_NOT_CONFIGUREDShipping zone not configured for this origin-destination pair.Shipping zone not configured for this origin and destination postal code combination. (A-307)
29ACCOUNT_MISSINGAccount does not exist. Account does not exist. Please verify account or contact support. (A-105)
30ACCOUNT_TYPE_INVALIDAccount type is invalid. Account type is invalid. Please verify account or contact support. (A-106)
31ACCOUNT_RELATION_INVALIDAccount type is invalid. Account type is invalid. Please verify account or contact support. (A-107)
32ACCOUNT_OFFERING_SUSPENDEDAccount is not supported for offerings. Account is not supported for offerings. Please verify account or contact support. (A-108)

500 — Server-Side Errors

# Phase 2codePhase 2messagePhase 2 details
(unchanged from Phase 1)
1ROUTE_NOT_FOUNDNo shipping route found for the recipient address.No shipping service for recipient address. Please verify address or contact support. (A-305)
2INTERNAL_SERVICE_ERRORAn internal service error occurred.Internal service error. Please contact support for assistance. (S-900)

New Error Codes — Dangerous Goods (DG) Validation

The following 24 error codes are new additions in Phase 2, providing granular validation for Dangerous Goods shipment attributes. These apply to both GetRatesV2 and OneClickShipment.

DG — Missing Required Fields (HTTP 400)

# Phase 2codePhase 2messagePhase 2 details
(New)
1UN_NUMBER_MISSINGUN number is a required field.UN number is a required field. (D-600)
2TRANSPORT_REGULATORY_CLASS_MISSINGTransportation regulatory class is a required field.HTRC/transportation regulatory class is a required field. (D-601)
3PACKING_GROUP_MISSINGPacking group is required for the UN number provided.Packing group is required for the UN number provided. (D-602)
4LIQUID_VOLUME_MISSINGLiquid volume is required for the UN number provided.Liquid Volume is required for the UN number provided. (D-603)
5PACKAGE_WEIGHT_MISSINGPackage weight is required for the UN number provided.Package weight is required for the UN number provided. (D-622)

DG — Impermissible Values (HTTP 400)

# Phase 2codePhase 2messagePhase 2 details
(New)
6UN_NUMBER_NOT_PERMITTEDUN number is not permissible with Amazon Shipping.This UN number is currently not permissible to ship through Amazon Shipping. (D-604)
7DG_CLASS_NOT_PERMITTEDClass is not permissible with Amazon Shipping.This Class is currently not permissible to ship through Amazon Shipping. (D-605)
8PACKING_GROUP_NOT_PERMITTEDPacking group is not permissible with Amazon Shipping.This Packing Group is currently not permissible to ship through Amazon Shipping. (D-606)
9PACKING_INSTRUCTION_NOT_PERMITTEDPacking instruction is not permissible with Amazon Shipping.This Packing Instruction is currently not permissible to ship through Amazon Shipping. (D-607)
10LIQUID_VOLUME_UNIT_INVALIDLiquid volume must be numeric and in a valid unit.Liquid volume must always be numerical and in the correct unit, please enter a valid value. (D-608)
11PACKAGE_WEIGHT_UNIT_INVALIDPackage weight unit is invalid.Package weight must be in a valid unit. (D-623)

DG — Invalid Combinations (HTTP 422)

# Phase 2codePhase 2messagePhase 2details
(New)
12CLASS_2_1_OR_2_2_NOT_ACCEPTEDFor this UN number, only Class 2.1 or 2.2 is accepted.For given UN Number, Amazon Shipping only accepts Class 2.1 or 2.2. (D-609)
13CLASS_2_2_NOT_ACCEPTEDFor this UN number, only Class 2.2 is accepted.For given UN Number, Amazon Shipping only accepts Class 2.2. (D-610)
14CLASS_9_NOT_ACCEPTEDFor this UN number, only Class 9 is accepted.For given UN Number, Amazon Shipping only accepts Class 9. (D-611)
15CLASS_3_NOT_ACCEPTEDFor this UN number, only Class 3 is accepted.For given UN Number, Amazon Shipping only accepts Class 3. (D-612)
16MULTIPLE_PACKING_GROUPS_NOT_ACCEPTEDFor this UN number, only packing groups I, II, and III are accepted.For given UN Number, Amazon Shipping only accepts packaging groups I, II and III. (D-613)
17PACKING_GROUP_III_NOT_ACCEPTEDFor this UN number, only packing group III is accepted.For given UN Number, Amazon Shipping only accepts packaging group III. (D-614)
18PACKING_GROUP_II_NOT_ACCEPTEDFor this UN number, only packing group II is accepted.For given UN Number, Amazon Shipping only accepts packaging group II. (D-615)
19PACKING_GROUP_II_III_NOT_ACCEPTEDFor this UN number, only packing groups II and III are accepted.For given UN Number, Amazon Shipping only accepts packaging groups II and III. (D-616)
20PACKING_GROUP_II_III_OR_NONE_NOT_ACCEPTEDFor this UN number, packing groups II, III, or none are accepted.For given UN Number, Amazon Shipping only accepts packaging groups II, III, or no packing group. (D-617)
21VOLUME_LIMIT_EXCEEDEDQuantity exceeds permissible volume limit.Quantity exceeds permissible volume and is not permitted with Amazon Shipping. (D-618)
22UN3481_PACKING_INSTRUCTION_INVALIDInvalid packing instruction for UN3481.For UN3481, please enter correct packing instructions. (D-619)
23UN3091_PACKING_INSTRUCTION_INVALIDInvalid packing instruction for UN3091.For UN3091, please enter correct packing instructions. (D-620)
24WEIGHT_LIMIT_EXCEEDEDQuantity exceeds permissible weight limit.Quantity exceeds permissible weight and is not permitted with Amazon Shipping. (D-621)

Transition Period

  • 60-days pre-announcement before activation backwards compatibility
  • During transition, the fallback template may still return generic error values for any unmapped scenarios
  • After full rollout, all mapped error scenarios will return Phase 2 descriptive codes

Multi-Error Response Behavior

The multi-error behavior documented in Phase 1 remains unchanged. When a single request triggers multiple errors:

Error CombinationHTTP Status ReturnedGuidance
400 + 422400Fix input errors first. 422 issues surface on retry.
400 + 422 + 500400Fix input errors first. Remaining issues surface sequentially.
422 + 500422Resolve account/config issues first.
500 only500Retry or contact support.

The errors array contains all applicable error codes with their new descriptive Phase 2 code values. The HTTP status of the response reflects the highest-priority error.

FAQs

1. Is this a breaking change?
The schema structure (code, message, details) remains unchanged. However, the values in code and message change. If your integration matches on code == "InvalidInput", you must update your logic. If you only parse details for identifiers, no change is needed.

2. Will InvalidInput and InternalFailure stop appearing entirely?
Not immediately. This will still surface as a fallback for any error scenario not yet mapped in our Phase 2 layer. Over time, coverage will expand and generic values will become increasingly rare.

3. Can I still rely on the details field and EEC identifiers from Phase 1?
Yes — the details field is completely unchanged, and all EEC identifiers (D-701, A-303, S-503, etc.) remain in the details field exactly as delivered in Phase 1. However, the EEC suffix in details is planned for deprecation in a future release. Existing integrations continue to work today, but you should not build new logic that depends on the EEC in details — use the descriptive code field for programmatic matching going forward.

4. What's the relationship between the code field and the EEC in details?
They represent the same error scenario. The code field is a human-readable UPPER_SNAKE_CASE identifier for programmatic matching. The EEC (e.g., D-701) in the details field is a compact numeric identifier for support triage and dashboards. Both are unique per error condition. Going forward, the code field is the recommended identifier for programmatic use — the EEC in details is planned for deprecation, so do not take a new dependency on it.

5. Will the EEC identifiers (e.g., D-701, A-303) in the details field remain long-term?

No — the EEC identifiers in the details field are planned for deprecation. As the descriptive code field matures and becomes the primary identifier for programmatic use, we anticipate simplifying the details field in a future release to focus solely on actionable guidance — without the numeric suffix. New integrations should depend on the code field, not the EEC in details. Existing dependencies on the EEC will continue to work for now, and any removal will be pre-announced with sufficient lead time — but no new dependency on the EEC should be taken.

6. Are the same code values used across both GetRatesV2 and OneClickShipment?
Yes. When the same error scenario occurs in both APIs, the code value is identical (e.g., NO_PICKUP_SLOTS_AVAILABLE appears in both GetRatesV2 ineligibility and OneClick 422). The difference is the HTTP status and response path.

7. How should I handle a coverage or routing error (e.g., ROUTE_NOT_FOUND) and how do I fail over to another carrier?
Match on the top-level code value, not on the message text or any legacy token in the details field. Message text and legacy (A-xxx)/(S-xxx) tokens may change; the code value is the stable contract.

Retry first. Coverage and routing errors can reflect a transient planning condition. Retry the getRates/oneClickShipment call before taking any failover action.

If the retry still returns a coverage/routing code, fail over to your alternate carrier. These codes indicate Amazon Shipping cannot serve the destination, so the parcel should be routed to a third-party carrier in your integration:

codeMeaning
ROUTE_NOT_FOUNDNo serviceable route to the recipient address
NO_SERVICE_FOR_DESTINATIONNo services available for the recipient address
DESTINATION_COUNTRY_NOT_SUPPORTEDDestination country not supported
NO_ELIGIBLE_PROMISENo service meets the delivery promise
MISSES_DELIVERY_PROMISEThe delivery promise cannot be met via Amazon Shipping

Do not treat every error as no-coverage. Errors outside the coverage family (for example, input-validation or pickup-configuration errors) are not failover signals. Note: If a getRates/oneClickShipment call returns a coverage code you believe is incorrect for a serviceable destination, share the request and timestamp with your Amazon Shipping contact.

8. How should I handle unrecognised code values?
Always include a default/fallback branch in your error-handling logic. New codes may be added over time, and the fallback template may still return generic values for unmapped scenarios. Match on the code field for programmatic routing — do not take a new dependency on the EEC in details, as it is planned for deprecation.

9. Does this affect GetRatesV2 ineligibility message values?
For GetRatesV2 ineligibility reasons (HTTP 200), the message field remains unchanged — it continues to carry actionable guidance + EEC suffix as delivered in Phase 1. Only the code value changes.

10. Does this affect the details field for 4xx/5xx errors?
No. The details field remains exactly as delivered in Phase 1 across all HTTP error responses.

11. Will PurchaseShipment also receive Phase 2 codes?
Yes. PurchaseShipment shares the same response template as OneClickShipment. The D-705 (RATE_ID_INVALID_OR_EXPIRED) code already documented in Phase 1 will also receive the Phase 2 descriptive code treatment.

12. What about the new DG error codes (D-600 to D-623)?
These are net-new codes introduced alongside Phase 2. They apply to shippers onboarded for Dangerous Goods who submit invalid hazmat attributes. They were not present in Phase 1.

13. I'm a 3P integrator — do I need to update my platform?
Yes. If your platform matches on code values for error routing, you must update to recognise the new descriptive codes. If you only log or display the details field, no change is needed.

14. Will new error codes be added over time, and will every addition be announced?
Yes. Adding new error code values is an ongoing process as coverage expands, and not every addition will carry a standalone announcement. Always implement a default/fallback branch so newly added codes never break your integration.