Amazon Fulfillment (MCF) for WooCommerce

Amazon Fulfillment (MCF) for WooCommerce integrates your WooCommerce store with Fulfillment by Amazon (FBA) to enable automated order fulfillment and delivery.

Important Update

↑ Back to top
As of Version 3.2.0 WooCommerce Amazon Fulfillment now supports the Developer Authorization authentication model, which is Amazon’s required credentials method for this type of application. Version 3.2.9 and higher provide support for this latest authentication method in nearly all regions/countries served by Amazon Marketplace Web Services (MWS):

  • North America Region: Brazil, Canada, Mexico, US
  • Europe Region: United Arab Emirates (U.A.E.), Germany, Egypt, Spain, France, UK, India, Italy, Netherlands, Poland, Saudi Arabia, Sweden, Turkey
  • Far East Region: Singapore, Australia, Japan
Version 3.2.0 and higher also supports a legacy mode for the other regions if you have previously been approved by Amazon for your own MWS Developer credentials. Currently, those regions only include:
  • China
However, you need to understand that we are working on supporting ALL regions with the new authorization model and as soon as that effort is complete, legacy support for MWS credentials will be removed and all users will need to be on the Developer Authorization model. For more information on the history you can read more regarding the important update on Amazon Fulfillment (MCF) for WooCommerce. Amazon provides documentation on Regions, Countries, and Marketplace IDs here:

How It Works

↑ Back to top
  • Sign up for an Amazon Pro Seller account
  • Enable Fulfillment by Amazon on your account (if applicable)
  • Take or Ship your products to an Amazon facility
  • Install and set up this plugin
  • Sell products via your WooCommerce store
  • Amazon handles your orders by picking, packing, sending the shipment, plus provides tracking info and customer service


↑ Back to top
  1. Download the .zip file from your WooCommerce account.
  2. Go toWordPress Admin > Plugins > Add New and Upload Plugin with the file you downloaded with Choose File.
  3. Install Now and Activate the extension.
More information at: Install and Activate Plugins/Extensions.

Sign up for an Amazon Pro Seller account

↑ Back to top
You must have an active Amazon Professional Seller account and enable Fulfillment by Amazon (FBA) services to use our WooCommerce Fulfillment by Amazon plugin.
  1. Go to Amazon Services at Amazon Seller Central and sign up for a Professional Seller account. If you already have an Amazon account, sign into your account on the same screen and check that it is a Professional account. If not, you need to sign up for a Professional Selling Plan.
  2. Go to Amazon Benefits and enable Fulfillment by Amazon on your Amazon Professional Seller account (for some new accounts FBA might already be active by default).
We also highly recommend:
  • Having at least one product set up in your FBA inventory
  • Confirming that Seller SKUs in your FBA inventory match the product SKUs in WooCommerce for each product you want to enable for Fulfillment by Amazon
  • Providing your physical inventory to Amazon before configuring and testing this plugin

Setup and Configuration

↑ Back to top
To set up Fulfillment by Amazon (FBA) for your store, settings must be configured for:
  • The plugin
  • Shipping
  • Products

Plugin settings

