Vendor Direct Fulfillment Orders API v2021-12-28 Use Case Guide

The Selling Partner API for Direct Fulfillment Orders provides programmatic access to a direct fulfillment vendor's order data.

Use the Direct Fulfillment Orders API to receive purchase orders and send order acknowledgments.

The following operations are available:

OperationHTTP methodPathDescription
getOrdersGET/vendor/directFulfillment/orders/2021-12-28/purchaseOrdersReturns a list of purchase orders created during the time frame that you specify. You define the time frame using the createdAfter and createdBefore parameters. You must use both parameters. You can choose to get only the purchase order numbers by setting the includeDetails parameter to false. In that case, the operation returns a list of purchase order numbers. ou can then call the getOrder operation to get the details of a specific order.
Note: This is a restricted operation and therefore requires a Restricted Data Token (RDT) for authorization. For more information, refer to the Tokens API Use Case Guide. You can retrieve data for up to six months.
getOrderGET/vendor/directFulfillment/orders/2021-12-28/purchaseOrders/{purchaseOrderNumber}Returns purchase order information for the specified purchaseOrderNumber.
Note: This is a restricted operation and therefore requires a Restricted Data Token (RDT) for authorization. For more information, refer to the Tokens API Use Case Guide. You can retrieve data for up to six months.
submitAcknowledgementPOST/vendor/directFulfillment/orders/2021-12-28/acknowledgementsSubmits acknowledgments for one or more purchase orders.

📘

Note

You use the getOrders operation with includeDetails=false as a query parameter to retrieve order numbers without complete order details. The default value for this parameter is true. If you don't include this query parameter, it returns the full details of the purchase orders.

The following diagram shows the workflow using the Direct Fulfillment Orders APIs:

The Direct Fulfillment orders workflow.

Direct Fulfillment customer data transmission

Amazon label only vendors do not receive customer data such as name, address, or phone number for some orders returned using the getOrder and getOrders operations. Direct Fulfillment shares customer information directly on Amazon provided shipping labels. This applies to all shipments fulfilled by Amazon label only vendors and Amazon Transportation Services-Small Parcel. Customer ship-to details are only returned for Vendor Own Label (VOL) or Vendor Own Carrier (VOC).

Customer name, address, and phone number are available if your operations require you to generate a label using a Direct Fulfillment Amazon carrier account. The information is also available to you if you use a vendor own label (VOL) or vendor own carrier (VOC) shipping label to fulfill the Direct Fulfillment order. If you generate your own AMXL shipping labels, you can access customer data.

Tip

If you use AMXL and AT shipping methods for the same warehouse, the AMXL Oversize and XL markers on the label help differentiate between AMXL and AT labels.

getOrders

The getOrders operation returns a list of order references (purchase order numbers) or complete order details for all orders which meet the criteria specified. If you only request order numbers, you can use each order number later with the getOrder operation to get order details for a specific order.

📘

Note

getOrder is a restricted operation and requires a Restricted Data Token (RDT) for authorization. Some operations require restrictions because they contain customer PII data. These operations require passing an additional security review. For more information on RDT, refer to the Tokens API Use Case Guide.

You can use this API to get purchase orders available to you for fulfillment. Check for orders at least once per hour during business hours, however, you can choose to check more frequently. You can return up to 100 orders in one API call. If there are more than 100 orders you can use the nextToken value in the response to get the next set of orders.

The following diagram shows the integration workflow when retrieving purchase orders:

The Direct Fulfillment integration workflow when retrieving purchase orders.

getOrders request

To return a list of purchase orders, call the getOrders operation.

getOrder

The getOrder operation returns information about the purchase order that you specify using the purchase order number. The response includes complete purchase order information for the purchase order, including line item details, quantity, and cost.

📘

Note

getOrder is a restricted operation and requires a Restricted Data Token (RDT) for authorization. Some operations require restrictions because they contain customer PII data. These operations require passing an additional security review. For more information on RDT, refer to the Tokens API Use Case Guide.

Use this API to get the details of specific orders returned by the getOrders operation. You can also use this API to get details for any purchase order in a seven-day time range during the past six months after the vendor went live on the API.

The following diagram shows the integration workflow to retrieve a specific purchase order:

The Direct Fulfillment integration workflow to retrieve a specific purchase order.

