Skip to content

How to Connect Shipping Carriers to Odoo: UPS, FedEx, DHL Integration Guide

DeployMonkey Team · March 23, 2026 11 min read

Why Integrate Shipping Carriers with Odoo?

Without carrier integration, your shipping process looks like this: check the delivery order in Odoo, switch to the carrier's website, manually enter the recipient address and package details, print the label, then go back to Odoo and type in the tracking number. Multiply that by 50-500 orders per day. Carrier integration eliminates all of this — Odoo generates labels, calculates rates, and updates tracking numbers automatically from within the delivery workflow.

Supported Carriers in Odoo

CarrierModuleEditionFeatures
UPSdelivery_upsEnterpriseRates, labels, tracking
FedExdelivery_fedexEnterpriseRates, labels, tracking
DHL Expressdelivery_dhlEnterpriseRates, labels, tracking
USPSdelivery_uspsEnterpriseRates, labels, tracking
Easypostdelivery_easypostEnterpriseMulti-carrier aggregator
Sendclouddelivery_sendcloudEnterpriseEuropean carriers
bpostdelivery_bpostEnterpriseBelgian postal service

Community edition users can install third-party carrier modules from the Odoo Apps Store.

Step 1: Get Carrier API Credentials

UPS

  1. Register at developer.ups.com
  2. Create an application to get your Client ID and Client Secret
  3. Note your UPS Account Number
  4. Enable the Rating, Shipping, and Tracking APIs

FedEx

  1. Register at developer.fedex.com
  2. Create a project and get your API Key and Secret Key
  3. Link your FedEx Account Number and Meter Number

DHL Express

  1. Contact your DHL Express sales representative
  2. Request API access credentials (Site ID and Password)
  3. Note your DHL Account Number

Step 2: Install the Carrier Module

  1. In Odoo, go to Apps
  2. Search for the carrier name (e.g., "UPS Shipping")
  3. Install the module
  4. Go to Inventory → Configuration → Delivery Methods

Step 3: Configure the Delivery Method

  1. Click Create in Delivery Methods
  2. Set the Provider to your carrier (UPS, FedEx, etc.)
  3. Enter your API credentials
  4. Configure shipping options:
  • Service type: Ground, Express, Overnight, etc.
  • Package type: Your packaging or carrier packaging
  • Weight unit: kg or lb
  • Insurance: Optional declared value coverage
  • Saturday delivery: If applicable

Step 4: Test in Sandbox Mode

All major carriers offer sandbox/test environments:

  1. In the delivery method, check Test Mode or Debug Mode
  2. Create a test sale order with a real delivery address
  3. Confirm the order and check the delivery order
  4. Click Send to Shipper — it should generate a test label
  5. Verify the label PDF, tracking number, and calculated rate
  6. Once verified, switch to production mode

Step 5: Workflow Integration

With carrier integration active, the shipping workflow becomes:

  1. Sale order confirmed → Delivery order created with carrier and service type
  2. Warehouse picks items and validates the delivery
  3. Click Send to Shipper → Odoo calls the carrier API
  4. Carrier returns: shipping label (PDF), tracking number, and shipping cost
  5. Odoo stores the tracking number on the delivery order
  6. Customer receives tracking notification email automatically
  7. Print the label and apply it to the package

Step 6: Enable Real-Time Rates on Website

Show shipping costs to customers during checkout:

  1. In the delivery method, enable Website Published
  2. On your Odoo eCommerce checkout, customers see real-time carrier rates based on their address and cart weight
  3. They choose their preferred shipping method
  4. The selected carrier and rate flow through to the sale order

Multi-Carrier Strategy

Most businesses use multiple carriers for different scenarios:

  • Domestic standard: USPS Priority Mail (cheapest for light packages)
  • Domestic express: UPS Next Day Air or FedEx Overnight
  • International: DHL Express (best global network)
  • Heavy/freight: UPS Freight or carrier-specific LTL

Configure all carriers in Odoo and let warehouse staff (or automated rules) choose the best option per shipment.

Troubleshooting

Rate Calculation Returns Zero or Error

Check that the source warehouse address and destination address are complete (including zip code and country). Verify the product weight is set on the product form. Carriers reject requests with missing weight or invalid addresses.

Label Generation Fails

Common causes: API credentials expired, account not in good standing, or the package dimensions exceed the carrier's limits. Check the Odoo log or chatter for the API error message — carriers return descriptive errors.

Tracking Number Not Updating

Ensure Send to Shipper completed successfully. Check the delivery order's tracking reference field. If blank, the API call may have failed silently — check the chatter for error messages.

DeployMonkey Shipping Integration

DeployMonkey instances support all Odoo shipping carrier integrations. Our AI agent can help configure carrier credentials, set up delivery methods, and troubleshoot API connection issues — getting your shipping workflow automated faster.