FedEx Shipping Method

FedEx Shipping Method is a premium shipping method that allows you to calculate live shipping rates on the Cart and Checkout pages via the FedEx API. It requires your store to use US or Canadian Dollars as its currency. FedEx works with a base country of United States or Canada and can calculate shipping costs for domestic and international shipments. The extension primarily works with in (inches) and lbs (pounds), but other units can be converted automatically.

Shipping label functionality is not included in this plugin. You can purchase shipping labels directly from your FedEx.com account or use a label printing extension.

The API and the built-in box packer require that the products you intend to ship have weights and dimensions added to them.
More info at: Adding Shipping Dimensions to Products.

Installation

↑ Back to top
  1. Purchase the product from WooCommerce.com
  2. Download the ZIP file from your WooCommerce.com dashboard
  3. Go to Plugins > Add New > Upload and select the ZIP file you just downloaded
  4. Click Install Now and then Activate.
  5. Read on to learn how to set up and configure the product.

More information at: Install and Activate Plugins/Extensions.

API Connection 

Connect your FedEx account by entering your Shipping Account Number and API keys on the WooCommerce > Settings > Shipping > FedEx page.

API Type

By default, new installations of the FedEx Shipping Method plugin will only see the REST API fields and must use this connection method. However, sites that have already been connected using SOAP (legacy) API keys will see the “API Type” dropdown setting. This option allows you to select either the “REST” API (which is the recommended option) or the “SOAP (legacy)” API (which is not recommended, as this option will stop working in the very near future, as explained in the Important Note below). If you don’t see the “API Type” dropdown setting, follow the instructions described below to connect your FedEx account using the REST API.

Important Note: If you do not already have SOAP (legacy) API keys created in your FedEx account, you must use the REST API setup described below, as FedEx no longer issues new SOAP API keys. This is because the SOAP-based “FedEx Web Services” is being retired and FedEx has replaced it with RESTful APIs. Additionally, starting on August 31, 2024, you will no longer be able to use the SOAP-based FedEx Web Services. To prevent service interruptions for live rate calculations on your site, you must setup and use the REST API connection before that date.

REST API Setup

↑ Back to top

Connecting via the REST API involves quite a few steps, as you need the following during the setup process:

  • A FedEx account (which will be used to login on both the regular site, fedex.com, and the Developer site, developer.fedex.com)
  • A nine-digit Shipping Account Number (provided by FedEx during account creation and accessible from the My Profile > Account Management page on FedEx.com)
  • A “Project” (created on the Developer site, with the required APIs added and keys generated)
  • An “Organization” (created on the Developer site, for managing Projects)
  • A “Shipping Account” (linked to the Project)

