Amazon Vendor Procurement Get Transaction Status
Summary of Changes: (The purpose of this table is to keep traceability and Product team to highlight the things that were changed into the scope, based on comments or discussions)
Version | Date | Created / Updated | Notes |
---|---|---|---|
v1.0 | 09.02.2024 | Bogomil Pavlov | First publish |
v1.1 | 08.04.2025 | Bogomil Pavlov | Update the url |
v1.2 | 05.04.2025 | Bogomil Pavlov | Additional Logic for feeds |
All validations, triggers and standardizations which are not mentioned here are as per
Order management general requirements
https://www.notion.so/threecolts/Order-General-Acknowledgement-6ade536bf32d4980abf6da0349f00d04
Get Transaction
“Vendors can use the getTransactionStatus
operation to check the status of a POST transaction. When a request is posted to Amazon using certain POST operations in the vendor APIs, such as submitAcknowledgement
and `submitInvoice, for example, a successful response contains a transaction ID that uniquely identifies the transaction. Amazon will process the transaction asynchronously, and the final response will be available via the
getTransactionStatus` operation.”
Thus we want to store the feed in Marketplace Feeds table with the relevant details which later we will read using the Get Transaction API
<v1.2>According to Amazon “The Success status is supported only for Submit Shipment Confirmations and Submit Shipment in NA and EU only. Success is not supported for the operations Acknowledge Order and Submit Invoices. If the transaction status is Processing, and has not updated to Failure after 15 minutes, it indicates the transaction has successfully processed in our systems.” and we will have to build different logic for every feed type when we are reading the transcationId.
Marketplace Feed Type - “Order Acknowledgment”
Since we wont have a successful response for the feed we want to wait 15 minutes from the Marketplace Feed > Submitted Date and after that to read the feed. If the response is with "status": "Processing"
we treat this as success
Marketplace Feed Type - “Order Fulfillment”
We want to have a standard logic for this type of feeds and we want to read the feed until we receive "status": "Success"
or "status": "Failure"
Marketplace Feed Type - “Order Invoice”
Since we wont have a successful response for the feed we want to wait 15 minutes from the Marketplace Feed > Submitted Date and after that to read the feed. If the response is with "status": "Processing"
we treat this as success
Marketplace Feed Type - |Order Fulfillment Confirmation”
We want to have a standard logic for this type of feeds and we want to read the feed until we receive "status": "Success"
or "status": "Failure"
</v1.2>
API <v1.1>GET [https://sellingpartnerapi-na.amazon.com/](https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/transactions/v1/transactions/20190904190535-eef8cad8-418e-4ed3-ac72-789e2ee6214a)vendor/transactions/v1/transactions/{transactionId}
<v1.1>
Sample Request:
GET [https://sellingpartnerapi-na.amazon.com](https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/transactions/v1/transactions/20190904190535-eef8cad8-418e-4ed3-ac72-789e2ee6214a)**/vendor/transactions/v1/transactions/**[20190904190535-eef8cad8-418e-4ed3-ac72-789e2ee6214a](https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/transactions/v1/transactions/20190904190535-eef8cad8-418e-4ed3-ac72-789e2ee6214a)
We get the Marketplace Feed > External ID as {transactionId}
from the relevant marketplace feed.
We want to read all Marketplace Feeds with Marketplace Feed >Status = Processing
Sample Pending Response:
{
"payload": {
"transactionStatus": {
"transactionId": "d7b6f55d-a845-45c8-ab5d-203f9653e429-20250411055435",
"status": "Processing"
}
}
}
When we have "status": "Processing"
we do not want to complete the feed but wait for either success or error,
Sample Error Response:
{
"payload": {
"transactionStatus": {
"transactionId": "296a7e9d-b965-4554-a890-c6d8916fc454-20250411061320",
"status": "Failure",
"errors": [
{
"code": "AmazonLinkAPI-926003",
"message": "Volume information is required for Shipment request<br> User Command Error: Volume information is required for Shipment request Text: Volume information is required for Shipment request Output Path: Transmission | RoutingRequest | ShipmentInformation | Volume TargetPath: Transmission | RoutingRequest | ShipmentInformation | Volume<br>",
"details": null
},
{
"code": "AmazonLinkAPI-926003",
"message": "Volume information is required for Shipment request<br> User Command Error: Volume information is required for Shipment request Text: Volume information is required for Shipment request Output Path: Transmission | RoutingRequest | ShipmentInformation | VolumeUnitOfMeasure TargetPath: Transmission | RoutingRequest | ShipmentInformation | VolumeUnitOfMeasure<br>",
"details": null
}
]
}
}
Sample Success Response:
{
"payload": {
"transactionStatus": {
"transactionId": "d7b6f55d-a845-45c8-ab5d-203f9653e429-20250411055435",
"status": "Success"
}
}
}
Transaction Status | Definition |
---|---|
Failure | Transaction has failed. |
Processing | Transaction is in process. |
Success | Transaction has completed successfully. |
Mapping:
Amazon Field | Hemi Field | ||
---|---|---|---|
payload | |||
transactionId | N/A | ||
status | Marketplace Feed >External Status | ||
errors | |||
code | N/A | ||
message | Order Error table |
Once we get the response we want to mark the feed as “completed”.
Fields which should be updated after successful Get Transaction Status:
Hemi Field | Comment |
---|---|
Marketplace Feed > Completed Date | Current Time |
Marketplace Feed >Status | “Completed” |
Also we would like to clear all Feed Objects after completion. Apart from the marketplace feed we also need to update the order based on the feed type:
Order Acknowledgement - If the order is successfully acknowledged we want to update the Order > Status = Ready For Shipping and all other fields based on the Order General Acknowledgement
*Order Invoice*- If the order invoice is submitted we want to update Invoice > Status = “Sent” and Invoice > Sent By Integration = “Uploaded”
Order Fulfillment -If the order is successfully shipped we want to update the Order > Status = “Shipped” or “Partially Shipped” and all other fields based on the Order General Shipment
Order Fulfillment Confirmation -If the order is successfully shipped we want to update the Order > Status = “Shipped” or “Partially Shipped” and all other fields based on the Order General Shipment
Limits
Rate (requests per second) | Burst |
---|---|
10 | 20 |