Amazon Merchant Fulfillment

Updated 4 months ago by Cory M.

You can create labels through ShipStream using Amazon Merchant Fulfillment (a.k.a. Amazon Merchant Web Services, a.k.a. Amazon MWS). This is referred to by Amazon as "Buy Shipping" and is a requirement if you are in the Seller Fulfilled Prime program. In a nutshell, ShipStream will use your Seller Central account to buy shipping for your Amazon orders and receive and print the label using a completely seamless integration.

You must contact ShipStream support to have Amazon MWS setup completed on your ShipStream instance before you can successfully use Amazon Merchant Fulfillment.

Create an Amazon Shipping Account

In order to use Amazon's "Buy Shipping" API the seller must first obtain their Seller ID and an MWS Auth Token, referred to here as the Amazon MWS Credentials (MWS stands for Merchant Web Services). These pieces of information should be handled carefully and securely as they provide API access to the Amazon merchant account.

Obtaining the Amazon MWS Credentials

If you are a 3PL you will need to send these instructions to your client.

  1. Login to Seller Central as the primary user. Sub-users do not have access to authorize third-party apps.
  2. From the “Settings” menu in the top-right corner of the page click “User Permissions”.
  3. On the User Permissions page under the section titled “Third party developer and apps” click “Visit Manage Your Apps”.
  4. On the “Manage your apps” page click “Authorize new developer”.
  5. Enter your company name as the “Developer Name” and 849609608142 as the “Developer ID”.
  6. Read the notice, check the box and click “Next” to proceed.
  7. Securely provide the Seller ID and MWS Auth Token to the appropriate party.

Adding the Shipping Account

Since the Amazon MWS Credentials only provide access to the specific merchant who obtained them you will need to setup a separate Shipping Account in ShipStream for each Amazon seller. See Shipping Account Groups for more information on managing Shipping Accounts in ShipStream.

After you click "Add Shipping Account" from the appropriate Shipping Account Group:

  1. Choose "Amazon MWS" as the "Carrier"
  2. Be sure to select the correct Merchant if you are a 3PL.
  3. Enter the Seller ID and MWS Auth Token obtained from the section above.
  4. Click "Save Shipping Account".
  5. Make sure the System > Configuration > Shipping Methods > Amazon MWS section is configured correctly.

Here is a screenshot of the Create Shipping Account page.

Service Selection

When using Amazon's "Buy Shipping" API which is what happens when the packing operation for a shipment is completed, the process is to first request a list of all "eligible" shipping services. This list is determined by Amazon and is outside of the control of ShipStream. However, ShipStream gives you control over which of the provided services should be chosen automatically.

If none of the services presented by Amazon are allowed by your ShipStream configuration the shipment cannot be completed until the configuration is updated to allow another service to be selected. Alternatively, the shipment will have to be completed offline or using a non-Amazon shipping method and it will be up to the user to make sure the tracking number is relayed back to Amazon.

Preferred Carrier

Generally, ShipStream will choose the cheapest option presented by Amazon. If you are using your own shipping account on Amazon or you have other factors that affect which carrier you prefer to use, you may wish to designate one carrier as the "Preferred Carrier". You can then set a threshold which will determine how much more expensive the next cheapest option must be before use a carrier other thanb the Preferred Carrier.

To completely prevent ShipStream from choosing a carrier that is not the Preferred Carrier, you can choose "Require Rates from Preferred Carrier".

Excluded Services

For advanced cases you may wish to further refine the list of eligible services on a per-order basis. This can be accomplished by using the key "Other Shipping Options" field of the order which is a JSON object. Specify a key called "amazon_excluded_services" and the value must be an array of strings. These strings can be either a specific Amazon service or a PCRE-compatible regular expression using / as the delimiter. Any services matching any of the provided strings will be excluded for that order.

{
"amazon_excluded_services": ["/^UPS/"]
}

This is most likely useful to add using a "Before Create Order Script":

// Do not ship orders submitted on Friday via UPS
if (order.timestamp.format('l') === "Friday") {
order.options.other_shipping_options = {
"amazon_excluded_services": ["/^UPS/"]
}
}

List of Amazon Shipping Services

