UPS Shipping Method allows you to get shipping rates from the UPS API. It requires that your server uses SimpleXML. The extension primarily works with measurements in Inches (in) and weight in Pounds (lbs), but other units can be converted automatically. Returned rates’ currency is based on origin country in the shipping instance setting.
UPS can calculate quotes for both domestic and international parcels.
Installation
- Download the extension from your WooCommerce dashboard.
- Go to Plugins > Add New > Upload and select the ZIP file you just downloaded.
- Click Install Now, and then Activate.
More information at: Installing and Managing Plugins.
API & Debug
Go to: WooCommerce > Settings > Shipping > UPS.
- UPS User ID – Get your UPS User ID from the developer site by signing up at UPS Developer Kit.
- UPS Password – Set by you during signup.
- UPS Access Key – Sent to you after signup.
- UPS Account Number – Sent to you after signup.
- Customer Classification – Determines what rates are returned. Note that Retail Rates will match the online calculator.
- Debug Mode – Enable/disable debug mode to show debugging information on your cart/checkout.
- Save changes.
Configuration
- Go to: WooCommerce > Settings > Shipping.
- Select your Shipping Zone that you want to add the method to, and press the Add shipping method + button on the right
- Select UPS from the dropdown and press Add shipping method:
- Configure the settings:
- Method & Origin Settings
- Method Title – Name the shipping method. This is visible to customers.
- Origin City – Enter city you are sending from.
- Origin Postcode – Set to the postcode from where you ship. It is sent to the UPS API.
- Origin Country – Set to the country from where you ship. It is sent to the UPS API.
- Services and Packaging
- Services – Choose to rename and/or rearrange the order of UPS shipping rates.
- Offer Rates – Select whether to display all rates available or only the cheapest.
- Negotiated Rates – Enable negotiated rates or not. More at: Account-Specific Negotiated Rates. This must be approved by UPS, or the API returns an error. It is sent to the UPS API.
- Delivery Confirmation – Optionally you may charge customers for delivery confirmation. This just adds the specified amount to the returned rates.
- Parcel Packing Method – See below.
- UPS Packaging – You can select from a built-in list of standard UPS packaging to use.
- Custom Boxes – Here you can add custom box sizes to pack into.
- Advanced Options
- Origin Address – Sometimes you may need to enter the address for the sender/origin.
- Residential – Choose whether to indicate deliveries as residential or commercial addresses.
* Users are permitted to enter PO Boxes as a shipping address, even though UPS does not allow it. - Insured value – Request Insurance to be included in UPS rates.
- Fallback – Enter a fallback amount for shipping, if no rates are found.
- Weight/Dimension Units – Only change this if you’re getting the “This measurement system is not valid for the selected country method.”
- Method & Origin Settings
Parcel Packing Methods
There are two packing methods with UPS, and each affects the parcels you send to the API.
Pack items individually (Default)
Each item in your cart (non-virtual) is sent to the UPS API. Quotes for all items are combined to calculate the final cost. Only the weight is required, but also entering product dimensions produces a more accurate quote. For even more accuracy, we recommend the box packer method.
To use this method, add a new product then scroll down to Product Data > Shipping to enter the product dimensions.
Pack into boxes with weights and dimensions (Recommended)
Using this method, you create your own custom box sizes in UPS Settings. The extension uses the weight/dimensions of products added to the cart, filling the custom box size from smallest to largest based on volume and size, then sends the number of boxes/size to the UPS API for a shipping estimate. Both product weight and dimensions are needed for this option to accurately calculate what boxes are needed.
Selecting this option you must follow the steps listed below for UPS Packaging or Custom Box Packing for this method to work.
UPS Packaging
UPS offers standard boxes for shipping. UPS Packaging:
Start typing the package you want to include, and it auto-populates the field for you.
Custom Box-Packing
The box packer included with this shipping method groups items into boxes that you define by height, width, length, weight, and max-weight. The packing is mainly volume based, but also considers item sizes.
Setting up box sizes
- Go to: WooCommerce > Settings > Shipping.
- Select your Shipping Zone containing UPS, then click UPS
- Scroll down to Custom Boxes and select Add Box to set up box dimensions:
Outer dimensions are used for parcel dimensions and are passed to the API.
Inner dimensions are used for packing, and items should fit within these.
Box weight is the weight of the actual box, and is added to the weight of contents.
Max weight is the maximum weight your box can hold. This includes contents weight and box weight.
How the calculation works
The packer:
- Finds boxes that fit items being packed (uses H x W x D).
- Packs all fitting items into boxes (using volume).
- Uses the smallest box that fits 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
To add handling fees to shipping calculations, you can use a Price Adjustment column in the Services section. Each UPS service can be increased or decreased (by adding the “-” sign) separately, using price adjustment columns in the row.
Use the Price Adjustment ($) column to add a flat amount to the shipping quote. In this example, the 3-Day Select and Ground shipping methods are increased by $3.50.
Use the Price Adjustment (%) to increase the shipping quote by a percentage. In this example, the 3-Day Select and Ground shipping methods are increased by 1% of the quote returned by UPS.
Customer Usage
Customers get quotes, after inputting their address, from two places:
- Cart page – via the shipping calculator
- Checkout page – via the shipping and billing forms
Available Shipping Services for UPS Extension
These services are included with the UPS Shipping extension:
Domestic
3-Day Select
Ground
2nd Day Air
2nd Day Air AM
Next Day Air
Next Day Air Saver
Next Day Air Early AM
International
Standard
Worldwide Express
Worldwide Express Plus
Worldwide Expedited Standard
Worldwide Saver
FAQ
I dropship items. Can I use multiple origin zip codes?
No, the WooCommerce UPS extension currently uses one origin zip code to request quotes from UPS.
Does this create shipping labels and tracking codes?
No it does not. It provides the integration between UPS and WooCommerce, so you can calculate shipping rates for customers and collect the correct amount of payment in checkout.
You get shipping labels and tracking numbers directly from UPS or can buy a different plugin to handle that for you.
Rates are not in the correct currency
UPS will use the currency that is enabled on your account. So if your site uses a different currency then the one which is set on the account, the rates won’t be returned. If the debug setting is enabled this will be indicated with a warning like:
[UPS] Rate for Standard (UPS) is in USD but store currency is EUR.
If you need to convert these rates to the correct currency we would suggest using the Multi Currency extension and setting up a conversion rate for both the account currency and the store currency.
Troubleshooting
No rates returned/no rates available
- Confirm that your API credentials are correct.
- Enable development mode, or turn on WP_DEBUG to see debugging information on the cart page. This often reveals the issue.
- Check that your products have sizes and weights set – without this, the calculation cannot be performed.
Customize
If you would like to remove UPS as a shipping option for some shipping classes you can use the WooCommerce Conditional Shipping and Payments extension.
Or you can use code to do this.
You can add the following code to your functions.php
. You need to change shipping classes used on the 14th line:
/** | |
* Check the cart for specific classes, remove UPS Shipping method if they are present | |
* | |
* REMOVE THE TOP <?php if there is no ?> before (or you have an error after adding this) | |
* | |
* Add the code to your theme functions.php file | |
*/ | |
add_filter( ‘woocommerce_package_rates’, ‘unset_ups_shipping_method’ , 10, 2 ); | |
function unset_ups_shipping_method( $rates, $package ) { | |
// Setup an array of shipping classes that do not allow UPS Shipping (@todo change this) | |
$shippingclass_array = array( ‘no-ups’ ); | |
/** | |
* loop through the cart looking for the products in the array above | |
* and unset the Free shipping methods as necessary | |
*/ | |
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) { | |
$shipping_class = get_the_terms( $values[‘product_id’], ‘product_shipping_class’ ); | |
if ( isset( $shipping_class[0]->slug ) && in_array( $shipping_class[0]->slug, $shippingclass_array ) ) { | |
/** | |
* Unset the shipping methods here | |
*/ | |
unset( $rates[‘ups:01’] ); | |
unset( $rates[‘ups:02’] ); | |
unset( $rates[‘ups:03’] ); | |
unset( $rates[‘ups:04’] ); | |
unset( $rates[‘ups:05’] ); | |
unset( $rates[‘ups:06’] ); | |
unset( $rates[‘ups:07’] ); | |
unset( $rates[‘ups:08’] ); | |
unset( $rates[‘ups:09’] ); | |
unset( $rates[‘ups:10’] ); | |
unset( $rates[‘ups:11’] ); | |
unset( $rates[‘ups:12’] ); | |
unset( $rates[‘ups:13’] ); | |
unset( $rates[‘ups:14’] ); | |
unset( $rates[‘ups:15’] ); | |
// The rates have been removed, no point in carrying on | |
//break; | |
} | |
} | |
// Return what’s left of the $rates array | |
return $rates; | |
} |