Setup instructions:

  • 1) Go to https://developer.fedex.com/.
  • 2) Click “Sign Up or Log In” at the top of the left sidebar. If you already have a FedEx account, log in with those credentials. If you don’t have a FedEx account yet, sign up for an account now.

  • 3) Once you are logged in, click the “My Projects” link in the left sidebar menu.

  • 4) On the “My Projects” page, you will need to “Create an Organization” if you do not already have one set up in your FedEx account.

  • 5) When creating an Organization, you will need to provide FedEx with some information related to your company:
    • For the “I work for a company that:” question, select “Ships with FedEx and needs to integrate FedEx APIs into their system” in the dropdown list.
    • In the “Company name” field, type your company’s formal name.
    • In the “Company website” field, enter the URL of the website that you will be using the FedEx Shipping Method extension on.
    • In the “Organization name” field, give your organization a name that you and other users will recognize. This name can be the same as your company name or you can choose something different if you prefer.
    • In the “Country/Territory” dropdown list, select your company’s location.
    • Once all the fields have been filled out, click the “CREATE” button, as seen below.

  • 6) Once your Organization has been created, you will be redirected to the success page and provided information about API transaction quotas, rate limits, and managing your Organization.
  • 7) Next, click the “My Projects” link in the left sidebar menu and then click the “+ CREATE A PROJECT” button:

  • 8) After clicking the “+ CREATE A PROJECT” button, you will see a pop-up window asking for more info about your API needs. In the “I work for a company that:” dropdown, select “Ships with FedEx and is using a third-party software solution that has requested API keys” and then click “NEXT“:

  • 9) After that you will be prompted to provide information about the third-party solution you are using. Enter the following information in those text fields:
    • In the “Third-Party Company” field, enter “WooCommerce“.
    • In the “Third-Party Product” field, enter “FedEx Shipping Method“.
    • In the “Third-Party Product Website” field, enter “https://woocommerce.com/products/fedex-shipping-module/“.
    • Once those fields have been filled out, click “CONTINUE“.

  • 10) After clicking “CONTINUE“, scroll down to the bottom of the page and look for the “Step 1 – Select API(s) for your project” section. Next, click the “SELECT” button in the “Ship, Rate & other APIs” box on the left side of that section:

  • 11) After clicking “SELECT” in the “Ship, Rate & other APIs” box, scroll down and you will see all of the available APIs. Click the checkboxes for the three APIs listed below and then click “NEXT“:
    • Address Validation API
    • Freight LTL API
    • Rate and Transmit Times API

  • 12) After selecting the APIs, you will be asked to configure your project:
    • In the “Project name” field, enter a name for your project, such as “WooCommerce FedEx Shipping Method”.
    • Using the “Country/territory” dropdown list, add any locations that you plan on shipping to by selecting it in the list. Repeat this process to add multiple locations. The selected countries/territories will be shown under the dropdown and incorrect selections can be removed via the “REMOVE” link next to that addition.
    • Choose the appropriate Yes/No radio button for the “Do you plan on shipping using FedEx SmartPost® Returns?” option.
    • Choose the appropriate Yes/No radio button for the “Do you plan on shipping using FedEx Freight® LTL?” option.
    • Once all of the fields/selections are completed, click “NEXT“.

  • 13) Confirm the details of your API project, check both of the “Accept terms” checkboxes, and then click the “CREATE” button.

  • 14) Once your project has been successfully created, you will see a pop-up message with that info. Click the “OKAY” button to continue.
  • 15) Next, you will be redirected to the Project Overview page, which defaults to the “Test Key” tab. The FedEx Shipping Method plugin needs to use “Production Keys“, so click that tab at the top of the page (as seen in the screenshot below).
  • 16) On the “Production Key” tab, enter a “Key name” in that text field or use the default placeholder name. If you have an existing “Account Number” that shows in the dropdown list, you can select it and click “NEXT” to continue. If the dropdown is grayed out (as seen in the image below), click the “+ ADD AN ACCOUNT” link:

  • 17) After clicking “+ ADD AN ACCOUNT“, you will be directed to the Add Shipping Account page.
    • 17a) To find an existing “Account Number” and “Account Nickname“, open a new browser tab and go to the My Profile > Account Management page on FedEx.com. If your account doesn’t have a nickname, click the “View/Edit” link. Then click the “Edit” link in the “Nickname and Security Options” section and add one there. Once that is done, go back to the Add Shipping Account page and enter your “Account Number“, “Account Nickname“, and your company billing address in those respective fields and then click “NEXT“.
    • 17b) If you don’t have a nine-digit FedEx account number yet, click the “create an account” link above those fields and go through the steps. After completing the account creation process, go to the My Profile > Account Management page to get your nine-digit “Account Number” and “Account Nickname“. If your account doesn’t have a nickname, click the “View/Edit” link. Then click the “Edit” link in the “Nickname and Security Options” section and add the nickname there. Once that is done, go back to the Add Shipping Account page and enter your “Account Number“, “Account Nickname“, and your company billing address in those respective fields and then click “NEXT“.
  • 18) After entering your Shipping Account info, you will be prompted to accept FedEx’s End User License Agreement. After doing so, click the “ADD ACCOUNT” button at the bottom of the page.
  • 19) Once your Shipping Account has been added, click the “My Projects” link in the left sidebar menu and click the link for your API Project in the “Name” column. Click the Production Key tab at the top of the page, enter a “Key name” (or leave the default/placeholder), select your account in the “Account number” dropdown. Click “NEXT” and your Production Keys will be created.
  • 20) Your Production Keys will be automatically generated and provided to during this step. Save the “API key” and “Secret key” somewhere secure, as you will need to enter these keys in the FedEx Shipping Method plugin settings.
  • 21) Open the WordPress admin dashboard for your site in a separate tab and go to the FedEx Shipping Method plugin settings on the WooCommerce > Settings > Shipping > FedEx page:
    • Copy your nine-digit Account Number and paste it into the Shipping Account Number field.
    • Copy the API key that was generated by FedEx and paste it into the REST API Key field in the plugin settings.
    • Copy the Secret key that was generated by FedEx and paste it into the REST API Secret field in the plugin settings.
    • Check the Production Key checkbox.
    • Save the settings and the REST API Status should show as “Authenticated”. If not, double-check that the info entered in those fields is correct.

