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:
| Field | Phase 1 (Current) | Phase 2 (New) |
|---|---|---|
code | Generic values (InvalidInput, InternalFailure) | Descriptive UPPER_SNAKE_CASE (e.g., CREDIT_LIMIT_ENFORCED) |
message | Generic text (Invalid input.) | Unique per error scenario (e.g., Insufficient credit balance on the account.) |
details | Actionable guidance + EEC | Unchanged — remains as delivered in Phase 1 |
| API | Total Error Codes | Code Field Improved | New Codes Added | HTTP Status Codes |
|---|---|---|---|---|
| GetRatesV2 | 34+ | All | 24 (DG) and 7 (Service Validations) | 200 (ineligibility), 400, 403, 500 |
| OneClickShipment | 50+ | All | 24 (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:
-
Descriptive
codevalues — Thecodefield 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 thedetailsstring. -
Unique
messageper error — Each error returns a concise, factual description in themessagefield. This replaces the generic "Invalid input." text. -
detailsfield unchanged — The actionable guidance and EEC suffix introduced in Phase 1 remain exactly as-is. No changes todetails. -
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 thecodevalue changes from generic enum values (e.g.,NoSlotsFound) to descriptive UPPER_SNAKE_CASE (e.g.,NO_PICKUP_SLOTS_AVAILABLE).
Themessagefield 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
codefield value for programmatic error routing (e.g.,if code == "InvalidInput") - Display or log the
messageordetailsfields to end users or internal systems - Parse
ineligibleRates[x].ineligibilityReasons[x].codefor rate-shopping logic
What Action is Required?
Required (if matching on code):
- If your integration matches on
code == "InvalidInput"orcode == "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
- Match on specific new codes (e.g.,
Recommended:
- Use the new descriptive
codevalues for programmatic error routing and alerting - Update any logging or dashboards that reference the
codefield - Review the complete error code tables below for the full set of new values
Not Required:
- No changes to
detailsfield 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
| Scenario | code value | message value |
|---|---|---|
| Error mapped in Phase 2 layer | Descriptive (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.
| # | EEC | Phase 2 code | message (unchanged from Phase 1) | Phase 1 code (deprecated) |
|---|---|---|---|---|
| 1 | D-400 | PACKAGE_DIMENSIONS_NOT_CONFIGURED | Package dimensions are not configured for this shipment. Please provide valid dimensions. (D-400) | DIMENSIONS_NOT_CONFIGURED |
| 2 | S-503 | NO_PICKUP_SLOTS_AVAILABLE | No pickup slots available for the selected date. Please adjust pickup time or select a different date. (S-503) | NoSlotsFound |
| 3 | S-400 | NO_ELIGIBLE_PROMISE | No shipping service meets the delivery promise for this shipment. Please adjust ship date or select a different service. (S-400) | NoEligiblePromiseFound |
| 4 | A-306 | NO_SERVICE_FOR_DESTINATION | No shipping services available for the recipient address. Please verify the delivery address. (A-306) | UnableToFindAnyMethods |
| 5 | D-411 | PACKAGE_DIMENSIONS_EXCEED_LIMIT | Package dimensions exceed the carrier's allowable limits. Please refer to API documentation for limits. (D-411) | SPOT_DIMENSIONS_INVALID |
| 6 | S-410 | NO_RATE_AVAILABLE | No rate available for this shipment configuration. Please verify shipment details. (S-410) | SPOT_NO_PRICE_FOUND |
| 7 | S-301 | NO_COVERAGE_OR_VAS_UNAVAILABLE | No coverage or requested value-added service is unavailable for this route. (S-301) | NO_COVERAGE_OR_REQUESTED_VAS_UNAVAILABLE |
| 8 | D-412 | PACKAGE_WEIGHT_EXCEEDS_LIMIT | Package weight exceeds the carrier's allowable limit. Please reduce weight or split shipment. (D-412) | SPOT_WEIGHT_INVALID |
| 9 | A-406 | DESTINATION_COUNTRY_NOT_SUPPORTED | Destination country is not supported for shipping. Please verify the delivery address. (A-406) | DESTINATION_COUNTRY_NOT_ALLOWED |
| 10 | A-305 | ROUTE_NOT_FOUND | No shipping route found for the recipient address. Please verify the delivery address. (A-305) | ROUTE_NOT_FOUND |
| 11 | S-200 | MISSES_DELIVERY_PROMISE | Delivery promise cannot be met via Amazon Shipping. Please use a different carrier or adjust ship date. (S-200) | MISSES_PROMISE |
| 12 | S-502 | PICKUP_BEFORE_ACCOUNT_START | Pickup date is before the account's start date. Please select a later date. (S-502) | PICKUP_SLOT_BEFORE_START_DATE |
400 — Input Errors
| # | EEC | Phase 2 code | Phase 2 message | Phase 2 details (unchanged from Phase 1) |
|---|---|---|---|---|
| 1 | D-701 | INVALID_PACKAGE_REFERENCE_ID | Package client reference ID is invalid. | Invalid packageClientReferenceId. Please refer to API documentation. (D-701) |
| 2 | D-702 | INVALID_CURRENCY_CODE | Currency code is invalid or not supported. | Invalid currency code. Please refer to API documentation for supported currency codes. (D-702) |
| 3 | D-703 | ITEMS_WEIGHT_EXCEEDS_PACKAGE | Total items weight exceeds the declared package weight. | Total items weight exceeds package weight. Please refer to API documentation for allowable limits. (D-703) |
| 4 | D-704 | INVALID_SHIP_TO_ADDRESS | Delivery address is invalid or incomplete. | Invalid shipTo address. Please verify the address fields. (D-704) |
| 5 | D-705 | INVALID_OR_EXPIRED_RATE_ID | Rate ID is invalid or has expired. | Rate ID is invalid or expired. Please fetch a new rate. (D-705) |
| 6 | D-505 | INVALID_SHIP_DATE_IN_PAST | Ship date is in the past. | Ship date is in the past. Please select a future date. (D-505) |
| 7 | D-504 | INVALID_SHIP_DATE_IN_FUTURE | Ship date is too far in the future. | Ship date is too far in the future. Please select a closer date. (D-504) |
| 8 | D-400 | INVALID_PACKAGE_DIMENSIONS | Package dimensions exceed allowable limits. | Package dimensions exceed the allowable limits. Please refer to API documentation for allowable limits. (D-400) |
| 9 | D-411 | PACKAGE_DIMENSIONS_EXCEED_CARRIER_LIMIT | Package dimensions exceed the carrier's limit. | Package dimensions exceed allowed limits. Please refer to API documentation for allowable limits. (D-411) |
| 10 | D-412 | PACKAGE_WEIGHT_EXCEEDS_CARRIER_LIMIT | Package weight exceeds the carrier's limit. | Package weight exceeds allowed limit. Please refer to API documentation for allowable limits. (D-412) |
| 11 | S-302 | INCOMPATIBLE_VAS_COMBINATION | Selected 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) |
| 12 | S-304 | SHIPMENT_INELIGIBLE_FOR_VAS | Shipment does not meet VAS eligibility criteria. | Shipment does not meet VAS eligibility criteria. Please adjust shipment attributes or remove VAS. (S-304) |
| 13 | S-404 | ACCOUNT_NOT_ENABLED_FOR_DG | Account is not onboarded for dangerous goods. | Account not onboarded for dangerous goods. Please activate DG for your shipping account or contact support. (S-404) |
| 14 | S-405 | DG_NOT_SUPPORTED_FOR_DESTINATION | Dangerous goods not supported for this destination. | Dangerous goods shipments are not supported for this destination address or postcode. (S-405) |
| 15 | A-302 | PICKUP_ADDRESS_NOT_REGISTERED | Pickup address is not registered. | Pickup address not registered. Please register your address or contact your account manager or support. (A-302) |
| 16 | A-900 | PICKUP_NOT_AVAILABLE_AT_LOCATION | Pickup 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) |
| 17 | S-406 | INVALID_HS_CODE | HS code is invalid or missing for this destination. | Invalid HS code or no HS code provided. Please refer to API documentation. (S-406) |
| 18 | S-407 | INVALID_ITEM_VALUE | Item value is invalid or missing. | Invalid Item value or no Item value provided. Please refer to API documentation. (S-407) |
| 19 | S-408 | INVALID_ITEM_DESCRIPTION | Item description is invalid or missing. | Invalid Item description or no Item description provided. Please refer to API documentation. (S-408) |
| 20 | S-700 | SHIPMENT_CANNOT_BE_PROCESSED | Shipment cannot be processed at this time. | We apologize for the inconvenience. We are unable to process this shipment. (Code: S-700) |
| 21 | D-711 | SERVICE_ID_NOT_AVAILABLE | Service 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
| # | EEC | Phase 2 code | Phase 2 message | Phase 2 details (unchanged from Phase 1) |
|---|---|---|---|---|
| 1 | A-101 | ACCESS_DENIED | Access denied for this account. | Access denied for this account. Please contact support. (A-101) |
500 — Server-Side Errors
| # | EEC | Phase 2 code | Phase 2 message | Phase 2 details (unchanged from Phase 1) |
|---|---|---|---|---|
| 1 | A-305 | ROUTE_NOT_FOUND | No shipping route found for the recipient address. | No shipping service for recipient address. Please verify address or contact support. (A-305) |
| 2 | S-900 | INTERNAL_SERVICE_ERROR | An 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 2code | Phase 2message | Phase 2 details(unchanged from Phase 1) |
|---|---|---|---|
| 1 | INVALID_PACKAGE_REFERENCE_ID | Package client reference ID is invalid. | Invalid packageClientReferenceId. Please refer to API documentation. (D-701) |
| 2 | INVALID_CURRENCY_CODE | Currency code is invalid or not supported. | Invalid currency code. Please refer to API documentation for supported currency codes. (D-702) |
| 3 | ITEMS_WEIGHT_EXCEEDS_PACKAGE | Total items weight exceeds the declared package weight. | Total items weight exceeds package weight. Please refer to API documentation for allowable limits. (D-703) |
| 4 | INVALID_SHIP_TO_ADDRESS | Delivery address is invalid or incomplete. | Invalid shipTo address. Please verify the address fields. (D-704) |
| 5 | INVALID_OR_EXPIRED_RATE_ID | Rate ID is invalid or has expired. | Rate ID is invalid or expired. Please fetch a new rate. (D-705) |
| 6 | INVALID_SHIP_DATE_IN_PAST | Ship date is in the past. | Ship date is in the past. Please select a future date. (D-505) |
| 7 | INVALID_SHIP_DATE_IN_FUTURE | Ship date is too far in the future. | Ship date is too far in the future. Please select a closer date. (D-504) |
| 8 | INVALID_PACKAGE_DIMENSIONS | Package dimensions exceed allowable limits. | Package dimensions exceed the allowable limits. Please refer to API documentation for allowable limits. (D-400) |
| 9 | PACKAGE_DIMENSIONS_EXCEED_CARRIER_LIMIT | Package dimensions exceed the carrier's limit. | Package dimensions exceed allowed limits. Please refer to API documentation for allowable limits. (D-411) |
| 10 | PACKAGE_WEIGHT_EXCEEDS_CARRIER_LIMIT | Package weight exceeds the carrier's limit. | Package weight exceeds allowed limit. Please refer to API documentation for allowable limits. (D-412) |
| 11 | INCOMPATIBLE_VAS_COMBINATION | Selected 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) |
| 12 | SHIPMENT_INELIGIBLE_FOR_VAS | Shipment does not meet VAS eligibility criteria. | Shipment does not meet VAS eligibility criteria. Please adjust shipment attributes or remove VAS. (S-304) |
| 13 | ACCOUNT_NOT_ENABLED_FOR_DG | Account is not onboarded for dangerous goods. | Account not onboarded for dangerous goods. Please activate DG for your shipping account or contact support. (S-404) |
| 14 | PICKUP_ADDRESS_NOT_REGISTERED | Pickup address is not registered. | Pickup address not registered. Please register your address or contact your account manager or support. (A-302) |
| 15 | PICKUP_NOT_AVAILABLE_AT_LOCATION | Pickup 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) |
| 16 | INVALID_HS_CODE | HS code is invalid or missing for this destination. | Invalid HS code or no HS code provided. Please refer to API documentation. (S-406) |
| 17 | INVALID_ITEM_VALUE | Item value is invalid or missing. | Invalid Item value or no Item value provided. Please refer to API documentation. (S-407) |
| 18 | INVALID_ITEM_DESCRIPTION | Item description is invalid or missing. | Invalid Item description or no Item description provided. Please refer to API documentation. (S-408) |
| 19 | SHIPMENT_CANNOT_BE_PROCESSED | Shipment cannot be processed at this time. | We apologize for the inconvenience. We are unable to process this shipment. (Code: S-700) |
| 20 | UNRECOGNISED_SERVICE_ID | Unrecognised serviceId in serviceSelection. | Unrecognised serviceId in serviceSelection. Please check the serviceId value and retry. (D-710) |
| 21 | SERVICE_ID_NOT_AVAILABLE | Service 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 2code | Phase 2message | Phase 2 details(unchanged from Phase 1) |
|---|---|---|---|
| 1 | ACCESS_DENIED | Access denied for this account. | Access denied for this account. Please contact support. (A-101) |
422 — Valid Syntax, Unprocessable
| # | Phase 2code | Phase 2message | Phase 2 details(unchanged from Phase 1) |
|---|---|---|---|
| 1 | VAS_NOT_AVAILABLE_IN_REGION | Requested VAS is not available in this region. | Requested VAS not available in this region. Please remove VAS. (S-303) |
| 2 | ACCOUNT_NOT_ACTIVE_FOR_MFN | Account is not active for MFN shipments. | Account not active for MFN shipments. Please complete MFN onboarding or contact support. (A-102) |
| 3 | ACCOUNT_NOT_ACTIVE_FOR_OFF_AMAZON | Account is not active for Off-Amazon shipments. | Account not active for OFF-Amazon shipments. Please complete OFF-Amazon onboarding or contact support. (A-103) |
| 4 | INVALID_INTEGRATOR_ACCOUNT_LINKAGE | Integrator-shipper account relationship is invalid. | Invalid integrator-shipper account relationship. Please verify account setup or contact support. (S-600) |
| 5 | APPLICATION_NOT_CONFIGURED_FOR_PICKUP | Application is not configured for pickup scheduling. | Application not configured for pickups. Please contact support to complete setup. (S-601) |
| 6 | PICKUP_BEFORE_ACCOUNT_START | Pickup 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) |
| 7 | ACCOUNT_PAUSED | Account is currently paused. | Account is paused. Please wait for pause period to end or contact support to resume. (S-501) |
| 8 | ACCOUNT_SUSPENDED | Account is suspended. | Account is suspended. Please visit Amazon Shipping website for account status or contact support. (S-500) |
| 9 | PICKUP_ADDRESS_MISMATCH | Pickup 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) |
| 10 | CREDIT_LIMIT_ENFORCED | Insufficient credit balance on the account. | Insufficient credit balance. Please add funds to your account or contact your account manager or support. (A-303) |
| 11 | ACCOUNT_NOT_AUTHORIZED_FOR_SHIPMENT_TYPE | Account is not authorized for this shipment type. | Account not authorized for this shipment type. Please contact support to update permissions. (A-500) |
| 12 | ACCOUNT_NOT_AUTHORIZED_FOR_CREDIT_INVOICING | Account is not authorized for credit-based invoicing. | Account not authorized for credit-based invoicing. Please review payment preferences or contact support. (A-600) |
| 13 | ACCOUNT_NOT_ACTIVE | Account is not active or not fully onboarded. | Account not active or not fully onboarded. Please check account status or contact support. (A-700) |
| 14 | ACCOUNT_OFFBOARDED | Account has been offboarded. | Account has been offboarded. Please re-onboard or contact support to restore access. (A-104) |
| 15 | PICKUP_ADDRESS_NOT_REGISTERED_WITH_SYSTEM | Pickup 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) |
| 16 | ORIGIN_POSTAL_CODE_NOT_SUPPORTED | Origin 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) |
| 17 | NO_RATE_AVAILABLE | No 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) |
| 18 | NO_PICKUP_SLOTS_AVAILABLE | No pickup slots available for the requested time. | No pickup slots available. Please adjust pickup time. (S-503) |
| 19 | MISSES_DELIVERY_PROMISE | Delivery promise cannot be met via Amazon Shipping. | Cannot meet delivery promise via Amazon Shipping. Please use a different carrier for this order. (S-200) |
| 20 | NO_ELIGIBLE_PROMISE | No shipping service meets the delivery promise. | No shipping service available for these shipment attributes. Please validate inputs. (S-400) |
| 21 | NO_SERVICE_FOR_DESTINATION | No shipping services available for the recipient address. | No shipping services available for recipient address. Please verify address or contact support. (A-306) |
| 22 | NO_COVERAGE_OR_VAS_UNAVAILABLE | No coverage or requested VAS is unavailable. | No coverage or requested VAS unavailable. Please remove VAS. (S-301) |
| 23 | ROUTE_NOT_FOUND | No shipping route found for the recipient address. | No shipping service for recipient address. Please verify address or contact support. (A-305) |
| 24 | DESTINATION_COUNTRY_NOT_SUPPORTED | Destination country is not supported for shipping. | Destination country not supported. Please check API documentation for supported countries or contact support. (A-406) |
| 25 | DG_NOT_SUPPORTED_FOR_DESTINATION | Dangerous goods not supported for this destination. | Dangerous goods shipments are not supported for this destination address or postcode. (S-405) |
| 26 | DG_NOT_SUPPORTED_FOR_C_RETURN | Dangerous goods not supported for C-Return shipments. | Dangerous goods shipments are not supported for Customer Return shipments. (S-409) |
| 27 | RECIPIENT_BLOCKED_FOR_C_RETURN | Shipment cannot be processed — recipient ineligible. | We apologize for the inconvenience. We are unable to process this shipment. (Code: S-701) |
| 28 | SENDER_BLOCKED_FOR_C_RETURN | Shipment cannot be processed — sender ineligible. | We apologize for the inconvenience. We are unable to process this shipment. (Code: S-702) |
| 29 | SHIPPING_ZONE_NOT_CONFIGURED | Shipping zone not configured for this origin-destination pair. | Shipping zone not configured for this origin and destination postal code combination. (A-307) |
| 30 | ACCOUNT_MISSING | Account does not exist. | Account does not exist. Please verify account or contact support. (A-105) |
| 31 | INVALID_ACCOUNT_TYPE | Account type is invalid. | Account type is invalid. Please verify account or contact support. (A-106) |
| 32 | INVALID_ACCOUNT_RELATION | Account type is invalid. | Account type is invalid. Please verify account or contact support. (A-107) |
| 33 | ACCOUNT_OFFERING_SUSPENDED | Account is not supported for offerings. | Account is not supported for offerings. Please verify account or contact support. (A-108) |
500 — Server-Side Errors
| # | Phase 2code | Phase 2message | Phase 2 details(unchanged from Phase 1) |
|---|---|---|---|
| 1 | ROUTE_NOT_FOUND | No shipping route found for the recipient address. | No shipping service for recipient address. Please verify address or contact support. (A-305) |
| 2 | INTERNAL_SERVICE_ERROR | An 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 2code | Phase 2message | Phase 2 details(New) |
|---|---|---|---|
| 1 | MISSING_UNID | UN number is a required field. | UN number is a required field. (D-600) |
| 2 | MISSING_HTRC | Transportation regulatory class is a required field. | HTRC/transportation regulatory class is a required field. (D-601) |
| 3 | MISSING_PACKING_GROUP | Packing group is required for the UN number provided. | Packing group is required for the UN number provided. (D-602) |
| 4 | MISSING_LIQUID_VOLUME | Liquid volume is required for the UN number provided. | Liquid Volume is required for the UN number provided. (D-603) |
| 5 | MISSING_PACKAGE_WEIGHT | Package weight is required for hazmat shipments. | Package weight is required for the UN number provided. (D-622) |
DG — Impermissible Values (HTTP 400)
| # | Phase 2code | Phase 2message | Phase 2 details(New) |
|---|---|---|---|
| 6 | IMPERMISSIBLE_UNID | UN number is not permissible with Amazon Shipping. | This UN number is currently not permissible to ship through Amazon Shipping. (D-604) |
| 7 | IMPERMISSIBLE_CLASS | Class is not permissible with Amazon Shipping. | This Class is currently not permissible to ship through Amazon Shipping. (D-605) |
| 8 | IMPERMISSIBLE_PACKING_GROUP | Packing group is not permissible with Amazon Shipping. | This Packing Group is currently not permissible to ship through Amazon Shipping. (D-606) |
| 9 | IMPERMISSIBLE_PACKING_INSTRUCTION | Packing instruction is not permissible with Amazon Shipping. | This Packing Instruction is currently not permissible to ship through Amazon Shipping. (D-607) |
| 10 | INVALID_LIQUID_VOLUME_UNIT | Liquid 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) |
| 11 | INVALID_PACKAGE_WEIGHT_UNIT | Package weight unit is invalid for this marketplace. | Package weight must be in a valid unit. (D-623) |
DG — Invalid Combinations (HTTP 422)
| # | Phase 2code | Phase 2message | Phase 2details(New) |
|---|---|---|---|
| 12 | INVALID_CLASS_2_1_OR_2_2 | For 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) |
| 13 | INVALID_CLASS_2_2 | For this UN number, only Class 2.2 is accepted. | For given UN Number, Amazon Shipping only accepts Class 2.2. (D-610) |
| 14 | INVALID_CLASS_9 | For this UN number, only Class 9 is accepted. | For given UN Number, Amazon Shipping only accepts Class 9. (D-611) |
| 15 | INVALID_CLASS_3 | For this UN number, only Class 3 is accepted. | For given UN Number, Amazon Shipping only accepts Class 3. (D-612) |
| 16 | INVALID_MULTIPLE_PACKING_GROUPS | For 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) |
| 17 | INVALID_PACKING_GROUP_III | For this UN number, only packing group III is accepted. | For given UN Number, Amazon Shipping only accepts packaging group III. (D-614) |
| 18 | INVALID_PACKING_GROUP_II | For this UN number, only packing group II is accepted. | For given UN Number, Amazon Shipping only accepts packaging group II. (D-615) |
| 19 | INVALID_PACKING_GROUP_II_III | For 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) |
| 20 | INVALID_PACKING_GROUP_II_III_NULL | For 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) |
| 21 | EXCEEDED_VOLUME_LIMIT | Quantity exceeds permissible volume limit. | Quantity exceeds permissible volume and is not permitted with Amazon Shipping. (D-618) |
| 22 | INVALID_UN3481_PACKING_INSTRUCTION | Invalid packing instruction for UN3481. | For UN3481, please enter correct packing instructions. (D-619) |
| 23 | INVALID_UN3091_PACKING_INSTRUCTION | Invalid packing instruction for UN3091. | For UN3091, please enter correct packing instructions. (D-620) |
| 24 | EXCEEDED_WEIGHT_LIMIT | Quantity 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 Combination | HTTP Status Returned | Guidance |
|---|---|---|
| 400 + 422 | 400 | Fix input errors first. 422 issues surface on retry. |
| 400 + 422 + 500 | 400 | Fix input errors first. Remaining issues surface sequentially. |
| 422 + 500 | 422 | Resolve account/config issues first. |
| 500 only | 500 | Retry 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.
