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., INVALID_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": "INVALID_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., INVALID_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)Phase 1 code (deprecated)
1D-400PACKAGE_DIMENSIONS_NOT_CONFIGUREDPackage dimensions are not configured for this shipment. Please provide valid dimensions. (D-400)DIMENSIONS_NOT_CONFIGURED
2S-503NO_PICKUP_SLOTS_AVAILABLENo pickup slots available for the selected date. Please adjust pickup time or select a different date. (S-503)NoSlotsFound
3S-400NO_ELIGIBLE_PROMISENo shipping service meets the delivery promise for this shipment. Please adjust ship date or select a different service. (S-400)NoEligiblePromiseFound
4A-306NO_SERVICE_FOR_DESTINATIONNo shipping services available for the recipient address. Please verify the delivery address. (A-306)UnableToFindAnyMethods
5D-411PACKAGE_DIMENSIONS_EXCEED_LIMITPackage dimensions exceed the carrier's allowable limits. Please refer to API documentation for limits. (D-411)SPOT_DIMENSIONS_INVALID
6S-410NO_RATE_AVAILABLENo rate available for this shipment configuration. Please verify shipment details. (S-410)SPOT_NO_PRICE_FOUND
7S-301NO_COVERAGE_OR_VAS_UNAVAILABLENo coverage or requested value-added service is unavailable for this route. (S-301)NO_COVERAGE_OR_REQUESTED_VAS_UNAVAILABLE
8D-412PACKAGE_WEIGHT_EXCEEDS_LIMITPackage weight exceeds the carrier's allowable limit. Please reduce weight or split shipment. (D-412)SPOT_WEIGHT_INVALID
9A-406DESTINATION_COUNTRY_NOT_SUPPORTEDDestination country is not supported for shipping. Please verify the delivery address. (A-406)DESTINATION_COUNTRY_NOT_ALLOWED
10A-305ROUTE_NOT_FOUNDNo shipping route found for the recipient address. Please verify the delivery address. (A-305)ROUTE_NOT_FOUND
11S-200MISSES_DELIVERY_PROMISEDelivery promise cannot be met via Amazon Shipping. Please use a different carrier or adjust ship date. (S-200)MISSES_PROMISE
12S-502PICKUP_BEFORE_ACCOUNT_STARTPickup date is before the account's start date. Please select a later date. (S-502)PICKUP_SLOT_BEFORE_START_DATE

400 — Input Errors

#EECPhase 2 codePhase 2 messagePhase 2 details (unchanged from Phase 1)
1D-701INVALID_PACKAGE_REFERENCE_IDPackage client reference ID is invalid.Invalid packageClientReferenceId. Please refer to API documentation. (D-701)
2D-702INVALID_CURRENCY_CODECurrency code is invalid or not supported.Invalid currency code. Please refer to API documentation for supported currency codes. (D-702)
3D-703ITEMS_WEIGHT_EXCEEDS_PACKAGETotal items weight exceeds the declared package weight.Total items weight exceeds package weight. Please refer to API documentation for allowable limits. (D-703)
4D-704INVALID_SHIP_TO_ADDRESSDelivery address is invalid or incomplete.Invalid shipTo address. Please verify the address fields. (D-704)
5D-705INVALID_OR_EXPIRED_RATE_IDRate ID is invalid or has expired.Rate ID is invalid or expired. Please fetch a new rate. (D-705)
6D-505INVALID_SHIP_DATE_IN_PASTShip date is in the past.Ship date is in the past. Please select a future date. (D-505)
7D-504INVALID_SHIP_DATE_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-400INVALID_PACKAGE_DIMENSIONSPackage dimensions exceed allowable limits.Package dimensions exceed the allowable limits. Please refer to API documentation for allowable limits. (D-400)
9D-411PACKAGE_DIMENSIONS_EXCEED_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_EXCEEDS_CARRIER_LIMITPackage weight exceeds the carrier's limit.Package weight exceeds allowed limit. Please refer to API documentation for allowable limits. (D-412)
11S-302INCOMPATIBLE_VAS_COMBINATIONSelected 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-406INVALID_HS_CODEHS code is invalid or missing for this destination.Invalid HS code or no HS code provided. Please refer to API documentation. (S-406)
18S-407INVALID_ITEM_VALUEItem value is invalid or missing.Invalid Item value or no Item value provided. Please refer to API documentation. (S-407)
19S-408INVALID_ITEM_DESCRIPTIONItem 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)
1A-305ROUTE_NOT_FOUNDNo shipping route found for the recipient address.No shipping service for recipient address. Please verify address or contact support. (A-305)
2S-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)
1INVALID_PACKAGE_REFERENCE_IDPackage client reference ID is invalid.Invalid packageClientReferenceId. Please refer to API documentation. (D-701)
2INVALID_CURRENCY_CODECurrency code is invalid or not supported.Invalid currency code. Please refer to API documentation for supported currency codes. (D-702)
3ITEMS_WEIGHT_EXCEEDS_PACKAGETotal items weight exceeds the declared package weight.Total items weight exceeds package weight. Please refer to API documentation for allowable limits. (D-703)
4INVALID_SHIP_TO_ADDRESSDelivery address is invalid or incomplete.Invalid shipTo address. Please verify the address fields. (D-704)
5INVALID_OR_EXPIRED_RATE_IDRate ID is invalid or has expired.Rate ID is invalid or expired. Please fetch a new rate. (D-705)
6INVALID_SHIP_DATE_IN_PASTShip date is in the past.Ship date is in the past. Please select a future date. (D-505)
7INVALID_SHIP_DATE_IN_FUTUREShip date is too far in the future.Ship date is too far in the future. Please select a closer date. (D-504)
8INVALID_PACKAGE_DIMENSIONSPackage dimensions exceed allowable limits.Package dimensions exceed the allowable limits. Please refer to API documentation for allowable limits. (D-400)
9PACKAGE_DIMENSIONS_EXCEED_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_EXCEEDS_CARRIER_LIMITPackage weight exceeds the carrier's limit.Package weight exceeds allowed limit. Please refer to API documentation for allowable limits. (D-412)
11INCOMPATIBLE_VAS_COMBINATIONSelected 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)
16INVALID_HS_CODEHS code is invalid or missing for this destination.Invalid HS code or no HS code provided. Please refer to API documentation. (S-406)
17INVALID_ITEM_VALUEItem value is invalid or missing.Invalid Item value or no Item value provided. Please refer to API documentation. (S-407)
18INVALID_ITEM_DESCRIPTIONItem 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)
20UNRECOGNISED_SERVICE_IDUnrecognised 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)
4INVALID_INTEGRATOR_ACCOUNT_LINKAGEIntegrator-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 available for these shipment attributes. Please validate inputs. (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)
22NO_COVERAGE_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)
27RECIPIENT_BLOCKED_FOR_C_RETURNShipment cannot be processed — recipient ineligible.We apologize for the inconvenience. We are unable to process this shipment. (Code: S-701)
28SENDER_BLOCKED_FOR_C_RETURNShipment cannot be processed — sender ineligible.We apologize for the inconvenience. We are unable to process this shipment. (Code: S-702)
29SHIPPING_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)
30ACCOUNT_MISSINGAccount does not exist. Account does not exist. Please verify account or contact support. (A-105)
31INVALID_ACCOUNT_TYPEAccount type is invalid. Account type is invalid. Please verify account or contact support. (A-106)
32INVALID_ACCOUNT_RELATIONAccount type is invalid. Account type is invalid. Please verify account or contact support. (A-107)
33ACCOUNT_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)
1MISSING_UNIDUN number is a required field.UN number is a required field. (D-600)
2MISSING_HTRCTransportation regulatory class is a required field.HTRC/transportation regulatory class is a required field. (D-601)
3MISSING_PACKING_GROUPPacking group is required for the UN number provided.Packing group is required for the UN number provided. (D-602)
4MISSING_LIQUID_VOLUMELiquid volume is required for the UN number provided.Liquid Volume is required for the UN number provided. (D-603)
5MISSING_PACKAGE_WEIGHTPackage weight is required for hazmat shipments.Package weight is required for the UN number provided. (D-622)

