Launch Announcement: Package Handoff API for Amazon Shipping
We are excited to announce the Package Handoff API, a new capability in the Amazon Shipping V2 API that enables shippers to share package handoff details with Amazon Shipping. This API provides real-time visibility into shipment status by allowing shippers to notify Amazon Shipping when packages are ready for pickup or have been physically handed off to Amazon Shipping, improving delivery accuracy and operational efficiency.
What is changing?
The Amazon Shipping V2 API is introducing a new endpoint, CreatePackageHandoffBatch, that allows shippers to communicate package handoff events directly to Amazon Shipping. With this launch, you'll be able to:
- Notify Pre-Handoff Status: Signal when packages are prepared, labeled, and ready for Amazon Shipping pickup using the
PRE_HANDOFFprocess type. - Confirm Post-Handoff Status: Confirm when packages have been physically handed off to Amazon Shipping using the
POST_HANDOFFprocess type. - Batch Processing: Submit up to 100 packages per API call for efficient bulk operations.
- Capture Package Details: Optionally include package dimensions, weight, container identifiers, and pickup vehicle identifiers for enhanced tracking.
Which marketplaces are affected?
This change applies to the following marketplaces: United States, United Kingdom, Italy, Spain, France.
What action is required?
If you have an application that integrates with Amazon Shipping APIs, be sure to:
- Review the new
POST /shipping/v2/packageHandoffendpoint documentation below - Update your integration to call the Package Handoff API after packages are prepared and/or handed off to Amazon Shipping
- Implement error handling for partial success responses (the API returns both
successesanderrorsarrays) - Test your implementation in the sandbox environment before using in production
Technical Implementation Details
API Endpoint:
Method: POST
Endpoint: /shipping/v2/packageHandoff
Operation ID: CreatePackageHandoffBatch
Schema Details:
Request — CreatePackageHandoffBatchRequest
| Field | Type | Required | Description |
|---|---|---|---|
shipFrom | Address | Yes | Origin warehouse/location address |
packages | Array Object | Yes | List of packages being handed off (max 100) |
HandoffPackage Object
| Field | Type | Required | Description |
|---|---|---|---|
trackingId | String | Yes | Amazon Shipping tracking identifier (e.g., TBA number) |
processType | String | Yes | PRE_HANDOFF or POST_HANDOFF |
processTimestamp | String (date-time) | Yes | The timestamp when the handoff process occurred, in ISO-8601 date/time format |
containerId | String | No | The container identifier if package is part of a container |
pickupVehicleId | String | No | Amazon Shipping-assigned unique identifier for the pickup vehicle |
dimensions | Dimensions | No | Package dimensions (length, width, height, unit) |
weight | Weight | No | Package weight (value, unit) |
Process Types
| Value | Description |
|---|---|
PRE_HANDOFF | Shipment ready, awaiting Amazon Shipping pickup |
POST_HANDOFF | Shipment physically handed off to Amazon Shipping |
Response — CreatePackageHandoffBatchResponse
| Field | Type | Description |
|---|---|---|
successes | Array | List of successfully processed packages |
errors | Array | List of packages that failed processing |
Package Error Codes
| Error Code | Description |
|---|---|
INVALID_PACKAGE_IDENTIFIER | Package identifier is invalid |
DUPLICATE_PACKAGE_IN_REQUEST | Duplicate package found in the request, cannot be processed |
INTERNAL_ERROR | Package processing failed due to internal error. The operation may be retried |
Header Parameters:
| Header | Required | Description |
|---|---|---|
x-amzn-shipping-business-id | No | Amazon shipping business to assume for this request (e.g., AmazonShipping_US, AmazonShipping_UK) |
| x-amz-access-token | Yes | Amazon shipping request token |
Sample API Request:
{
"shipFrom": {
"name": "Warehouse Operations",
"addressLine1": "123 Warehouse Street",
"city": "Seattle",
"stateOrRegion": "WA",
"postalCode": "98101",
"countryCode": "US"
},
"packages": [
{
"trackingId": "TBA324991996260",
"processType": "PRE_HANDOFF",
"processTimestamp": "2026-03-15T09:01:00Z",
"dimensions": {
"length": 12.5,
"width": 10.0,
"height": 8.0,
"unit": "INCH"
},
"weight": {
"value": 2.5,
"unit": "POUND"
}
}
]
}
{
"shipFrom": {
"name": "Warehouse Operations",
"addressLine1": "123 Warehouse Street",
"city": "Seattle",
"stateOrRegion": "WA",
"postalCode": "98101",
"countryCode": "US"
},
"packages": [
{
"trackingId": "TBA324991996260",
"processType": "POST_HANDOFF",
"processTimestamp": "2026-03-15T14:30:00Z"
},
{
"trackingId": "TBA324991996261",
"processType": "POST_HANDOFF",
"processTimestamp": "2026-03-15T14:30:00Z"
},
{
"trackingId": "TBA324991996262",
"processType": "POST_HANDOFF",
"processTimestamp": "2026-03-15T14:30:00Z"
}
]
}
Sample API Response:
{
"successes": [
{
"trackingId": "TBA324991996260"
},
{
"trackingId": "TBA324991996261"
},
{
"trackingId": "TBA324991996262"
}
],
"errors": []
}
{
"successes": [
{
"trackingId": "TBA324991996260"
},
{
"trackingId": "TBA324991996261"
}
],
"errors": [
{
"trackingId": "TBA324991996262",
"code": "INVALID_PACKAGE_IDENTIFIER",
"message": "Package identifier is invalid"
}
]
}
FAQs:
-
Will this feature impact my existing API integration?
No. The Package Handoff API is a new, standalone endpoint. Existing integrations for label creation, tracking, and cancellation continue to work without changes. -
Is it mandatory to call the Package Handoff API?
It is not mandatory, but it is strongly recommended. Sharing handoff events with Amazon Shipping helps align delivery metric calculations, enables more accurate estimated delivery dates, supports proactive alerting for delayed or missing packages, and provides end-to-end shipment visibility across the fulfillment lifecycle. Integrating this API is recommended to get the most out of your Amazon Shipping experience. -
Do I need to send both PRE_HANDOFF and POST_HANDOFF?
No. You may send PRE_HANDOFF, POST_HANDOFF, or both based on your shipping processes. Process types should align with your operational workflow. However, sending both provides Amazon Shipping with the most complete picture of your handoff timeline. -
What happens if I submit duplicate tracking IDs in the same request?
One instance will be processed successfully, and the duplicate will be returned in theerrorsarray with theDUPLICATE_PACKAGE_IN_REQUESTerror code. -
What is the maximum number of packages per request?
You can submit up to 100 packages per API call. Requests exceeding this limit will be rejected with a http 400 Bad Request. -
Are dimensions and weight required?
No. Dimensions and weight are optional fields. However, providing them when available improves tracking accuracy. -
What rate limits apply to this API?
The API supports 5 requests per second. Monitor thex-amzn-RateLimit-Limitresponse header and implement exponential backoff for 429 responses. -
Can I use this API in the sandbox environment?
Yes. The Package Handoff API supports dynamic sandbox testing. Use your sandbox credentials to test before moving to production.
