Why Connect UPS to Odoo?
UPS is one of the most widely used shipping carriers globally. Integrating the UPS API with Odoo automates shipping operations — calculate rates at checkout, generate labels from delivery orders, track packages in real time, and handle returns. This eliminates manual entry on the UPS website and keeps all shipping data inside your Odoo system.
UPS API Services
| API | Purpose | Odoo Use Case |
|---|---|---|
| Rating | Calculate shipping costs | Sales order shipping estimates, checkout |
| Shipping | Generate labels and confirm shipments | Delivery order processing |
| Tracking | Get package status and delivery confirmation | Customer portal, internal tracking |
| Address Validation | Verify addresses before shipping | Contact and order validation |
| Pickup | Schedule package pickup | Warehouse dispatch operations |
Setup Steps
1. UPS Developer Account
- Register at developer.ups.com
- Create an application to get Client ID and Client Secret
- Obtain your UPS Account Number
- UPS now uses OAuth 2.0 (replaced legacy XML API keys)
- Configure sandbox environment for testing
2. Odoo Delivery Carrier Configuration
- Odoo includes native UPS integration (Inventory → Configuration → Shipping Methods)
- Select UPS as the delivery carrier provider
- Enter UPS credentials (Client ID, Client Secret, Account Number)
- Select environment (Test/Production)
- Configure default service types (Ground, 2nd Day Air, Next Day Air)
- Set package types and default dimensions
3. Service Level Mapping
Map UPS services to your business needs:
- UPS Ground — Standard economy shipping (3-5 business days)
- UPS 2nd Day Air — Two-day delivery for urgent orders
- UPS Next Day Air — Overnight delivery for critical shipments
- UPS Worldwide Express — International express shipping
- UPS Standard — International standard shipping
- Configure service availability per destination country
4. Rate Shopping
- Configure multiple UPS services for rate comparison
- Display cheapest and fastest options at checkout
- Apply shipping rules based on order weight, value, or destination
- Handle negotiated rates vs. retail rates
- Calculate dimensional weight for oversized packages
5. Label Generation
- Generate shipping labels when validating delivery orders
- Print labels in ZPL (thermal printer) or PDF format
- Handle multi-package shipments
- Include customs documentation for international shipments
- Generate return labels (pre-printed or electronic)
6. Tracking Integration
- Store UPS tracking number on delivery order
- Poll UPS Tracking API for status updates
- Display tracking information in customer portal
- Send email notifications on delivery milestones
- Handle delivery exceptions and redirects
International Shipping
- Generate commercial invoices for customs
- Include harmonized tariff codes from Odoo product data
- Handle duties and taxes (DAP, DDP configurations)
- Country of origin and declared value from product records
- Electronic Export Information (EEI) for US exports
Common Pitfalls
- Dimensional weight — UPS charges the greater of actual weight or dimensional weight. Configure product dimensions in Odoo for accurate rates.
- Address classification — UPS charges more for residential delivery. Use Address Validation API to classify addresses correctly.
- Negotiated rates — If you have a UPS account with negotiated rates, ensure the API uses your shipper number to get discounted pricing.
- Sandbox testing — Always test in UPS sandbox before going live. Sandbox uses different endpoints and test addresses.
Getting Started
Deploy Odoo on DeployMonkey with the Inventory module. Enable UPS as a delivery carrier, enter your API credentials, and generate your first test label. Odoo's native UPS integration handles most shipping scenarios without custom development.