↑ Back to top
To configure the plugin on your WooCommerce store, have ready your login and password for your Amazon Professional Seller account.

  1. Go to: WooCommerce > Settings > Integration > Fulfillment by Amazon.
  2. Select the Home Region/Country that applies to your main Amazon Seller Central Account.
  3. The Plugin will provide instructions and links for you to Authorize this plugin’s Developer ID based on the Home Region that you select. Note that each region will have a unique Developer ID that you need to use during the process.
  4. Log into your Seller Central account at the Amazon website (you can use the link the plugin provides in the instructions).
  5. From your Seller Central Dashboard, click Settings (top right) > User Permissions
  6. Under “Third party developer and apps” click the Visit Manage Your Apps button.
  7. Under “Manage your apps” near the top of the screen click the Authorize new developer button.
  8. Copy and paste the values for Developer’s Name and Developer ID from the plugin instructions area into the correct fields.
  9. Click Next to review and confirm that you understand the implications of granting access to WooCommerce Amazon Fulfillment to integrate your store with Fulfillment by Amazon.
  10. Check the box and click Next again to access your Seller ID, Marketplace ID, and MWS Authorization Token, which you will need to paste back into the plugin settings.
  11. Copy and paste the applicable values into the related plugin settings:
    • Seller ID > Amazon Seller ID
    • Amazon Marketplace ID > Amazon Marketplace ID (use the one that makes the most sense for your store’s country)
    • MWS Auth Token > MWS Authorization Token
      Important: If you have updated from an older version of WCAF and were previously using the Access ID and Secret Key settings, those can now be ignored. When you save your MWS Authorization Token in the settings, WCAF will automatically use the latest method of authentication with FBA. If you delete your Secret Key from the settings, then WCAF will hide both the Access ID field and the Secret Key field. The 3 fields above (Seller ID, Marketplace ID, and MWS Auth Token) are the only ones you need now.
  12. Click the Test MWS Connection button. If you entered all credentials correctly, a success message appears at the top and additional plugin settings become available underneath.
  13. For all other plugin settings, be patient and work your way through each one. Hovering over the (?) for explanations and assistance. You need only do this once or when you wish to make changes to how the plugin is handling your fulfillment.
  14. Enter your selection for each of the FBA Inventory Settings: Most stores will likely want to tick both stock level sync checkboxes to have them turned ON.
    • Update WC (WooCommerce) levels from FBA
    • Sync WC (WooCommerce) levels from FBA
    • Test Inventory SKU (your store should have at least one item set up on FBA and your store with the same SKU as advised above)
    Make sure the “Manage stock?” setting is ticked for each product you want to fulfill with Amazon and then run a full stock level sync between all products after initial setup and after inventory is set up. If you have a lot of products, this might take some time. For this to work properly, you must have WooCommerce stock level management settings turned on both at the store level and individual products level.
  15. Configure the FBA Order Fulfillment Settings:
    • Order Prefix: Use an prefix that helps you identify fulfillment orders in FBA reports and tools on Amazon, e.g., fba or ama or anything that works for accounting.
  16. Enter your selection for each option under General Plugin Settings.
    • If you want to receive shipping and error notifications at an email address different than the WordPress admin email address setting, then provide an address in the “Notification Email” setting.
  17. Enter your selection for each option under Order Item (Product) Level Processing Rules.
  18. Save changes.

Shipping settings

↑ Back to top
To configure shipping options in WooCommerce for FBA:
  1. Understand that Amazon handles massive fulfillment quantities via contracts with numerous national and international shipping companies. If you were shipping the products yourself, you’d use UPS, USPS, FedEx, etc. But when fulfilling with Amazon, the actual shipping process is a black box. You need not be concerned with who Amazon uses to ship products to your customers.Because of this…
  2. Understand that you have no access to the exact “shipping rate” from Amazon carriers. Standard shipping rate calculators cannot be used in your cart to accurately quote prices on your WooCommerce store because FBA is also charging other fees for their service. Amazon posts these fees in their Multi-Channel Fulfillment Fee Structure:
  3. Set up and save shipping methods in your WooCommerce store. Go to WooCommerce > Settings > Shipping and see Shipping – WooCommerce to get started.
  4. Look at the shipping charges for your region using the Multi-Channel Fulfillment Fee Structure mentioned in step #2 and enter shipping costs accordingly. For example:
    • Flat Rate Standard: This could be for FBA Standard/normal shipping and it should add the cost that FBA will charge you.
    • Flat Rate Expedited: This could be for FBA Expedited, offering faster service. Create another flat rate with a higher cost
    • Flat Rate Priority: This is could be for FBA Priority, offering fastest service. Create another flat rate and give it the highest cost.
    • Free Shipping (optional): This could be a substitute for FBA Standard, if you wish to offer free shipping for products.
  5. Go to: WooCommerce > Settings > Integration > FBA Order Fulfillment Settings.
  6. Map one WooCommerce shipping method per Amazon FBA Shipping Speed, using the dropdown menu:
    • Standard
    • Expedited
    • Priority
  7. Select a DEFAULT Shipping Speed as a fallback.Should you fail to see shipping methods you need in the dropdown menus, go to WooCommerce > Settings > Shipping and double-check your shipping methods. Shipping methods must be configured and active for the plugin to detect and allow you to map.
  8. Save changes.

