1. Documentation /
  2. FedEx Shipping Method

FedEx Shipping Method

FedEx Shipping Method is a premium shipping method that allows you to pull shipping rates 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 quotes for domestic and international parcels. The extension primarily works with in (inches) and lbs (pounds), but other units can be converted automatically.

You can purchase shipping labels directly from FedEx or use a label printing extension to handle that.

The API and the built-in box packer require that your non-virtual products have weights and dimensions set. More info at: Adding Shipping Dimensions to Products.

Installation

↑ Back to top
  1. Download the .zip file from your WooCommerce account.
  2. Go to: WordPress Admin > Plugins > Add New to upload the file you downloaded with Choose File.
  3. Install Now and Activate.

More information at: Installing and Managing Plugins.

API & Debug 

  • Go to: WooCommerce > Settings > Shipping > FedEx.
  • Debug Mode – Choose whether to enable debugging, which is helpful for troubleshooting purposes.
  • API Settings – Your API access details are obtained from the FedEx website. The following links will only work when logged in.
  • FedEx API Type – Select whether to use the REST API (new accounts must use this) or the SOAP (legacy) API.
  • FedEx Account Number * – Provided by FedEx after signup. More info at: Open a FedEx Account.
  • Production Key * – Tick this box according to the type of account (developer or production).

    If REST API is selected:
  • FedEx Client ID * – Provided by FedEx after completing the REST API setup process.
  • FedEx Client Secret * – Provided by FedEx after completing the REST API setup process.

    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.


    Follow the appropriate setup process depending on the selected API type:

REST API Setup:

Navigate to https://developer.fedex.com/

Click “Sign Up or Log In” in the left-hand sidebar.

Once logged in, click “My Projects” in the left-hand sidebar.

Click “Create A Project.”

Select “I work for a company that ships with FedEx and is using a third-party software solution that has requested API keys.”

Enter “WooCommerce” in the Third-party Company field.

Enter “FedEx Shipping Method” in the Third-party Product field.

Enter “https://woocommerce.com/products/fedex-shipping-module/” in the Third-party Product Website field.

Click “Continue.”

Enter a descriptive project name (e.g “FedEx Shipping Method for WooCommerce”).

Check the following 3 APIs: “Address Validation API”, “Freight LTL API”, and “Rates and Transit Times API.”

Click “I understand.”

Scroll down and click “Next.”

Read all terms/agreements, type your full name as shown, check the box, and click accept.

Select any countries you plan to ship within.

Select Yes/No for FedEx SmartPost Returns and FedEx Freight LTL.

Select whether you would like to receive FedEx API email notifications.

Read the Terms of Use and Privacy Policy and check the box if you agree.

Click “Create.”

You should see a success message. Click “Okay.”

If you would like to do some testing, you can use the test credentials.

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.

Once you’re ready to move to production, click “Production Key”, create or assign a shipping account to the production key and click “Next.”

Copy and paste your production api key and secret somewhere safe and click “Done.”

The “Address Validation API” and “Freight LTL API” both require certification. Please click “Go to API Certification” and complete the steps.

Legacy SOAP API Setup:

FedEx no longer allows sign-up for the SOAP API, but if you have an existing account already, get a developer key. After testing, get a production key.

  • 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 or pack into boxes using weight/dimensions (see more below)
    • Rates and Services – Control the services and rates you offer customers.
      • Residential – Enables the residential flag. If your account has Address Validation enabled, this will be turned off/on automatically. (more details about Address Validation can be obtained from FedEx directly.)
      • Insurance – Tick the box to get rates and insurance. Untick 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 before you buy this extension? Please fill out this pre-sales form – please include the name of this extension in your query.
  • 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