| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/delivery-carrier |
| GIT | |
| GIT | https://github.com/OCA/delivery-carrier.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/delivery-carrier/tree/18.0/delivery_easypost_oca |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Inventory/Delivery |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Binhex |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Binhex |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Antonio David Ruban |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/delivery-carrier |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:16 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_delivery - sale_stock - sale - sales_team - base - base_setup - web - bus - web_tour - html_editor - account_payment - account - onboarding - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - payment - utm - stock_account - stock - barcodes_gs1_nomenclature - barcodes - delivery |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
easypost==7.15.0 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module integrates [EasyPost](https://easypost.com) shipping API with Odoo, providing access to 100+ carriers through a single, unified interface. **What is EasyPost?** EasyPost is a shipping API aggregator that eliminates the need for separate carrier integrations. Instead of implementing individual APIs for USPS, UPS, FedEx, DHL, and others, you connect once to EasyPost and gain access to all supported carriers with pre-negotiated rates. **Key Features** - **Automated Rate Calculation**: Get real-time shipping rates from multiple carriers and automatically select the lowest rate - **Label Generation**: Generate and print shipping labels in multiple formats (PDF, ZPL, EPL2) - **Multi-Carrier Support**: Access 100+ carriers including USPS, UPS, FedEx, DHL, Canada Post, and regional carriers - **Shipment Tracking**: Real-time tracking with automatic updates and public tracking links - **Multi-Package Handling**: Support for shipments with multiple packages (individual or batch mode) - **Address Verification**: Automatic address validation to reduce delivery errors - **Multiple Label Formats**: PDF for standard printers, ZPL/EPL2 for thermal label printers - **Test Environment**: Full test mode for development without charges or actual shipments - **Automatic Conversions**: Weight conversion to ounces and currency conversion handled automatically **Benefits of Using EasyPost** - **Single Integration**: One API connection for all carriers - no need to integrate each carrier separately - **Lowest Rate Selection**: Automatically compares rates from all available carriers and selects the cheapest option - **Pre-Negotiated Rates**: Access to discounted carrier rates through EasyPost's volume agreements - **Reduced Complexity**: Unified API response format regardless of carrier - **Scalability**: Easily add new carriers without code changes - **Testing Without Risk**: Complete test environment with mock shipments **Technical Architecture** This module implements a clean, layered architecture: - **Business Logic Layer** (delivery_carrier.py): Handles Odoo-specific logic (orders, pickings, pricing) - **API Wrapper Layer** (easypost_request.py): Centralizes all EasyPost API interactions - **EasyPost Python SDK** (version 7.15.0): Official EasyPost client library - **Comprehensive Test Suite**: 100% mocked tests with no real API calls during testing **Supported Carriers (via EasyPost)** USPS, UPS, FedEx, DHL Express, DHL eCommerce, Canada Post, APC Postal, Asendia, Australia Post, Canpar, Couriers Please, Deutsche Post, Fastway, Globegistics, Interlink Express, LaserShip, LSO, OnTrac, Parcelforce, Purolator, Royal Mail, Sendle, StarTrack, and 80+ additional carriers worldwide. **Use Cases** - **E-Commerce Stores**: Automatically calculate shipping costs at checkout - **Warehouse Operations**: Generate and print shipping labels for outbound orders - **Multi-Carrier Shipping**: Compare rates across carriers to minimize shipping costs - **International Shipping**: Access to international carriers with automatic address verification - **High-Volume Shipping**: Batch processing for multiple packages in single transactions |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
easy_view_delivery_carrier_form_inherit |
easy.view.delivery.carrier.form.inherit | delivery.carrier | xpath | Inherits delivery.view_delivery_carrier_form |
view_stock_package_type_easypost_oca |
stock.package.type.easypost.oca | stock.package.type | xpath | Inherits stock.stock_package_type_form |
easypost_oca_carrier_name
Char
easypost_oca_rate_id
Char
easypost_oca_shipment_id
Char
button_confirm(self)
delivery_type
Selection
ondelete={'easypost_oca': <expr>}
selection_add=[('easypost_oca', 'Easypost OCA')]
easypost_oca_delivery_multiple_packages
Selection
default='shipments'
selection=[('shipments', 'Shipments'), ('batch', 'Batch')]
string='Delivery Multiple Packages'
easypost_oca_label_file_type
Selection
default='PDF'
string='Label Format'
args: [('PDF', 'PDF'), ('ZPL', 'ZPL'), ('EPL2', 'EPL2')]
easypost_oca_production_api_key
Char
groups='base.group_system'
help='Enter your API production key from Easypost account'
args: 'Easypost Production API Key'
easypost_oca_test_api_key
Char
groups='base.group_system'
help='Enter your API test key from Easypost account.'
args: 'Easypost Test API Key'
is_saturday_delivery
Boolean
easypost_oca_cancel_shipment(self, pickings)
easypost_oca_get_tracking_link(self, picking)
easypost_oca_rate_shipment(self, order)
easypost_oca_send_shipping(self, pickings) -> list
type
Selection
ondelete={'easypost_oca': <expr>}
selection_add=[('easypost_oca', 'Easypost OCA')]
No public methods.
easypost_oca_carrier_name
Char
copy=False
tracking=True
easypost_oca_rate_id
Char
copy=False
tracking=False
easypost_oca_shipment_id
Char
copy=False
tracking=False
No public methods.
easypost_oca_carrier
Char
index=True
args: 'Carrier Prefix'
package_carrier_type
Selection
selection_add=[('easypost_oca', 'Easypost OCA')]
No public methods.
easypost_oca_batch_id
Char
tracking=True
easypost_oca_carrier_id
Char
easypost_oca_carrier_name
Char
easypost_oca_carrier_service
Char
easypost_oca_rate_id
Char
easypost_oca_shipment_id
Char
readonly=False
related='sale_id.easypost_oca_shipment_id'
easypost_oca_tracking_url
Char
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/delivery-carrier |
| GIT | |
| GIT | https://github.com/OCA/delivery-carrier.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/delivery-carrier/tree/17.0/delivery_easypost_oca |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Inventory/Delivery |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Binhex |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Binhex |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Antonio David Ruban |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/delivery-carrier |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:08 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock_delivery - sale_stock - sale - sales_team - base - base_setup - web - bus - web_tour - account_payment - account - onboarding - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - payment - utm - stock_account - stock - barcodes_gs1_nomenclature - barcodes - delivery |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
easypost==7.15.0 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module integrates [EasyPost](https://easypost.com) shipping API with Odoo, providing access to 100+ carriers through a single, unified interface. **What is EasyPost?** EasyPost is a shipping API aggregator that eliminates the need for separate carrier integrations. Instead of implementing individual APIs for USPS, UPS, FedEx, DHL, and others, you connect once to EasyPost and gain access to all supported carriers with pre-negotiated rates. **Key Features** - **Automated Rate Calculation**: Get real-time shipping rates from multiple carriers and automatically select the lowest rate - **Label Generation**: Generate and print shipping labels in multiple formats (PDF, ZPL, EPL2) - **Multi-Carrier Support**: Access 100+ carriers including USPS, UPS, FedEx, DHL, Canada Post, and regional carriers - **Shipment Tracking**: Real-time tracking with automatic updates and public tracking links - **Multi-Package Handling**: Support for shipments with multiple packages (individual or batch mode) - **Address Verification**: Automatic address validation to reduce delivery errors - **Multiple Label Formats**: PDF for standard printers, ZPL/EPL2 for thermal label printers - **Test Environment**: Full test mode for development without charges or actual shipments - **Automatic Conversions**: Weight conversion to ounces and currency conversion handled automatically **Benefits of Using EasyPost** - **Single Integration**: One API connection for all carriers - no need to integrate each carrier separately - **Lowest Rate Selection**: Automatically compares rates from all available carriers and selects the cheapest option - **Pre-Negotiated Rates**: Access to discounted carrier rates through EasyPost's volume agreements - **Reduced Complexity**: Unified API response format regardless of carrier - **Scalability**: Easily add new carriers without code changes - **Testing Without Risk**: Complete test environment with mock shipments **Technical Architecture** This module implements a clean, layered architecture: - **Business Logic Layer** (delivery_carrier.py): Handles Odoo-specific logic (orders, pickings, pricing) - **API Wrapper Layer** (easypost_request.py): Centralizes all EasyPost API interactions - **EasyPost Python SDK** (version 7.15.0): Official EasyPost client library - **Comprehensive Test Suite**: 100% mocked tests with no real API calls during testing **Supported Carriers (via EasyPost)** USPS, UPS, FedEx, DHL Express, DHL eCommerce, Canada Post, APC Postal, Asendia, Australia Post, Canpar, Couriers Please, Deutsche Post, Fastway, Globegistics, Interlink Express, LaserShip, LSO, OnTrac, Parcelforce, Purolator, Royal Mail, Sendle, StarTrack, and 80+ additional carriers worldwide. **Use Cases** - **E-Commerce Stores**: Automatically calculate shipping costs at checkout - **Warehouse Operations**: Generate and print shipping labels for outbound orders - **Multi-Carrier Shipping**: Compare rates across carriers to minimize shipping costs - **International Shipping**: Access to international carriers with automatic address verification - **High-Volume Shipping**: Batch processing for multiple packages in single transactions |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
easy_view_delivery_carrier_form_inherit |
easy.view.delivery.carrier.form.inherit | delivery.carrier | xpath | Inherits delivery.view_delivery_carrier_form |
view_stock_package_type_easypost_oca |
stock.package.type.easypost.oca | stock.package.type | xpath | Inherits stock.stock_package_type_form |
easypost_oca_carrier_name
Char
easypost_oca_rate_id
Char
easypost_oca_shipment_id
Char
button_confirm(self)
delivery_type
Selection
ondelete={'easypost_oca': <expr>}
selection_add=[('easypost_oca', 'Easypost OCA')]
easypost_oca_delivery_multiple_packages
Selection
default='shipments'
selection=[('shipments', 'Shipments'), ('batch', 'Batch')]
string='Delivery Multiple Packages'
easypost_oca_label_file_type
Selection
default='PDF'
string='Label Format'
args: [('PDF', 'PDF'), ('ZPL', 'ZPL'), ('EPL2', 'EPL2')]
easypost_oca_production_api_key
Char
groups='base.group_system'
help='Enter your API production key from Easypost account'
args: 'Easypost Production API Key'
easypost_oca_test_api_key
Char
groups='base.group_system'
help='Enter your API test key from Easypost account.'
args: 'Easypost Test API Key'
is_saturday_delivery
Boolean
easypost_oca_cancel_shipment(self, pickings)
easypost_oca_get_tracking_link(self, picking)
easypost_oca_rate_shipment(self, order)
easypost_oca_send_shipping(self, pickings) -> list
type
Selection
ondelete={'easypost_oca': <expr>}
selection_add=[('easypost_oca', 'Easypost OCA')]
No public methods.
easypost_oca_carrier_name
Char
copy=False
tracking=True
easypost_oca_rate_id
Char
copy=False
tracking=False
easypost_oca_shipment_id
Char
copy=False
tracking=False
No public methods.
easypost_oca_carrier
Char
index=True
args: 'Carrier Prefix'
package_carrier_type
Selection
selection_add=[('easypost_oca', 'Easypost OCA')]
No public methods.
easypost_oca_batch_id
Char
tracking=True
easypost_oca_carrier_id
Char
easypost_oca_carrier_name
Char
easypost_oca_carrier_service
Char
easypost_oca_rate_id
Char
easypost_oca_shipment_id
Char
readonly=False
related='sale_id.easypost_oca_shipment_id'
easypost_oca_tracking_url
Char
No public methods.