Product settings

↑ Back to top
FBA needs to be enabled for each product in your Amazon FBA inventory, following configuration of the plugin and shipping settings above. This can be done two ways. Go to WooCommerce > Products and:
  • Toggle the FBA switch on/off as needed. OR
  • Select Edit, and go to the Amazon Fulfillment tab under Product Data and tick the Fulfill with Amazon FBA checkbox. Click Update to save.

Test and Verify Order Fulfillment

↑ Back to top
Confirm that your WooCommerce store and Amazon are 100% wired and working correctly.
Note: These tests are only valid if all the test buttons on the settings page return successful results.
Test 1:
  1. Create a fake test product for a low price like $1 with a SKU that is NOT in FBA inventory and set it to fulfill with Amazon anyway.
  2. Purchase that and go through the full checkout process.
You should get an error returned from FBA to WooCommerce in the order notes (and by email) reporting a bad SKU. The test order will be set to the status “Fail to FBA” in WooCommerce. If that happens then you can be 100% sure your site is correctly talking to FBA and real orders with correct SKUs will definitely work. Test 2: For the full and accurate customer test, you can use a live product with active inventory in FBA.
  1. Create a product and temporarily set the price to $1 or create a coupon for 99% or 100% off to use in testing.
  2. Purchase that product with a live payment method (gateways in test mode also work). The order will be sent to FBA and create an order shipment.
  3. Log into Amazon Seller Central, go to FBA orders, and cancel that fulfillment order. It might not show up right away in the list of orders in the main queue. What we usually have to do is use the advanced search to return all dates / all orders from multi-channel fulfillment to find it right away.
If you only perform Test 1, you can still have a high level of confidence that it will work. Test 2 is a real-life test. We’ve never had a shipment inadvertently get processed and sent before canceling it in Amazon Seller Central. Normally, it can even take a few hours before it’s past the initial processing stages.


↑ Back to top

Fatal error: Can’t use function return value in write context.

↑ Back to top
On this error with WooCommerce Amazon Fulfillment activated:
Fatal error: Can’t use function return value in write context in /home/site/public_html/wp-content/plugins/ns-fba-for-woocommerce/lib/class-ns-fba-outbound.php on line 491
The cause is your hosting environment is using a PHP version older than 5.5. Check with your host about upgrading to 5.5 or later, or find the PHP version management tool in cPanel and set it to 5.5 or higher. PHP version 5.4 was released in March 2012 and is no longer supported by PHP as of Sept 2015. WooCommerce FBA is only compatible on PHP 5.5 or later.

Value UnexpectedValue for parameter PerUnitDeclaredValue is invalid

↑ Back to top
If Amazon returns an error message that creates an Order Note and/or email notification similar to:
Failed to submit order to FBA (click for full log). Error Message: Value UnexpectedValue for parameter PerUnitDeclaredValue is invalid. Reason: 1 error: The field Per Unit Declared Value has a value of EUR, was expecting GBP
This means that the currency type for the order from your store sent to FBA did not match your Seller Central account’s home region currency. The challenge with FBA and multiple currencies is that Amazon Fulfillment only allows one currency to be submitted with order data, and it must match the currency of your Seller Central account’s home region. By default the plugin passes WooCommerce’s configured currency through to Amazon, which works fine for most sites. However, if you’re using another plugin to handle multiple currencies, FBA responds with an error like the one above. This scenario and others similar to it are exactly why the manual currency override feature/setting exists. If your account’s home currency is GBP, set this for GBP in the Override Currency setting under WooCommerce > Amazon Fulfillment, and enter the best “middle road” conversion factor to use. Default value is 1. This is used in the “declared value” field that FBA requires. The only other option is to ensure that WooCommerce is configured to only handle payments in a single currency that matches your home region’s primary currency. In any case, WooCommerce must always send the currency that Amazon expects because this is what your FBA account is based on. The error tells you how the currency field should be set, as it say: “…was expecting GBP.” In this case, you need to use GBP for that setting. Note: The WooCommerce plugin doesn’t work with Multiple Currencies without the use of additional plugins.