When the setup has been completed, the “Production Key” tab of the API Project Overview page should look like the below screenshot (which has boxes around the important elements):

A note regarding “Test Keys”: as of November 2023, FedEx discontinued the previous testing API, and we’re currently in the process of implementing their new virtualized sandbox API. In the meantime, Test Keys won’t work on our extension.

SOAP (legacy) API Setup (for reference only)

↑ Back to top
FedEx no longer allows sign-up for the SOAP API, but if you have an existing Web Services account already you can create/use a test key or production key.

If SOAP (legacy) API is selected:

– Your server must have SOAP installed. Please contact your hosting provider for more information on SOAP installation on your server.
FedEx Meter Number * – Provided by FedEx after signup. More info at: How Do I Get a FedEx Meter Number.
Web Services Key * – Provided by FedEx after signup.
Web Services Password * – Provided by FedEx after signup.
FedEx LTL Freight – Settings for FedEx Freight rates. Tick the Enable Freight box to offer this option and fill out your full shipping address. Note: FedEx Freight rates only appear on the checkout page, as they require a recipient’s CITY.

Special Freight Note: The account number defaults to your main FedEx account number If you have a different account number for FedEx Freight ( you find this under the LTL Freight Accounts option in the Databases drop-down menu in your FedEx account screen ) then you can enter it here.

Configuration

↑ Back to top
This shipping method has to be added to a Shipping zone. If you haven’t configured your Shipping zones yet, please check our Setting up Shipping Zones guide before proceeding.
  1. Go to WooCommerce > Settings > Shipping > Shipping zones.

2. Click the Edit button on the shipping zone where you want to offer this method.

3. Inside the shipping zone, click the Add shipping method button.

4. Then, select the shipping method and click the Continue button.

  • Click the Edit button on the right side of the Shipping methods table to configure the settings:
    • Method Title – Name the shipping method. This is visible to customers.
    • Origin Postcode – Post/zip code from where you ship. Sent to the FedEx API.
    • Packages
      • Parcel Packing Method – Choose to pack items individually (“Default”) or pack into boxes using weight/dimensions (“Recommended”). More info in section below.
    • Rates and Services – Control the services and rates you offer customers.
      • Residential – If this box is checked, Residential rates to be used regardless of address type. If unchecked, the Address Validation API will determine address type.
      • Insurance – Check this box to include insurance in shipping quotes. Leave unchecked if using Smart Post.
      • FedEx One Rate – Choose whether to enable FedEx One (flat) rates. More info at: FedEx One Rate.
      • Request Type – Choose Account (get rates for your account) or List (get standard FedEx rates).
      • FedEx SmartPost Hub – If using Smart Post, define your ID. Ensure that ‘Enable Insurance’ is unticked.
      • Offer Rates – Choose to return all rates (allowing your customer to select) or return a single rate anonymously.
      • Services – Here you can rename and change the order of FedEx shipping rates, enable methods you wish to offer, and add price adjustments. More below.
  • Save Changes.

* Required fields

Parcel Packing Method

↑ Back to top

There are two packing methods with FedEx, and each affects the parcels you send to the API.

Per-Item (Default: Pack items individually)

↑ Back to top

Each item in your cart (non-virtual) will be sent to the FedEx API. Quotes for all items will be combined to calculate the final cost.

Pack into Boxes (Recommended: Pack into boxes with weights and dimensions)