DG — Impermissible Values (HTTP 400)

# Phase 2codePhase 2messagePhase 2 details
(New)
6IMPERMISSIBLE_UNIDUN number is not permissible with Amazon Shipping.This UN number is currently not permissible to ship through Amazon Shipping. (D-604)
7IMPERMISSIBLE_CLASSClass is not permissible with Amazon Shipping.This Class is currently not permissible to ship through Amazon Shipping. (D-605)
8IMPERMISSIBLE_PACKING_GROUPPacking group is not permissible with Amazon Shipping.This Packing Group is currently not permissible to ship through Amazon Shipping. (D-606)
9IMPERMISSIBLE_PACKING_INSTRUCTIONPacking instruction is not permissible with Amazon Shipping.This Packing Instruction is currently not permissible to ship through Amazon Shipping. (D-607)
10INVALID_LIQUID_VOLUME_UNITLiquid volume unit is invalid for this marketplace.Liquid volume must always be numerical and in the correct unit, please enter a valid value. (D-608)
11INVALID_PACKAGE_WEIGHT_UNITPackage weight unit is invalid for this marketplace.Package weight must be in a valid unit. (D-623)

DG — Invalid Combinations (HTTP 422)

# Phase 2codePhase 2messagePhase 2details
(New)
12INVALID_CLASS_2_1_OR_2_2For 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)
13INVALID_CLASS_2_2For this UN number, only Class 2.2 is accepted.For given UN Number, Amazon Shipping only accepts Class 2.2. (D-610)
14INVALID_CLASS_9For this UN number, only Class 9 is accepted.For given UN Number, Amazon Shipping only accepts Class 9. (D-611)
15INVALID_CLASS_3For this UN number, only Class 3 is accepted.For given UN Number, Amazon Shipping only accepts Class 3. (D-612)
16INVALID_MULTIPLE_PACKING_GROUPSFor 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)
17INVALID_PACKING_GROUP_IIIFor this UN number, only packing group III is accepted.For given UN Number, Amazon Shipping only accepts packaging group III. (D-614)
18INVALID_PACKING_GROUP_IIFor this UN number, only packing group II is accepted.For given UN Number, Amazon Shipping only accepts packaging group II. (D-615)
19INVALID_PACKING_GROUP_II_IIIFor 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)
20INVALID_PACKING_GROUP_II_III_NULLFor 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)
21EXCEEDED_VOLUME_LIMITQuantity exceeds permissible volume limit.Quantity exceeds permissible volume and is not permitted with Amazon Shipping. (D-618)
22INVALID_UN3481_PACKING_INSTRUCTIONInvalid packing instruction for UN3481.For UN3481, please enter correct packing instructions. (D-619)
23INVALID_UN3091_PACKING_INSTRUCTIONInvalid packing instruction for UN3091.For UN3091, please enter correct packing instructions. (D-620)
24EXCEEDED_WEIGHT_LIMITQuantity 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. All EEC identifiers (D-701, A-303, S-503, etc.) remain in the details field exactly as delivered in Phase 1.

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.

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

The EEC identifiers will continue to be present in the details field for the foreseeable future. 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. Any such change will be pre-announced with sufficient lead time. For now, both remain available and stable.

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

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

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

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

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

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