Value for parameter SellerId is invalid

↑ Back to top
This error:
Failed to submit order to FBA (click for full log). Error Message: Value for parameter SellerId is invalid. Reason: InvalidValue.
Usually means that the value you entered as your Merchant/Seller ID is incorrect. This should be detected when testing the connection. Double-check that you have copied and pasted the correct ID.

One of SellerSKUs and QueryStartDateTime is required

↑ Back to top
This typically indicates that the Test SKU field was left blank in your settings when you tried to test the inventory connection, or perhaps you have a product with a blank SKU that is set to fulfill with Amazon.

Value for parameter DestinationAddress.PostalCode is invalid

↑ Back to top
The most common cause is a customer did not enter a properly formatted postal code for their area. Double-check the customer’s shipping address.

Access to FulfillmentOutboundShipment.CreateFulfillmentOrder is denied

↑ Back to top
Typically, this means you might be trying to connect to the wrong server for your region or your MWS credentials are not correct. Confirm your settings for the connection between Amazon and WooCommerce under Setup and Configuration. Ensure that your region is correct in the dropdown. Note: UK marketplace belongs to the EU region.


↑ Back to top

How does International Shipping work?

↑ Back to top
Unfortunately, Multi-Channel Fulfillment (MCF) does do not offer international exports yet (which FBA does for orders). The slight exception to the export rule is that shipping between the EU is not technically an export. So as an example, if you had inventory in Germany, you could ship to a customer in France via MCF. However, you can also use the settings to turn OFF international fulfillment, and the plugin will not send orders to Amazon which have a destination address outside your home country as configured in the normal WooCommerce settings.

Does it support multiple Amazon Regions and Marketplaces at the same time?

↑ Back to top
No. You can only connect to one Amazon Region per WooCommerce site.
HOWEVER: As of version 3.1.6, it now supports dynamic Marketplace ID selection based on customer shipping address within the EU Region only. This feature works automatically behind the scenes. If you are connected to the EU Region it will pass the Marketplace ID within the EU region which matches the customers shipping country. If there is no match, then it will use the Marketplace ID you configure in the settings.
Supporting both multiple regions and marketplaces simultaneously from a single site is something we’re considering for the future, but there are many challenges with that. For example, every region and marketplace has different inventory levels for the same SKU but your WooCommerce product only has 1 stock level. Syncing the level with one marketplace that is out of stock would make the product unavailable to other marketplaces even if they had stock available. For now, we recommend using International fulfillment with FBA from a single home region, or having 1 site per region to connect to unique Amazon Seller Central accounts.

Can I Import my Amazon Product data into WooCommerce?

↑ Back to top
No. This plugin currently only syncs stock level numbers. However, this is a common feature request, and it is on our radar. If you have a large number of products in Amazon, you can export the raw product data from Seller Central in CSV format and then use one of the many CSV product import plugins for WooCommerce to get most of it done.

Is there support for multiple currencies?

↑ Back to top
Yes. Please see the relevant topic in Troubleshooting for more information.

Can I sell product Bundles and still fulfill orders with Amazon?

↑ Back to top
Yes. When adding and configuring bundle products, the key point to understand is that bundles aren’t products themselves; bundles just add individual products to an order all at once. The individual products within the bundle product are most likely items you have in your FBA inventory and those are the only SKUs you want WooCommerce to send for fulfillment. This means that all of your individual products within your bundle must be set to “Fulfill with Amazon” in the product settings. However, the Bundle product itself should never be set to Fulfill with Amazon because there’s no equivalent SKU for that in your FBA inventory. This is a powerful setup because it allows you to sell several different packages, combinations, or even different quantities of items without having to have the exact same bundles in your FBA inventory as long as you have all the individual items in FBA.

Will this work with FBM (Fulfilled by Merchant)?

↑ Back to top
No. FBM means Fulfilled by Merchant, and the seller lists the products on Amazon while handling storage and all aspects of order fulfillment.

Questions & Support

↑ Back to top
Have a question before you buy? Please fill out this pre-sales form. Already purchased and need some assistance? Get in touch the developer via the Help Desk.