The following is a list of the known/supported Amazon Shipping Services.

            [
'ShippingServiceName' => 'USPS Priority Mail Express®',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_EXP',
],
[
'ShippingServiceName' => 'USPS Priority Mail Express Legal Flat Rate Envelope',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_EXP_LFRE',
],
[
'ShippingServiceName' => 'USPS Priority Mail Express Padded Flat Rate Envelope',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_EXP_PFRE',
],
[
'ShippingServiceName' => 'USPS Priority Mail®',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_PRI',
],
[
'ShippingServiceName' => 'USPS Priority Mail Cubic®',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_PRI_CUBIC',
],
[
'ShippingServiceName' => 'USPS Priority Mail® Large Flat Rate Box',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_PRI_LFRB',
],
[
'ShippingServiceName' => 'USPS Priority Mail Legal Flat Rate Envelope',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_PRI_LFRE',
],
[
'ShippingServiceName' => 'USPS Priority Mail® Flat Rate Box',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_PRI_MFRB',
],
[
'ShippingServiceName' => 'USPS Priority Mail Padded Flat Rate Envelope',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_PRI_PFRE',
],
[
'ShippingServiceName' => 'USPS Parcel Select',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_PSBN',
],
[
'ShippingServiceName' => 'UPS Ground',
'CarrierName' => 'UPS',
'ShippingServiceId' => 'UPS_PTP_GND',
],
[
'ShippingServiceName' => 'UPS 2nd Day Air',
'CarrierName' => 'UPS',
'ShippingServiceId' => 'UPS_PTP_2ND_DAY_AIR',
],
[
'ShippingServiceName' => 'UPS Next Day Air',
'CarrierName' => 'UPS',
'ShippingServiceId' => 'UPS_PTP_NEXT_DAY_AIR',
],
[
'ShippingServiceName' => 'UPS Next Day Air (Saturday)',
'CarrierName' => 'UPS',
'ShippingServiceId' => 'UPS_PTP_NEXT_DAY_AIR_SAT',
],
[
'ShippingServiceName' => 'UPS Next Day Air Saver',
'CarrierName' => 'UPS',
'ShippingServiceId' => 'UPS_PTP_NEXT_DAY_AIR_SAVER',
],
[
'ShippingServiceName' => 'FedEx Priority Overnight®',
'CarrierName' => 'FEDEX',
'ShippingServiceId' => 'FEDEX_PTP_PRIORITY_OVERNIGHT',
],
[
'ShippingServiceName' => 'FedEx Priority Overnight® (Saturday)',
'CarrierName' => 'FEDEX',
'ShippingServiceId' => 'FEDEX_PTP_PRI_OVERNIGHT_SAT',
],
[
'ShippingServiceName' => 'FedEx Standard Overnight®',
'CarrierName' => 'FEDEX',
'ShippingServiceId' => 'FEDEX_PTP_STANDARD_OVERNIGHT',
],
[
'ShippingServiceName' => 'FedEx 2Day®A.M.',
'CarrierName' => 'FEDEX',
'ShippingServiceId' => 'FEDEX_PTP_SECOND_DAY_AM',
],
[
'ShippingServiceName' => 'FedEx 2Day®',
'CarrierName' => 'FEDEX',
'ShippingServiceId' => 'FEDEX_PTP_SECOND_DAY',
],
[
'ShippingServiceName' => 'FedEx Express Saver®',
'CarrierName' => 'FEDEX',
'ShippingServiceId' => 'FEDEX_PTP_EXPRESS_SAVER',
],
[
'ShippingServiceName' => 'FedEx Home Delivery®',
'CarrierName' => 'FEDEX',
'ShippingServiceId' => 'FEDEX_PTP_HOME_DELIVERY',
],
[
'ShippingServiceName' => 'FedEx Ground®',
'CarrierName' => 'FEDEX',
'ShippingServiceId' => 'FEDEX_PTP_GROUND',
],
//
// International Methods
//
[
'ShippingServiceName' => 'DHL Express International',
'CarrierName' => 'DHLMX',
'ShippingServiceId' => 'DHLMX_PTP_PACKAGE_EXPRESS',
],
[
'ShippingServiceName' => 'USPS First Class International',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_FC_INTL',
],
[
'ShippingServiceName' => 'USPS Priority Mail International',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_PRI_INTL',
],
[
'ShippingServiceName' => 'USPS Priority Mail Express International',
'CarrierName' => 'USPS',
'ShippingServiceId' => 'USPS_PTP_EXP_INTL',
],
];

Amazon Orders

There are a few requirements that an order must meet to allow ShipStream to call the Amazon MWS for shipping labels.

Amazon Order ID

When the Amazon Order is provided to ShipStream it must include the Amazon Order ID which matches the pattern "NNN-NNNNNNN-NNNNNNN" entered by itself into one of these fields:

User Portal

API

Order #

unique_id

Order Ref #

order_ref

Other Shipping Options:

{ "amazon_order_id": "VALUE" }

{ other_shipping_options: { "amazon_order_id": "VALUE" }}

Amazon ASIN or Seller SKU

The Amazon line items must have their Amazon ASIN or Seller SKU match one of these ShipStream fields:

User Portal

API

Product SKU

sku

Product Vendor SKU

vendor_sku

Product External ID

external_id

order_item_ref

(submitted to order.create)

Shipping Method

The ShipStream Order will need to use one of ShipStream's "Amazon Merchant Fulfillment" shipping methods.

Description

Code

Amazon Merchant Fulfillment

amazon_ANY

Amazon Standard Delivery

amazon_Standard

Amazon Free Economy

amazon_FreeEconomy

Amazon Two-Day Delivery

amazon_SecondDay

Amazon One-Day Delivery

amazon_NextDay

Amazon Expedited Delivery

amazon_Expedited


How did we do?