A build-to-order Odoo module that layers weight/zone/value-based shipping rules, free-shipping thresholds, handling surcharges and per-carrier markups on top of your delivery carriers. ECOSIRE scopes, builds, installs and supports it for you. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $199.00 USD; request a quote for a scoped proposal.
Illustrative previewA build-to-order Odoo module that layers weight/zone/value-based shipping rules,
free-shipping thresholds, handling surcharges and per-carrier markups on top of your delivery carriers.
ECOSIRE scopes, builds, installs and supports it for you.
No DIY setup — a working app, built, installed and supported by ECOSIRE.
Start with a one-time build price. We scope it with you at kickoff.
ECOSIRE builds, configures and installs it on your Odoo.
You go live in about 2–4 weeks, with a post-launch support window.
Odoo merchants control shipping margin one carrier at a time, and it rarely holds up. The stock delivery app gives you delivery.carrier with a "Based on Rules" pricing type, but its rules are flat variable/operator/value rows scoped to one carrier — there is no cross-carrier markup layer, no free-shipping threshold that varies by region, no handling fee that stacks on top of the raw carrier quote, and no way to apply a margin percentage to what a real-time carrier connector (base_delivery_carrier_label, DHL, UPS, FedEx) returns at checkout. Merchants end up editing dozens of carrier records by hand, hard-coding shipping products, or eating negative margin on heavy or remote-zone orders. Native runs out of road exactly where shipping stops being a fixed price and starts being a policy.
This module adds a dedicated rule engine that evaluates on top of your existing carriers instead of replacing them. We introduce a shipping.rate.rule model (models.Model) with fields for weight bands, order value bands, destination zone (linked to res.country / res.country.group / state), carrier scope, and a priority sequence so overlapping rules resolve deterministically. A compute method decorated with @api.depends recalculates the shipping price whenever the cart total, weight, or delivery address changes, and we override the carrier's rate_shipment() / _get_price_available() so the engine feeds Odoo's standard checkout, sale order, and delivery flow — the customer sees one final number, correctly, in both the eCommerce checkout and back-office Sales quotations. Per-carrier markup is applied as either a fixed amount or a margin percentage against the live carrier cost, so real-time rates from a connector still carry your margin.
Free-shipping thresholds are first-class: define "free over X in zone Y for carrier Z", with optional promo windows driven by Odoo ir.cron automated actions, and the engine writes the discount as a proper delivery line so tax and reporting stay clean. Handling fees and surcharges (fuel, oversize, remote-area) are their own rule type that stacks after the base rate. Everything is exposed through backend views (XML list/form with an OWL-driven rule tester where useful), guarded by ir.model.access.csv plus record rules for multi-company setups, and every rate decision is auditable. Because it hooks the standard carrier interface, the same rules are honored by the website checkout, the sale.order back office, and any integration calling in over XML-RPC or JSON-RPC.
This is a build-to-order engagement, not an instant download. We start with a short scoping call to map your carriers, zones, and margin policy, then build the module against your target version — Odoo 17.0, 18.0, or 19.0, Community or Enterprise (we flag any Enterprise-only carrier connector dependencies up front). Typical delivery is 2 to 4 weeks from confirmed scope. You get the installable source, UAT on a staging database, a rollback plan, and a post-go-live support window — and you own the git repository at handover.
Runs the Odoo website store and needs checkout shipping prices that protect margin per zone and per carrier without editing carrier records by hand every time rates change.
Owns shipping P&L and wants an auditable markup and surcharge policy — margin percentage on live carrier rates, remote-area surcharges, and free-shipping thresholds that don't quietly erode profit.
Manages multiple carriers and zones and needs weight-band and dimensional-weight rules that reflect real freight cost, with deterministic rule priority so quotes are predictable.
Maintains the instance and integrations, needs a clean module that overrides the standard carrier interface, respects multi-company record rules, and behaves consistently over XML-RPC/JSON-RPC.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Cross-carrier markup layer | Fixed or margin-% markup on top of any carrier, incl. live rates | Possible but you build and maintain the engine | Usually single-carrier, rarely margin-% on live rates | None — rules are per-carrier only |
| Free-shipping thresholds by zone/carrier | First-class, with promo windows via ir.cron | Buildable to spec, added dev time | Often global threshold only | Free_over is a flat per-carrier flag |
| Handling fees & surcharges | Stackable surcharge rule type (fuel, oversize, remote) | Custom fields and logic you design | Limited or bundled into base rate | Not supported as a separate layer |
| Zone / region matching | Country, country-group and state driven from address | Whatever you model yourself | Varies; often country-level only | Basic destination conditions in rules |
| Fit to your version & edition | Built for your 17/18/19, Community or Enterprise | You control it, at full build cost | Depends on vendor's version coverage | Whatever ships in that edition |
| Support & ownership | Support window + full git repo handover | Yours to own and maintain | Vendor SLA, no source ownership | Community/Enterprise support only |
| Auditability of rate decisions | Logs which rule fired, base cost, markup, surcharge | If you build logging | Typically opaque | No rule-level audit trail |
| Delivery model | Build-to-order, 2-4 weeks from confirmed scope | Longer — full spec, build, test cycle | Instant download, generic fit | Already installed, limited capability |
No. This is a build-to-order engagement. ECOSIRE builds the module against your target Odoo version and your carrier/zone/margin policy, then installs and supports it. There is no instant apps.odoo.com download for this.
Typical delivery is 2 to 4 weeks from confirmed scope. It starts with a short scoping call to map your carriers, zones, thresholds and margin rules; the timeline firms up once that scope is signed off. Larger multi-company or multi-connector setups sit at the upper end.
Odoo 17.0, 18.0 and 19.0, both Community and Enterprise. We build against your exact version. If your rules depend on an Enterprise-only carrier connector, we flag that during scoping so there are no surprises.
Yes. Because the engine overrides the standard carrier interface (`rate_shipment` / `_get_price_available`), it applies your markup or margin percentage on top of the live rate a connector returns, so real-time quotes still carry your margin at checkout.
Yes. It hooks Odoo's standard carrier pricing path, so the same rules are honored in the eCommerce checkout, in `sale.order` quotations in the back office, and by any external system calling in over XML-RPC or JSON-RPC.
You get a post-go-live support window for bug fixes and configuration questions, and you receive the full git repository at handover so you own the code. Version upgrades and feature additions can be scoped as follow-on work.
No. Every rule carries a `sequence` priority, so overlapping conditions resolve deterministically to the highest-priority match. If no rule matches, the carrier's native pricing is used as a fallback rather than failing.

A build-to-order Odoo module that turns your warehouse into a multi-client third-party logistics operation, with per-client inventory segregation, activity-based storage and handling billing, and a customer fulfillment portal. ECOSIRE scopes, builds, installs, and supports it.

Build-to-order Odoo module that syncs orders, stock levels and tracking between Odoo and any external 3PL via API or XLSX/CSV.

A made-to-order Odoo module that governs which products and categories appear on each of your websites, with user- and group-based restrictions layered on top. ECOSIRE builds, installs, and supports it against your exact multi-website setup.

Build-to-order Odoo WMS layer: zoning, wave/cluster picking, directed putaway and velocity slotting. We build, install and support it.
A build-to-order Odoo module that layers weight/zone/value-based shipping rules, free-shipping thresholds, handling surcharges and per-carrier markups on top of your delivery carriers. ECOSIRE scopes, builds, installs and supports it for you.