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 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- Purchase the product from WooCommerce.com
- Download the ZIP file from your WooCommerce.com dashboard
- Go to Plugins > Add New > Upload and select the ZIP file you just downloaded
- Click Install Now and then Activate.
- Read on to learn how to set up and configure the product.
More information at: Install and Activate Plugins/Extensions.
Connecting Your FedEx Account
↑ Back to topLet’s now be sure to connect your WooCommerce store to your FedEx account. Head to WooCommerce > Settings > Shipping > FedEx to enter your API credentials, setup LTL Freight, and enable debug mode if needed.
REST API Setup
↑ Back to topThis is how your store will get shipping rates from your FedEx account and show said rates to your customers. You’ll need to first sign up for a FedEx account, create a project in their developer portal, and then you’ll be able to obtain your API details. Here’s how to get your REST API details for your FedEx Shipping Method.
- First, head to the FedEx Developer Portal.
- Choose your region, and then select “Sign Up or Log In” in the sidebar.
- After creating an account, and / or logging in, you’ll be prompted to “Create an Organization.”
- The organization must have at least one active FedEx account linked to it.
- In the “I work for a company that” dropdown choose…
Ships with FedEx and needs to integrate FedEx APIs into their system. - In the “Company name” field enter your own companies name.
- In the “Company website” prompt enter your own companies website URL.
- In the “Organization name” field enter a name that other users will recognize. E.g. department, division, region, location, or can be the same as your company name.
- In the “Country/Territory” dropdown choose where your company operates.
- Select the “Create” button to move to the next steps.
With your FedEx account and Organization created, we can now create a project and get your API details to add to your FedEx settings in WooCommerce. Select “My Projects” in the sidebar, then “Create A Project.”
- In the “I work for a company that” dropdown choose…
Ships with FedEx and is using a third-party software solution that has requested API keys. - 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/.
- Select “Continue” to be taken to step 1
Step 1 – Select API(s) for your project
- Select the Ship, Rate, & other APIs option.
- Select the following 3 APIs: “Address Validation API“, “Freight LTL API“, and “Rates and Transit Times API.”
- Select the “Next” button near the bottom of that page to be taken to Step 2.
Step 2 – Configure project
- Enter a descriptive project name (e.g “FedEx Shipping Method for WooCommerce”).
- Select any countries you plan to ship to or from.
- Use the “Select a country or territory” dropdown multiple times to make your selection.
- Select Yes/No for the “Do you plan on shipping using FedEx SmartPost® Returns?”
- FedEx Ground Economy Returns (formerly called FedEx SmartPost Returns) is a shipping option for returning packages that weigh 70 lbs. or less and aren’t time-sensitive.
- Select Yes/No for the “Do you plan on shipping using FedEx Freight® LTL?“
- An LTL (less-than-truckload) freight shipment consists of goods, commodities or cargo that weighs more than 150 lbs. It’s usually palletized.
- Under the Notificiations heading you can use the settings link to choose what FedEx API notifications you’d like emails on.
- Select Next to be taken to Step 3 – Confirm details.
Step 3 – Confirm details
- Make sure the appropriate APIs are enabled: “Address Validation API“, “Freight LTL API“, and “Rates and Transit Times API.”
- Make sure the correct countries you’ll ship to and from are listed.
- Accept the terms by selecting the appropriate checkboxes and click “Create.”
- You should see a success message. Click “Okay.”
Step 4 – Add your Shipping Account
- Once you’re redirected to the API project overview page, you’ll be on the “Test Key” tab. 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.
- At the top of the page, click the “Production Key” link.
- Note: In order to create Production API Keys, your API Project needs to have a “Shipping Account” associated to it. If you aren’t sure if you have a Shipping Account created yet, or aren’t sure what the Account Number/Account Nickname is, you can see that info on the Account Management page on FedEx.com. Open that page in a separate browser tab, as you will need to know the 9-digit (numerical) Account Number and “Account Nickname” to add the Shipping Account to the project. If your Shipping Account doesn’t have a Nickname shown on the Account Management page (linked above), click the “view/Edit” link and add one.
- On the API project overview page, enter a “Key name” (or leave the default key name, either is fine).
- Next, add your Shipping Account, based on your situation/what you see on that page:
- If you already have a Shipping Account created and see it on that page, select it and click “Next”.
- If you already have a Shipping Account created but don’t see it on that page (i.e. “No accounts available”), click the “Add Shipping Account” link and enter the information for your existing Shipping Account (you will need the 9-digit account number and account nickname, as well as the Company Billing Address info for that account).
- If you don’t have a Shipping Account yet, click the “Add Shipping Account” link, then click the “create an account” link and go through the creation flow.
- After adding that info, you will need to agree to the EULA and then click “Add Account”.
- If you are redirected to a different page after adding a Shipping Account, go back to the My Projects page, click the name of your project, and then click the “Production Key” link at the top of the page again. You should now see your Shipping Account on the API project overview page. Select that account and click “Next”.
- Once your Production keys are shown to you, save that information somewhere safe and enter those keys in the FedEx Shipping Method settings on the WooCommerce > Settings > Shipping > FedEx page in your site admin.
API Connection Settings
↑ Back to topThe API connection settings can be found on the WooCommerce > Settings > Shipping > FedEx page in your site admin.
- FedEx API Type – This is a legacy option that is selectively shown, so it may not be visible. If this setting is available, you can select whether to use the REST API (recommended and all new accounts must use this) or the SOAP (legacy) API.
- Shipping Account Number – This is a 9-digit number that is provided by FedEx after signup and visible on the Account Management page on FedEx.com. If you don’t have a Shipping Account, you can create one here: Open a FedEx Account.
- REST API Key – Provided by FedEx after completing the REST API setup process.
- REST API Secret – Provided by FedEx after completing the REST API setup process.
- REST API Status – This displays the current FedEx REST API Authorization Status.
- Production Key – Check this box if you are using Production Keys, leave unchecked if not.
SOAP (Legacy) API Setup
↑ Back to topSOAP (Legacy) 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.
- 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.
- Debug Mode – Choose whether to enable debugging, which is helpful for troubleshooting purposes.
- 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 topNote:
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.
- Go to WooCommerce > Settings > Shipping > Shipping zones.
2. Click the Edit link in the Shipping Zone where you want to offer this method.
3. Inside the Shipping Zone, click the Add shipping method button.
4. Once you see the “Create shipping method” pop-up, select “UPS” and then 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 topThere are two packing methods with FedEx, and each affects the parcels you send to the API.
Per-Item (Default: Pack items individually)
↑ Back to topEach 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 topItems 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 topIf 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- Under Parcel Packing Method, select ‘Recommended: Pack into boxes with weight and dimensions’ to set up the boxes specifications.
- Select ‘Add box’ to add your own.
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 topYou can manually rearrange the order of FedEx services by selecting the hamburger icon:
And then drag the item to where you want it to display:
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 once you’ve added any custom boxes needed.
This is what the customer sees on the front end:
How the calculation works
↑ Back to topThe box packer:
- Finds boxes that fit items being packed (uses H x W x D).
- Packs all items into boxes (using volume).
- Uses the smallest box fitting 100% of items *or* uses the highest % packed box, and then passes unpacked items back (and repeats the process)
- Packs unpackable items alone, using item dimensions.
- Returns all packed boxes.
Handling Fees
↑ Back to topTo 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.
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.
LiftGate Service
↑ Back to topLiftgate 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.
Customer Usage
↑ Back to topCustomers 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
Troubleshooting
↑ Back to topNo 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 topFor 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 topAccording 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 topFedEx 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 topMake 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 topAccording 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 topThe 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 topYou 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 topFor 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 topAlthough not currently possible, feel free to add your votes to the idea on our Ideas Board.
Can this plugin print labels?
↑ Back to topNo.
Questions and Support
↑ Back to topSomething 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.