Business requirements

  • A packing slip is required for orders that are Business to Business (B2B) orders or gift orders. When isPslipRequired is true, a packing slip is required.

  • The requiredShipDate value is the latest date that the order must be shipped from the warehouse. The promisedDeliveryDate field value denotes the date we promised to deliver to the customer.

  • You cannot submit changes to an order using the API. After an order has been placed, it cannot be changed.

Country-specific business requirements

FunctionalityIndiaEuropeNorth America
Net costConditional. Either net cost or list price.Conditional. Either net cost or list price.Conditional. Either net cost or list price.
List priceConditional. Either net cost or list price.Conditional. Either Net Cost or List price.Conditional. Either net cost or list price.
Ship-from partyThe warehouse code assigned to the vendor.The warehouse code assigned to the vendor.The warehouse code assigned to the vendor.
Selling partyThe vendor code assigned to the vendor.The vendor code assigned to the vendor.The vendor code assigned to the vendor.
Ship-to partyThe address of the customer.The address of the customer. For Amazon label only vendors, certain fields are replaced with the fictitious value XXXXX. Refer to the Direct Fulfillment customer data transmission section for more information.The address of the customer. For Amazon label only vendors, certain fields are replaced with fictitious value XXXXX. Refer to the Direct Fulfillment customer data transmission section for more information.
Bill-to partyThe address of the bill-to entity.The address of the bill-to entity.Not applicable.

Tip

To learn how to check that your vendor group contains all of the vendor codes that you want your application to access, and add new vendor codes to your account, refer to Authorize your Application to Access Vendor Groups.

getOrder request

To return information about a specific purchase order, call the getOrder operation.

submitAcknowledgement

The submitAcknowledgement operation allows vendors to accept or reject a purchase order for fulfillment. Amazon expects a complete acknowledgement, including all purchase order line items of the purchase order. If the vendor does not provide all line items of the purchase order in the acknowledgement, Amazon does not accept the partial acknowledgement.

Amazon expects the vendor to submit the acknowledgement within 24 hours. The acknowledgement must be an accurate view of the actual shipment quantities and items. The order must be accepted or rejected in its entirety. Partial shipment is not accepted.

Order acknowledgement verification

Vendors can verify the status of the original/updated version of the order acknowledgement using Vendor Central or using the Direct Fulfillment Transaction Management API. Allow the system to take up to 15 minutes to show the original/updated version after submission. If Vendor Central is not showing the correct values for the acknowledgement, open a Contact Us case in Vendor Central.

The following diagram shows the integration workflow when acknowledging orders.

The Direct Fulfillment integration workflow when acknowledging orders.

Business requirements

Can a vendor increase the original quantity submitted in the purchase order using the submitAcknowledgement operation?

No, Amazon does not allow the vendor to send a higher quantity in the acknowledgement than what was submitted in the purchase order.

Is it a requirement to send an order acknowledgement for each purchase order?

Yes, in order to update the status of an order in the Amazon system correctly, Amazon requires PO confirmation using the API or Vendor Central. If you are unable to meet our order acknowledgement requirements using the API, you must confirm your POs using Vendor Central. Please contact your Amazon business representative if you do not have a Vendor Central account.

Is it a requirement to provide every PO line item in the corresponding order acknowledgement?

Yes, so Amazon can update the order status correctly.

How should invalid items or details on an order be reported using the order acknowledgement?

Do not process or ship an item that arrived with an invalid item number on the order. Please return the invalid item number on the acknowledgement and acknowledge it with one of the following codes.

The following list is an example of the codes that can be used in the document. Amazon and the vendor mutually agree upon a list of codes that are appropriate for their relationship.

Code and description

The following list is an example of the order acknowledgement codes that can be used in the operation.

  • "00" Shipping 100 percent of ordered product
  • "02" Canceled due to missing/invalid SKU
  • "03" Canceled out of stock
  • "04" Canceled due to duplicate Amazon Ship ID
  • "05" Canceled due to missing/invalid Bill To Location Code
  • "06" Canceled due to missing/invalid Ship From Location Code
  • "07" Canceled due to missing/invalid Customer Ship to Name
  • "08" Canceled due to missing/invalid Customer Ship to Address Line 1
  • "09" Canceled due to missing/invalid Customer Ship to City
  • "10" Canceled due to missing/invalid Customer Ship to State
  • "11" Canceled due to missing/invalid Customer Ship to Postal Code
  • "12" Canceled due to missing/invalid Customer Ship to Country Code
  • "13" Canceled due to missing/invalid Shipping Carrier/Shipping Method
  • "20" Canceled due to missing/invalid Unit Price
  • "21" Canceled due to missing/invalid Ship to Address Line 2
  • "22" Canceled due to missing/invalid Ship to Address Line 3
  • "50" Canceled due to Tax Nexus Issue
  • "51" Canceled due to Restricted SKU/Qty
  • "53" Canceled due to USPS > $400
  • "54" Canceled due to Missing AmazonShipID
  • "55" Canceled due to Missing AmazonOrderID
  • "56" Canceled due to Missing LineItemId
  • "71" Canceled due to discontinued item