↑ Back to top

Items will be packed into pre-defined boxes and sent to the API. We recommend this option. See Box Packing below for more information.

Box Packing

↑ Back to top

If you choose “Pack into boxes” as a parcel packing method, the area to set up box sizes will appear.

The box packer included with this shipping method lets you group items into packages for which you define height, width, length, weight, and max-weight. The packing is mainly volume-based, but also considers item size.

The box packer is volume-based. This will provide good results in most cases, but will never be as accurate as a real person packing a box (see BIN Packing Problem). Therefore, it’s important to understand that packing results are as accurate as possible, and any anomalies should be accepted.

Setting up box sizes

↑ Back to top
  1. Under Parcel Packing Method, select ‘Recommended: Pack into boxes with weight and dimensions’ to set up the boxes specifications.
  2. Select ‘Add box’ to add your own.
Screen Shot on 2015-01-09 at 15-11-10

Dimensions are used for parcel dimensions and passed to the API, and are also used for packing.

Box weight is the weight of the box itself and added to the weight of contents.

Max weight is the maximum weight your box can hold. This includes the weight of contents and the box. (Note: This value should never be set to 0 , as that will result in that box not being used due to the Max Weight limitation being met before any items are packed inside.)

Enabled can be turned on and off, depending on whether you want to use the box.

You’ll notice that boxes are pre-filled with FedEx standard boxes. You can disable if you want custom box sizes.

Rearrange Shipping Options

↑ Back to top

You can manually rearrange the order of FedEx services by selecting the icon:

Screen Shot 2015-01-09 at 15.22.19

And then drag the item to where you want it to display:

Screen Shot 2015-01-09 at 15.23.26
You may also add a positive or negative price adjustment (by amount $ or percentage %) to any method using the price adjustment columns (as seen above). For example, if you want to discount the ground shipping method by 10%, you would add -10 to the Price Adjustment % column for the ground option.

Save your settings.

This is what the customer sees on the front end:

FedEx-Options-FrontEnd

How the calculation works

↑ Back to top

The box packer:

  1. Finds boxes that fit items being packed (uses H x W x D).
  2. Packs all items into boxes (using volume).
  3. Uses the smallest box fitting 100% of items *or* uses the highest % packed box, and then passes unpacked items back (and repeats the process)
  4. Packs unpackable items alone, using item dimensions.
  5. Returns all packed boxes.

Handling Fees

↑ Back to top

To add handling fees to shipping calculations, you can use a Price Adjustment column in the Services section. Each FedEx service can be increased separately using the price adjustment columns in the row.

Use the Price Adjustment ($) column to add a flat amount to the shipping quote.

Screen Shot on 2015-01-09 at 15-25-05

Use the Price Adjustment (%) to increase the shipping quote by a percentage. In this example, the 3-Day Select and Ground shipping methods will be increased by 1% of the quote returned from FedEx.

Screen Shot on 2015-01-09 at 15-25-52

LiftGate Service

↑ Back to top

Liftgate service is an additional service offered by FedEx when picking up or delivering freight. It requires the use of a hydraulic lift (called a liftgate) installed on the back of the truck. The liftgate is used to raise material from ground level to the level of the truck bed and vice versa.

Liftgate service is only applicable as additional surcharge to FedEx LTL Freight delivery. If cart contains product with enabled liftgate service only FedEx Freight shipping options will be presented to customer. Setting liftgate service for variable product on product level is equal to enabling liftgate service for each variation.

FedEx Liftgate Settings
LiftGate Service can be set on product level under shipping section.
FedEx Liftgate Settings
LiftGate Service can be set on product variation level.

Customer Usage

↑ Back to top

Customers can get quotes based on the address entered from two places:

  • Cart page – by using the shipping calculator
  • Checkout page – by filling in shipping and billing forms
Rates can be selected by customers.

Troubleshooting

↑ Back to top

No rates returned/no rates available