📘

Amazon acknowledgement

Amazon expects an acknowledgement even if all the line items on the purchase order were invalid and did not produce an order or invoice.

Is it a requirement that I provide an acknowledgement code for all line items regardless of status?

Yes, it is required so we can correctly update the status of the order. If the acknowledgement code is omitted, the acknowledgement is rejected in our system.

What is the policy at Amazon.com on partial shipments? How should partial shipments be reported when submitting an order acknowledgement?

Partial shipments are not allowed. Vendors need to either confirm or reject the full order (fill or kill model).

submitAcknowledgement request

You must provide an order acknowledgment code for all line items in order for Amazon to update the order status.

To submit order acknowledgments, call the submitAcknowledgement operation.

Acknowledgement use cases

Invalid line item in the purchase order

If the vendor receives an invalid product identifier in the purchase order, the vendor must reject the item with an acknowledgement code 02 and the description as Canceled due to missing/invalid SKU.

{
  "orderacknowledgements": [
    {
      "purchaseOrderNumber": "2JK3S9VC",
      "vendorOrderNumber": "ABC",
      "acknowledgementDate": "2020-02-20T19:17:34.304Z",
      "acknowledgementStatus": {
        "code": "02",
        "description": "Canceled due to missing/invalid SKU"
      },
      "sellingParty": {
        "partyId": "999US"
      },
      "shipFromParty": {
        "partyId": "ABCD"
      },
      "items": [
        {
          "itemSequenceNumber": "1",
          "buyerProductIdentifier": "B07DFVDRAB",
          "vendorProductIdentifier": 8806098286500,
          "acknowledgedQuantity": {
            "amount": 1,
            "unitOfMeasure": "Each"
          }
        }
      ]
    }
  ]
}

Out of stock line item in the purchase order

If the vendor receives a product in the purchase order which is now out of stock, the vendor must reject the item with an acknowledgement code 03 and the description as Canceled out of stock.

{
  "orderacknowledgements": [
    {
      "purchaseOrderNumber": "2JK3S9VC",
      "vendorOrderNumber": "ABC",
      "acknowledgementDate": "2020-02-20T19:17:34.304Z",
      "acknowledgementStatus": {
        "code": "03",
        "description": "Canceled out of stock"
      },
      "sellingParty": {
        "partyId": "999US"
      },
      "shipFromParty": {
        "partyId": "ABCD"
      },
      "items": [
        {
          "itemSequenceNumber": "1",
          "buyerProductIdentifier": "B07DFVDRAB",
          "vendorProductIdentifier": 8806098286500,
          "acknowledgedQuantity": {
            "amount": 1,
            "unitOfMeasure": "Each"
          }
        }
      ]
    }
  ]
}

Confirm purchase order as accepted

If the vendor receives a product in the purchase order which is available to ship, the vendor must accept the item with an acknowledgement code 00 and the description as Shipping 100 percent of ordered product.

{
  "orderacknowledgements": [
    {
      "purchaseOrderNumber": "2JK3S9VC",
      "vendorOrderNumber": "ABC",
      "acknowledgementDate": "2020-02-20T19:17:34.304Z",
      "acknowledgementStatus": {
        "code": "00",
        "description": "Shipping 100 percent of ordered product"
      },
      "sellingParty": {
        "partyId": "999US"
      },
      "shipFromParty": {
        "partyId": "ABCD"
      },
      "items": [
        {
          "itemSequenceNumber": "1",
          "buyerProductIdentifier": "B07DFVDRAB",
          "vendorProductIdentifier": 8806098286500,
          "acknowledgedQuantity": {
            "amount": 1,
            "unitOfMeasure": "Each"
          }
        }
      ]
    }
  ]
}