↑ Back to top
  • Enable debug mode to see debugging info on the cart page. This often reveals the problem.
  • Check that the products have sizes and weights set. Without this, the calculation cannot be performed.
  • Go to WooCommerce > Settings > General and verify that your store’s base country is the United States or Canada and the currency is set to US Dollars or Canadian Dollars, respectively.
  • Confirm that the plugin is linked to FedEx API. It uses SoapClient.

I have enabled Smart Post, but no rates are being returned

↑ Back to top

For SmartPost rates to work, you:

  • Need a FedEx account and meter number that supports SmartPost.
  • Your package or item needs to weigh greater than 1 lb. Otherwise, the rate is invalid.

FedEx Ground is available when shipping from the US to Canada, and FedEx Ground International is not.

↑ Back to top

According to FedEx terms:

You can obtain rates for FedEx Ground shipments to destinations within the US and Canada. If you are in a FedEx discount program, contact your FedEx account executive for an exact rate quote.

If your FedEx account has “International Ground Direct Distribution” enabled, be sure to check that box in the plugin settings to get the correct rates.

I do not know my Default Freight Class

↑ Back to top

FedEx has developed an LTL Freight Classification tool that can guide you through a quick two-step process to obtain the best option for you.

I get an error: The address entered for FEDEX_FREIGHT is missing one or more required fields: State; ; ; ; . Please resubmit your request with all required address fields

You can get this error if the Province codes is not abbreviated correctly in the Address section.

Full state codes can be found via the FedEx Transaction Coding Reference Guide. Currently (May 2021) the US State Codes are found at Table 86, page 912-913 under U.S. State Code Table and Canada Province Codes are Table 82, page 910 under Canadian Province Codes

I get the error: The account number entered for FEDEX_FREIGHT could not be validated

↑ Back to top

Make sure that your account number is matching from the LTL Freight Accounts area (as this will be a freight-specific account number, which is different than your regular account number) and that you have the correct 2 letter abbreviation for your country (US, CA).

The account number listed here defaults to your main FedEx account number. If you have a different account number for FedEx Freight ( you find this under the LTL Freight Accounts option in the Databases drop-down menu in your FedEx account screen ) then you can enter it here.

FedEx LTL Freight does not show as an option when enabled

↑ Back to top

According to FedEx Guidelines Freight does not show until the total weight of the order exceeds 150 lbs.

Also, please note that specific freight services need to be enabled based on the shipper’s location and customer destination. If a freight rate doesn’t show, try enabling more services.

What is the difference between GROUND_HOME_DELIVERY and FEDEX_GROUND?

↑ Back to top

The GROUND_HOME_DELIVERY service is for residential addresses while FEDEX_GROUND is for commercial addresses. The FedEx integration will automatically choose the correct service(provided it is enabled) based on the address type.

FedEx Ground / FedEx Ground Home Delivery does not show as an option when enabled

↑ Back to top

You will not be able to get the FedEx Ground Shipping Rates with the FedEx One Rate enabled, as FedEx One Rate does not support ground shipments. So make sure the FedEx One Rate option is disabled.

FedEx Ground Home Delivery will also not show unless “Default to residential delivery” is enabled:

If Home Delivery is not offered, the alternative is to also have FedEx Ground enabled.

FedEx One Rate does not show as an option when enabled

↑ Back to top

For One Rate to apply, you must have valid FedEx One Rate boxes enabled. FedEx maintains a list of compatible boxes, which can be enabled in the plugin settings. At least one of the applicable service codes (i.e., FedEx Express Saver, FedEx 2Day, FedEx 2Day A.M., FedEx Standard Overnight, FedEx Priority Overnight, FedEx First Overnight) must likewise be enabled. You should also make sure that the FedEx Express Saver service is enabled as well, to ensure the cheapest delivery rates are offered to your customers.

Require a signature option.

↑ Back to top

Although not currently possible, feel free to add your votes to the idea on our Ideas Board.

Can this plugin print labels?

↑ Back to top

No.

Questions and Support

↑ Back to top

Something missing from this documentation? Do you still have questions and need assistance?

  • Have a question about a specific extension or theme you’d like to purchase? Click here.
  • Already purchased and need some assistance? Get in touch with a Happiness Engineer via the WooCommerce.com Support page and choose this extension name from the “I need help with” dropdown